工作比较忙,利用业余时间写出来的脱壳脚本。脚本包括了修复该程序所需的所有功能,比如修复无效指令、修复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 探索篇!
上传的附件: