首页
社区
课程
招聘
[原创]深圳腾讯[第一阶段 第四题]脱壳脚本
发表于: 2010-11-14 21:03 6196

[原创]深圳腾讯[第一阶段 第四题]脱壳脚本

2010-11-14 21:03
6196
工作比较忙,利用业余时间写出来的脱壳脚本。脚本包括了修复该程序所需的所有功能,比如修复无效指令、修复section表等等 功能。不过这个脚本要运行比较久
使用了单链表~~
附近是修复脚本,这两个脚本可以整成一个  到达OEP的脚本如下:

bpcnd 0065350E, "ECX==0" // 4
run
bpcnd 00656D9D, "ECX==0" // 5
run

bp 00656DF4
mov        eax, 0B7
run

bp 00656E3D                    // F1              int1
mov eip, 00656E5C        //

bpcnd 00655D2E, "ECX==0" // 第二个程序1
run

//pause

bpcnd 00653A6B, "ECX==0" // 第二个程序3
run

//pause

bpcnd 00655F31, "ECX==0" // 第二个程序4
run

bp 00655F92                // 一步到位
esto
bc 00655F92

//pause
//00655B2A    0958 20         or      dword ptr [eax+20], ebx          ; 这里抹掉了映像长度
fill 00655B2A, 3, 90

bpcnd 006567FA, "ECX==0" // 第二个程序8
run

//pause                //4001E0
fill 0065598B, 16, 90
fill 006559B4, D, 90
fill 006559C7, 9, 90

bp 00655A05                    // 下断 shift + F9
esto
bc 00655A05

bpcnd 00656277, "ECX==0" // 第二个程序11
run

bpcnd 0065463A, "ECX==0" // 第二个程序12
run

bpcnd 0065775C, "ECX==0" // 第二个程序13  下一条就是F1  int1了
run

bp 00657765                    // F1              int1                                     ; 这里EIP重定向+2B = 657791
mov eip, 657791
bc 00657765   

//006548B5    8813              mov     byte ptr [ebx], dl                         ; DllName 清零 NOP
fill 006548B5, 2, 90

//00653F38    8327 00           and     dword ptr [edi], 0                         ; Clear HashCode NOP it
fill 00653F38, 3, 90

//0065413E    FE4F FF            dec     byte ptr [edi-1]
//00654141    83C7 04            add     edi, 4
//00654144    2BC7               sub     eax, edi
//00654146    8947 FC            mov     dword ptr [edi-4], eax
fill 0065413E, B, 90

//0065418A    8907               mov     dword ptr [edi], eax                        ;  这里填充API地址
//            8902                  mov     dword ptr [edx], eax                ; Modify
//006549B7
//fill 0065418A, 2, 90
fill 0065418B, 1, 02

//00654A83    8366 10 00         and     dword ptr [esi+10], 0
//00654A87   /74 01              je      short 00654A8A
//这里需要再NOP3个字节
fill 00654A83, 7, 90

//00654C59    F3:A4              rep     movs byte ptr es:[edi], byte ptr [esi]                ; copy to 4001E0  NOP it
fill 00654C59, 2, 90

//006549B7    0FBA67 FF 07    bt      dword ptr [edi-1], 7             ; 这里做是否Hook的判断 可以改为clc  F8
fill 006549B7, 1, F8
fill 006549B8, 4, 90

//pause

bp 00654CB5
run

mov        eip, 0041DD00
mov ecx, 0041DD00
mov [ecx], #558BEC6AFF6868DB5B0068182D420064A100000000506489250000000083C4A45356578965E8FF1521816500A3A4A75E00A1A4A75E00C1E80825FF000000A3B0A75E008B0DA4A75E0081E1FF000000#

//0040013C    00040000    DD 00000400          ;  SizeOfHeaders = 400 (1024.)
mov [40013C], #E0010000#
mov [400168], #00E01E00#
mov [40016C], #04010000#
mov [5EE0FC], #00000000#
mov [5EE100], #00000000#

ret

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 1115
活跃值: (122)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
可以参考这个
http://bbs.pediy.com/showthread.php?t=124054
2010-11-14 21:12
0
雪    币: 220
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
ProcessCodeFinal.txt 已经包括了所有的修复流程 觉得写成脚本比较酷
2010-11-15 23:20
0
游客
登录 | 注册 方可回帖
返回
//