首页
社区
课程
招聘
[旧帖] [求助]UPX脱壳去自校验。。求高手教我怎么去掉广告。。 0.00雪花
发表于: 2012-3-16 11:54 1810

[旧帖] [求助]UPX脱壳去自校验。。求高手教我怎么去掉广告。。 0.00雪花

2012-3-16 11:54
1810
上次脱壳自校验没弄清楚,这次模仿差不多类的软件,脱好壳了,贴出来给大虾们看看对不对。随便求哪位大虾教我怎么把自带广告去掉。。字符串完全搜索不到。。

首先OD载入程序。
00524980 > $  60            pushad                                                           /程序入口。直接单步步入
00525522   .- E9 27DCF4FF   jmp 进进窗口.0047314E
00524981   .  BE 00504A00   mov esi,进进窗口.004A5000                                        /发现ESP有变动,数据窗口跟随,第一个地址下断,F9运行
00524986   .  8DBE 00C0F5FF lea edi,dword ptr ds:[esi+0xFFF5C000]
0052498C   .  57            push edi
0052498D   .  89E5          mov ebp,esp

00525515   .  8D4424 80     lea eax,dword ptr ss:[esp-0x80]                                  /运行到这儿,把断点去掉,然后一直F7单步步入
00525519   >  6A 00         push 0x0
0052551B   .  39C4          cmp esp,eax
0052551D   .^ 75 FA         jnz X进进窗口.00525519
0052551F   .  83EC 80       sub esp,-0x80                                                    /前面有跳转,选中这里,右键,断点,运行到选定位置,继续单步步入
00525522   .- E9 27DCF4FF   jmp 进进窗口.0047314E
00525527      00            db 00
00525528      00            db 00

0047314E    55              push ebp                              /呵呵,直接奔到OEP了,在这里脱壳,右键用ollydump脱壳调试进程,获取EIP为OEP,脱壳保存为123.exe
0047314F    8BEC            mov ebp,esp
00473151    6A FF           push -0x1
00473153    68 083D4E00     push 进进窗口.004E3D08
00473158    68 445A4700     push 进进窗口.00475A44
0047315D    64:A1 00000000  mov eax,dword ptr fs:[0]
00473163    50              push eax
00473164    64:8925 0000000>mov dword ptr fs:[0],esp

脱完壳发现运行不了,提示外挂程序被破坏,请到官方下载,肯定有自校验。。
继续OD载入脱壳后文件。

F9运行,到提示的时候别确定,按F12暂停。。
7C92E4F4 >\$  C3            retn                                     /暂停后就到这儿,然后按alt+K到堆栈窗口
7C92E4F5   .  8DA424 000000>lea esp,dword ptr ss:[esp]
7C92E4FC   .  8D6424 00     lea esp,dword ptr ss:[esp]
7C92E500 >/$  8D5424 08     lea edx,dword ptr ss:[esp+0x8]
7C92E504  |.  CD 2E         int 0x2E

调用堆栈:     主线程, 条目 14
 地址=0012FB68
 堆栈=004201D6
 函数过程 / 参数=? USER32.MessageBoxA
 调用来自=123.004201D0
 结构=0012FB64

  0012FB68  004201D6  ? USER32.MessageBoxA    123.004201D0    0012FB64                   /右键显示调用,来到反汇编窗口

004201D0    FF15 68654900   call dword ptr ds:[<&USER32.MessageBoxA>>; USER32.MessageBoxA              /往上找,找到段首。。
004201D6    5F              pop edi
004201D7    83F8 03         cmp eax,0x3
004201DA    5E              pop esi
004201DB    75 0F           jnz X123.004201EC

00420130    83EC 64         sub esp,0x64                                                  /在这下断点。重新开始程序,F9运行到断点处                             
00420133    56              push esi
00420134    8B7424 74       mov esi,dword ptr ss:[esp+0x74]
00420138    57              push edi
00420139    8B7E 08         mov edi,dword ptr ds:[esi+0x8]
0042013C    57              push edi

注意右下角窗口
0012FBE8   0043A161  返回到 123.0043A161
0012FBEC   0012FBF8
0012FBF0   00000003
0012FBF4   0012FC0C
0012FBF8   00000000
0012FBFC   00000000
0012FC00   00000000
0012FC04   00419324  返回到 123.00419324 来自 123.0041D99C                /在这儿回车,转到反汇编窗口。

00419309    68 04000080     push 0x80000004
0041930E    6A 00           push 0x0
00419310    68 53AC4D00     push 123.004DAC53
00419315    68 03000000     push 0x3
0041931A    BB 30014200     mov ebx,123.00420130
0041931F    E8 78460000     call 123.0041D99C                         
00419324    83C4 28         add esp,0x28                              /反汇编转到的是这儿,往上翻。。。
00419327    6A 00           push 0x0

004192D4    837D E8 00      cmp dword ptr ss:[ebp-0x18],0x0
004192D8    0F84 0C000000   je 123.004192EA                             /把它改成NOP,保存程序后就可以运行了。
004192DE    C745 F8 0100000>mov dword ptr ss:[ebp-0x8],0x1
004192E5    E9 47000000     jmp 123.00419331
004192EA    C745 F8 0000000>mov dword ptr ss:[ebp-0x8],0x0
004192F1    68 04000080     push 0x80000004

最后这几步说实话我都没弄清楚,糊里糊涂就脱壳成功了。。
求高手们教我怎么去广告啊。。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学的不错啊,我还没找到门呢
2012-3-16 12:10
0
雪    币: 1579
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是啊,兄弟水平不错了啊
2012-3-16 12:49
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
新手后面去自校验没怎么看懂
去自校验只会:原程序和脱壳后程序分别在OD从OEP单步跟随
看看跳转原程序和脱壳后那些跳转的不同
看到堆栈哪里找到弹出的消息框往上到段首下断,单步下去应该也能找到判断程序是否被改动的JE跳转吧
004192D8    0F84 0C000000   je 123.004192EA                             /把它改成NOP,保存程序后就可以运行了。
。。。。。。。。
。。。。。。。。
004201D0    FF15 68654900   call dword ptr ds:[<&USER32.MessageBoxA>>; USER32.MessageBoxA
不过好像隔着有些远
实在没看懂你后面的操作
新手来学习了
2012-3-16 13:03
0
雪    币: 269
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我去试试你这个方法,我现在这个方法也是参照别人的教程弄的。后面那几步我也懵懵懂懂的。。
2012-3-16 18:34
0
游客
登录 | 注册 方可回帖
返回
//