能力值:
( LV2,RANK:10 )
|
-
-
2 楼
堆栈在右下角阿
|
能力值:
( LV13,RANK:970 )
|
-
-
3 楼
d esp
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢楼上两位,我回去再试试。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我试了一下,还是不明白,我用的例子来自于“软件指南”第六期
这里的DFBOX指的是我查找注册码的一个文件,在这里,我假设用户名是ROC,注册码(假)为12345678
00490DB1 55 push ebp
00490DB2 68 1D014900 push Dfbox.00490E1D
00490DB7 64:FF30 push dword ptr fs:[eax]
00490DBA 64:8920 mov dword ptr fs:[eax],esp
00490DBD BB 01000000 mov ebx,1
00490DC2 8B45 FC mov eax,dword ptr ss:[ebp-4]
00490DC5 EB B63EF7FF call Dfbox.00404c80
00490DCA 8BC8 mov ecx,eax
00490DCC 85C9 test ecx,ecx
00490DCE 7E 1C jle short Dfbox.00490DEC
00490DD0 BE 01000000 mov esi,1
00490DD5 8B45 FC mov eax,dword ptr ss:[ebp-4]
00490DD8 0FB67C30 FF movzx edi,byte ptr ds:[eax+esi-1]
//这是我用OLLYDBY设下的输入用户名时的内存断点,这里应该是用户名。
00490DDD 8BC3 mov eax,ebx
00490DDF 99 cdq
00490DE0 33C2 xor eax,edx
00490DE2 2BC2 sub eax,edx
00490DE4 F7EF imul edi
00490DE6 8BD8 mov ebx,eax
00490DE8 46 inc esi
00490DE9 49 dec ecx
00490DEA 75 E9 jnz short Dfbox.00490DD5
00490DEC 8BC3 mov eax,ebx
00490DEE 99 cdq
00490DEF 33C2 xor eax,edx
00490DF1 2BC2 sub eax,edx
00490DF3 83C0 64 add eax,64
00490DF6 99 cdq
00490DF7 33C2 xor eax,edx
00490DF9 2BC2 sub eax,edx
00490DFB 8BD8 mov ebx,eax
00490DFD 8B55 F8 mov edi,dword ptr ss:[ebp-8]
00490E00 8BC3 mov eax,ebx
00490E02 E8 AD86F7FF call Dfbox.004094B4
00490E07 33C0 xor eax,eax
00490E09 5A pop edx
00490E0A 59 pop ecx
00490E0B 59 pop ecx
00490E0C 64:8910 mov dword ptr fs:[eax],edx
00490E0F 68 240E4900 push Dfbox.00490E24
00490E14 8D45 FC lea eax,dword ptr ss:[ebp-4]
00490E17 E8 AC3BF7FF call Dfbox.004049C8
00490E1C C3 retn
00490E24 5F pop edi
00490E25 5E pop esi
00490E26 5B pop ebx
00490E27 59 pop ecx
00490E28 59 pop ecx
00490E29 5D pop ebp
00490E2A C3 retn
00490D37 8B45 F4 mov eax,dword ptr ss:[ebp-c]
00490D3A 8B55 F8 mov edx,dword ptr ss:[ebp-8]
00490D3D E8 8240F7FF call Dfbox.00404DC4
//这里就是关键之处
00490D42 75 04 jnz short Dfbox.00490D48
00490D44 B3 01 mov b1,1
00490D46 EB 02 jmp short Dbfox.00490D4A
00490D48 33DB xor ebx,ebx
00490D4A 8B55 FC mov edx,dword ptr ss:[ebp-4]
00490D4D B8 900D4900 mov eax,Dfbox.00490D90;ASCII "ttdown"
00490D52 E8 6542F7FF call Dfbox.00404FBC
00490D57 85C0 test eax,eax
00490D59 74 02 je short Dfbox.00490D5D
00490D5B 33DB xor ebx,ebx
00490D5D 33C0 xor eax,eax
00490D5F 5A pop edx
00490D60 59 pop ecx
00490D61 59 pop ecx
00490D62 64:8910 mov dword ptr fs:[eax],edx
00490D65 68 7F0D4900 push Dfbox.00490D7F
00490D6A 8D45 F4 lea eax,dword ptr ss:[ebp-c]
00490D6D BA 03000000 mov edx,3
00490D72 E8 753CF7FF call Dfbox.004049EC
00490D77 C3 retn
00490D7F 8BC3 mov eax,ebx
00490D81 5B pop ebx
00490D82 8BE5 mov esp,ebp
00490D84 5D pop ebp
00490D85 c3 retn
004E999A E8 5D73FAFF call Dfbox.00490CFC
//这里就是验证注册码的地方(为什么?)
004E999F 84C0 test al,al
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
这要自己看 自己理解啊 这个call的调用是关键 在右下脚的窗口就能看见注册码和自己输入的假码!;)
|