能力值:
(RANK:350 )
|
-
-
5 楼
有什么问题?
弹出对话框说"File corrupted......"就是我说的那个对话框
|
能力值:
(RANK:350 )
|
-
-
7 楼
跟一下不就知道了吗?
我只想找到弹出第二个MessageBoxA的地址
|
能力值:
( LV9,RANK:180 )
|
-
-
8 楼
在有壳的状态下, 你改了什么?
还是你只想拿这个做实验?
做实验的话你最好将你改那里讲出来.
你光得知 call messageboxa 这里是没用的.
|
能力值:
(RANK:350 )
|
-
-
9 楼
如果你不能找出调用第二个MessageBox调用的地方,不必再做此种无意义的回复了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
自己解决吧,我见不管你这种人,求别人帮忙,口气还这么生硬!真是的,做任何事情之前,先学会做人吧!
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
use32进程下,
77D505CA E8 2D000000 call MessageBoxExA
|
能力值:
(RANK:350 )
|
-
-
14 楼
先谢谢楼上的兄弟,但我想找的是程序领空内的(即test2.exe内的)
|
能力值:
( LV9,RANK:180 )
|
-
-
16 楼
底下位址不同的话...自己想办法吧. (Win2000 SP4)
MessageBoxA 里面的 ret 10h 是直接ret到 00b55da8 亦即 jmp [KERNEL32!ExitProcess]
(显示出讯息后直接结束程式)
00b55f90 ff254843b900 jmp [USER32!MessageBoxA]
00b55f96 8bc0 mov eax,eax
00b55f98 ff254443b900 jmp [USER32!OpenClipboard]
==== 省略 ====
00b55da8 ff25f442b900 jmp [KERNEL32!ExitProcess]
00b55dae 8bc0 mov eax,eax
00b55db0 ff25f042b900 jmp [KERNEL32!FileTimeToDosDateTime]
==== 省略 ====
这时你会问, 那里调用 00b55f90 呢?
(这篇文章所有的调用都不会笨到让你由 [ESP] 得知的)
00b651c0 55 push ebp
00b651c1 8bec mov ebp,esp
00b651c3 51 push ecx
00b651c4 8b450c mov eax,[ebp+0c]
00b651c7 e80020ffff call 00b571cc
00b651cc 85c0 test eax,eax
00b651ce 750d jnz 00b651dd
00b651d0 6aff push ff
00b651d2 bba95db500 mov ebx,00b55da9
00b651d7 4b dec ebx
00b651d8 53 push ebx
00b651d9 c3 ret
00b651da eb01 jmp 00b651dd
00b651dc e8 db E8 ;简单的花指令
00b651dd 83c464 add esp,64
00b651e0 e8730dffff call USER32!GetActiveWindow
00b651e5 8945fc mov [ebp-04],eax
00b651e8 b88f5fb500 mov eax,00b55f8f /EAX=00b55f8f+1=00b55f90
00b651ed 40 inc eax \自己看上面吧
00b651ee 6aff push ff
00b651f0 bba95db500 mov ebx,00b55da9 /EBX=00b55da9-1=00b55da8
00b651f5 4b dec ebx \自己看上面吧
00b651f6 6830200000 push 00002030
00b651fb ff7508 push dword ptr [ebp+08] //'Test1.exe'
00b651fe ff750c push dword ptr [ebp+0c] //'File corrupted ...'
00b65201 ff75fc push dword ptr [ebp-04]
00b65204 53 push ebx //jmp [KERNEL32!ExitProcess]
00b65205 50 push eax //jmp [USER32!MessageBoxA]
00b65206 c3 ret
EAX= 00b55f8f + 1 = 00b55f90 = jmp [USER32!MessageBoxA] 的位址
EBX= 00b55da9 - 1 = 00b55da8 = jmp [KERNEL32!ExitProcess]的位址
反正后二行 你可以想成是 jmp MessageBoxA ,然后直接 ExitProcess
这时你又会问, 那里调用 00b651c0 呢? 这里:
00b7e8c0 55 push ebp
00b7e8c1 8bec mov ebp,esp
00b7e8c3 83c4f4 add esp,-0c
00b7e8c6 53 push ebx
00b7e8c7 8b4230 mov eax,[edx+30]
00b7e8ca 83e820 sub eax,20
00b7e8cd 83e804 sub eax,04
00b7e8d0 8945f4 mov [ebp-0c],eax
00b7e8d3 33c0 xor eax,eax
00b7e8d5 8b4df4 mov ecx,[ebp-0c]
00b7e8d8 83c120 add ecx,20
00b7e8db 8bd8 mov ebx,eax
00b7e8dd c1e302 shl ebx,02
00b7e8e0 2bcb sub ecx,ebx
00b7e8e2 83e904 sub ecx,04
00b7e8e5 8b5c8220 mov ebx,[eax*4+edx+20]
00b7e8e9 8919 mov [ecx],ebx
00b7e8eb 40 inc eax
00b7e8ec 83f808 cmp eax,08
00b7e8ef 75e4 jnz 00b7e8d5
00b7e8f1 8b45f4 mov eax,[ebp-0c]
00b7e8f4 83c020 add eax,20
00b7e8f7 8b4a44 mov ecx,[edx+44]
00b7e8fa 8908 mov [eax],ecx ;这里设什么,底下的ret就
00b7e8fc 8b4248 mov eax,[edx+48] ;到那里.
00b7e8ff 8945f8 mov [ebp-08],eax
00b7e902 8b829d000000 mov eax,[edx+0000009d]
00b7e908 8945fc mov [ebp-04],eax
00b7e90b 31c0 xor eax,eax
00b7e90d 8b55fc mov edx,[ebp-04]
00b7e910 648910 mov fs:[eax],edx
00b7e913 ff75f8 push dword ptr [ebp-08]
00b7e916 9d popfd
00b7e917 8b65f4 mov esp,[ebp-0c]
00b7e91a 61 popad
00b7e91b c3 ret
这个函数并不是只给特定一种状况用的, 而是常常都会调用到,
mov [eax],ecx 是在设底下的 ret 所要返回的位址
你就将这函数当成 jmp 的 PCode 吧
若你又想问, 那里在调用这个函数的, 那就叫无自知之明
因为可以闻到是 PCode 的方式了. 我再给你看上十层也没用.
壳是你包的, 资料是你改的, 你想干什么不说出来,
我想你一定是想知道这壳在那里做校验. 以运用到别支被包壳的程式.
之前跟你说过你要找那里在调用 MessageBoxA 没用.
你还真天真的以为所有的东西都能这么找 ?
一般人就算是平常的破解'脱壳, 就算改Code也是自己改的, 自己知道改了那里.
问你在有壳的状态下你修改那里, 由这资讯来做切入点比较有用
你老大不说就是不说, 不说是你的事, 你牛嘛.
现在给你了. 牛人你自己玩吧.
不过..即然上面这么简单的东西你都没法子自己反追的话, 我劝你别玩了.
小孩玩大车不是好事
牛老大你这7天白玩了?
|
能力值:
(RANK:350 )
|
-
-
17 楼
呵呵,我也追了好多层,但没找到我想要的!
在此对这位兄弟表示歉意,我误会你了
|