用友益文书软件制作的电子书。
Delphi程序,用DeDe反编译无果,注册窗口类名为TPanel,DeDe反不出。
用h-point断点万能中断在系统进程,返回程序到CallWinProcA函数(取得输入字符)。
一直返回直到:
004C49EE call 电脑维修.00431DC8
004C49F3 mov eax,dword ptr ss:[ebp-22C] --->输入码
004C49F9 mov ecx,4
004C49FE mov edx,1
004C4A03 call 电脑维修.0040406C
004C4A08 mov eax,dword ptr ss:[ebp-228]
004C4A0E mov edx,电脑维修.004C4CFC ; ASCII "0000"
004C4A13 call 电脑维修.00403F74
004C4A18 jnz short 电脑维修.004C4A53
004C4A1A lea ecx,dword ptr ss:[ebp-230]
004C4A20 mov edx,dword ptr ss:[ebp-4]
004C4A23 mov eax,ebx
004C4A25 call 电脑维修.004A7520
004C4A2A mov edx,dword ptr ss:[ebp-230]
004C4A30 lea eax,dword ptr ss:[ebp-4]
004C4A33 call 电脑维修.00403C7C
004C4A38 lea eax,dword ptr ss:[ebp-C]
004C4A3B push eax
004C4A3C mov eax,dword ptr ss:[ebp-C]
004C4A3F call 电脑维修.00403E64
004C4A44 mov ecx,eax
004C4A46 mov edx,6
004C4A4B mov eax,dword ptr ss:[ebp-C]
004C4A4E call 电脑维修.0040406C
004C4A53 mov eax,dword ptr ss:[ebp-C] --->输入码
004C4A56 mov edx,dword ptr ss:[ebp-4] --->正确码,0221,?"R
004C4A59 call 电脑维修.00403F74
004C4A5E jnz 电脑维修.004C4B76
以下还有防调试代码:
004C4B9E call 电脑维修.004B3B14 --->程序到此处停止响应。
跟入:
004B3B14 push ebx
004B3B15 push esi
004B3B16 push edi
004B3B17 add esp,-10
004B3B1A mov edi,ecx
004B3B1C mov esi,edx
004B3B1E mov ebx,eax
004B3B20 call 电脑维修.0040A464 --->跟入发现获取时间
004B3B25 fstp qword ptr ss:[esp]
004B3B28 wait
004B3B29 push dword ptr ss:[esp+4] ; /Arg3
004B3B2D push dword ptr ss:[esp+4] ; |Arg2
004B3B31 lea eax,dword ptr ss:[esp+16] ; |
004B3B35 push eax ; |Arg1
004B3B36 lea ecx,dword ptr ss:[esp+18] ; |
004B3B3A lea edx,dword ptr ss:[esp+16] ; |
004B3B3E lea eax,dword ptr ss:[esp+14] ; |
004B3B42 call 电脑维修.0040A0D8 ; \电脑维修.0040A0D8
004B3B47 mov ax,word ptr ss:[esp+C]
004B3B4C sub ax,word ptr ds:[ebx+4FFCE]
004B3B53 test ax,ax
004B3B56 jnb short 电脑维修.004B3B5C
004B3B58 add ax,3C
004B3B5C movzx eax,ax
004B3B5F cmp esi,eax
004B3B61 jge short 电脑维修.004B3B85 --->比较是否超时。改为JMP即可。
反调试是通过比较输入注册码后程序运行时间是否超过规定来实现的。
Delphi程序如果不能用DeDe反编译真是很难下断,还好这次用万能断点断下来了。谁有更好的方法推荐一下吗?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课