- UID
 - 37950
 
 注册时间2007-12-1
阅读权限30
最后登录1970-1-1
龙战于野 
  
 
 
 
TA的每日心情  | 难过 2022-2-6 09:25 | 
|---|
 
  签到天数: 6 天 [LV.2]偶尔看看I  
 | 
 
 
发表于 2008-6-9 21:47:59
|
显示全部楼层
 
 
 
脱壳后PEID查壳知道此程序编写语言是BC++,程序能运行但是有自校验,一般有以下两种方法解决: 
 
   1、运行程序并观察,若提示错误,则OD下断MessageBoxA/MessageBoxW,断下后在OD的反汇编窗口慢慢回溯,去找关键点;若程序一闪就退出,则OD下断ExitProcess,断下后依然是回溯去找关键点; 
   2、查看程序编写语言,若是Delphi或BC++的,就直接用DeDe反编,查找主窗口的FormCreate开始地址,然后OD载入F9运行中断后,F8单步走,很容易找到关键点;若是VB编写的,一般是下bp rtcFileLen断点(有可能是VB P-code,这种语言的自校验讨论帖不多,请自行查看http://bbs.pediy.com/showthread.php?t=66220这个帖子);对VC的程序一般是采取第一种方法或者是下bp CreateFileA断点慢慢F8单步,当然也可以分别用OD打开原程序和脱壳后的程序,两个窗口对比,F8单步找不同之处(比较傻,不到万不得已,不推荐^_^)。 
    
   此程序有自校验,我采用第二种方法来解除校验,这样更易懂更快速(当然我一开始是直接OD下断的,依然可行,不过有点麻烦)。 
   直接用DeDe反编,查找主窗口的FormCreate开始地址为00408414,此处下断F9运行中断后,F8单步走到此处 
 
00408470    FF43 1C         inc     dword ptr [ebx+1C] 
00408473    66:C743 10 1400 mov     word ptr [ebx+10], 14 
00408479    E8 22A2FFFF     call    004026A0                        *******************程序自校验*********** 
0040847E    84C0            test    al, al 
00408480    74 28           je      short 004084AA                  *******************改成JMP即可********** 
00408482    68 30000100     push    10030                            
00408487    8D97 A3090000   lea     edx, dword ptr [edi+9A3] 
0040848D    52              push    edx 
0040848E    8D8F 72090000   lea     ecx, dword ptr [edi+972] 
00408494    51              push    ecx 
00408495    8BC6            mov     eax, esi 
00408497    E8 74140900     call    00499910 
0040849C    50              push    eax 
0040849D    E8 96960D00     call    <jmp.&USER32.MessageBoxA>       ***************提示程序被修改************ 
004084A2    6A 0A           push    0A 
 
 
004084AA    E8 B9BBFFFF     call    00404068 
004084AF    85C0            test    eax, eax 
004084B1    75 09           jnz     short 004084BC 
004084B3    E8 CC8F0D00     call    <jmp.&kernel32.IsDebuggerPresent>      **********检测是否被OD等调试******** 
004084B8    85C0            test    eax, eax 
004084BA    74 28           je      short 004084E4                         **********改成JMP即可*********** 
004084BC    68 30000100     push    10030                             
004084C1    8D97 CF090000   lea     edx, dword ptr [edi+9CF] 
004084C7    52              push    edx 
004084C8    8D8F A8090000   lea     ecx, dword ptr [edi+9A8] 
004084CE    51              push    ecx 
004084CF    8BC6            mov     eax, esi 
004084D1    E8 3A140900     call    00499910 
004084D6    50              push    eax 
004084D7    E8 5C960D00     call    <jmp.&USER32.MessageBoxA> 
004084DC    6A 0A           push    0A 
 
修改后保存,自校验就完全解除了,另外此程序注册机制是明码比较,只要找到关键call就可以看到注册码 
分享一组注册码: 
用户名:playboysen 
注册码:WG5WNmdRSVpQOWN6V0Y2M0ciKkRAV1dY 
 
[ 本帖最后由 playboysen 于 2008-7-20 18:18 编辑 ] |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |