程序压缩后有快2M,也因为是还未过时的国产软件,就不发了,先对该程序进行初步观察,只有一个exe,无dll等,有fne,fnr文件,估计为易语言所写,对主程序用PEID扫描结果为E Language -> WuTao * Sign.By.fly *,确定为易语言所编。
首先直接运行,弹出注册窗口(程序信息没截):
应为一机一码的本地认证模式,OD载入,运行弹出无法注册对话框,在命令行bp MessageBoxA,跟踪发现为:
00414848 E8 ECBF0200 call 00440839 ;判断call
0041484D 83C4 1C add esp, 1C
00414850 85C0 test eax, eax
00414852 0F84 15010000 je 0041496D ; 跳转则机器码获取异常
若将414852处的跳转nop掉,运行窗口为:
为节省时间,我并不打算去跟踪到底是什么原因导致了这个异常,直接运行程序,出正常窗口后,直接用OD进行附加
对“注册”按钮下WM_LBUTTONUP消息断点,来到单击事件的入口处:
00414CE4 55 push ebp
00414CE5 8BEC mov ebp, esp
00414CE7 81EC 14000000 sub esp, 14
00414CED 68 20000000 push 20
00414CF2 E8 2ABB0200 call 00440821
00414CF7 83C4 04 add esp, 4
00414CFA 8945 FC mov dword ptr [ebp-4], eax
00414CFD 8BD8 mov ebx, eax
00414CFF 8BF8 mov edi, eax
00414D01 33C0 xor eax, eax
往下看:
00414D4B 83C4 04 add esp, 4
00414D4E 8945 F8 mov dword ptr [ebp-8], eax
00414D51 68 5D934000 push 0040935D ; ASCII "\sdolinqu.cme" ;将注册码保存到文件sdolinqu.cme中
00414D56 FF75 F8 push dword ptr [ebp-8]
00414D59 B9 02000000 mov ecx, 2
00414D5E E8 A88AFFFF call 0040D80B
再往下:
00414EEF E8 27B90200 call 0044081B ; 创建新的进程(原程序)
00414EF4 83C4 28 add esp, 28
00414EF7 8B5D F0 mov ebx, dword ptr [ebp-10]
00414EFA 85DB test ebx, ebx
00414EFC 74 09 je short 00414F07
00414EFE 53 push ebx
00414EFF E8 11B90200 call 00440815
00414F04 83C4 04 add esp, 4
00414F07 6A 00 push 0
00414F09 E8 EFB80200 call 004407FD ; 结束当前进程
可以看出这是一个重启自验证
OD重新载入程序,Nop掉00414852 0F84 15010000 je 0041496D
对CreateFileA下断来到:
004149BC 68 5D934000 push 0040935D ; ASCII "\sdolinqu.cme"
004149C1 FF75 F8 push dword ptr [ebp-8]
004149C4 B9 02000000 mov ecx, 2
004149C9 E8 3D8EFFFF call 0040D80B
004149CE 83C4 08 add esp, 8
004149D1 8945 F4 mov dword ptr [ebp-C], eax
004149D4 8B5D F8 mov ebx, dword ptr [ebp-8]
00414B79 /75 05 jnz short 00414B80
00414B7B |B8 43364000 mov eax, 00403643
00414B80 \50 push eax
00414B81 68 01000000 push 1
00414B86 BB 50010000 mov ebx, 150
00414B8B E8 8BBC0200 call 0044081B
00414B90 83C4 10 add esp, 10
00414B93 8945 D4 mov dword ptr [ebp-2C], eax ;这里的eax返回的是注册码
00414BA3 83C4 04 add esp, 4
00414BA6 8B45 D4 mov eax, dword ptr [ebp-2C]
00414BA9 50 push eax
00414BAA FF75 EC push dword ptr [ebp-14]
00414BAD E8 728FFFFF call 0040DB24 ;真假注册码进行比较
因为这里正确的注册码并不是根据正确的机器码得到的,所以要得到真正的注册码可以做一个内存注册机,暴破则可将00414BE7 /0F84 45000000 je 00414C32 nop掉,我机器的注册码是:BD3741188B76997D54B19864ED4EDB37
分析完毕,谢谢!希望可以可以给一个邀请码!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课