有一个delphi写的程序,没加壳,想找到注册码的计算入口
注册码的计算是我输入每一位假码之后立即被调用的,错误的话,注册按钮始终是灰色的。
然后就想找到取窗口字符串的子程序,但是用getwindowtext和getdlgitem两类api都不能断下来。
然后用dede找到注册码输入窗口的edit2change事件的地址,dede对此的反汇编如下:
004BDFA8 33D2 xor edx, edx
* Reference to control TFormAccept.Button2 : TButton
|
004BDFAA 8B80F4020000 mov eax, [eax+$02F4]
004BDFB0 8B08 mov ecx, [eax]
* Reference to method TButton.SetEnabled(Boolean)
|
004BDFB2 FF5164 call dword ptr [ecx+$64]
004BDFB5 C3 ret
那么这个004BDFA8里面就应该包括了注册码的计算过程的call了
我用OD跟踪004BDFA8,出现这么几句
004BDFA8 . 33D2 xor edx, edx
004BDFAA . 8B80 F4020000 mov eax, dword ptr [eax+2F4] ; (initial cpu selection)
004BDFB0 . 8B08 mov ecx, dword ptr [eax]
004BDFB2 . FF51 64 call dword ptr [ecx+64]
004BDFB5 . C3 retn
这里唯一有可能的是那个call,跟进去看到:
0044FB30 . 3A50 58 cmp dl, byte ptr [eax+58]
0044FB33 74 11 je short 0044FB46
0044FB35 . 8850 58 mov byte ptr [eax+58], dl
0044FB38 . 6A 00 push 0 ; /Arg1 = 00000000
0044FB3A . 33C9 xor ecx, ecx ; |
0044FB3C . BA 0CB00000 mov edx, 0B00C ; |
0044FB41 . E8 8E120000 call 00450DD4 ; \FamKper.00450DD4
0044FB46 > C3 retn
这里有个call,按说我应该被引入这个call,但是在第二句就被跳转到末尾了,那就找不到注册码的计算入口了,那接下去该怎么找到入口呢?
[课程]FART 脱壳王!加量不加价!FART作者讲授!