kongking 发表于 2008-6-7 19:44:26

这个不是自效验吗?

cxliang 发表于 2008-6-8 01:02:29

究竟怎么处理?我也遇到这个问题。。

iamok 发表于 2008-6-8 09:46:46

自校检,先去查下资料学习。。

playboysen 发表于 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
00408473    66:C743 10 1400 mov   word ptr , 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
0040848D    52            push    edx
0040848E    8D8F 72090000   lea   ecx, dword ptr
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
004084C7    52            push    edx
004084C8    8D8F A8090000   lea   ecx, dword ptr
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 编辑 ]

yybns 发表于 2008-6-9 22:35:48

原帖由 playboysen 于 2008-6-9 21:47 发表 https://www.chinapyg.com/images/common/back.gif
脱壳后知道是BC++的程序,然后发现程序能运行但是有自校验,一般有两种方法解决:

   1、程序并观察,若提示错误,则OD下断MessageBoxA/MessageBoxW,断下后回溯找到关键点;程序一闪就退出,则OD下断ExitProcess, ...

学习了,谢谢。

凡人1234 发表于 2008-6-13 17:20:58

原帖由 playboysen 于 2008-6-9 21:47 发表 https://www.chinapyg.com/images/common/back.gif
脱壳后知道是BC++的程序,然后发现程序能运行但是有自校验,一般有两种方法解决:

   1、程序并观察,若提示错误,则OD下断MessageBoxA/MessageBoxW,断下后回溯找到关键点;程序一闪就退出,则OD下断ExitProcess, ...


强,让我们这些菜鸟受益匪浅啊!!!

playboysen 发表于 2008-6-13 21:27:04

大家都是兄弟,一家亲嘛,互相学习互相提高哦~~~:handshake 加油!!

心跳的惊喜 发表于 2008-6-18 11:02:28

学习了,解释的真不错

lzover 发表于 2008-6-18 13:11:11

原帖由 playboysen 于 2008-6-9 21:47 发表 https://www.chinapyg.com/images/common/back.gif
脱壳后知道是BC++的程序,然后发现程序能运行但是有自校验,一般有两种方法解决:

   1、程序并观察,若提示错误,则OD下断MessageBoxA/MessageBoxW,断下后回溯找到关键点;程序一闪就退出,则OD下断ExitProcess, ...

很强大~~谢谢~~/:good

allcrz 发表于 2008-6-19 21:00:00

playboysen能够这么热心的回答,而且回答这么详细,是初学者的良师益友,谢谢!!!
页: 1 [2] 3 4
查看完整版本: 这个对话框怎么去除?