|
【详细过程】
一、脱壳
007****2001 > 60 pushad //OD载入后停在这里
007****2002 E8 030****0000 call 00***00A //单步到这里查看esp的值
007****2007 - E9 EB045D45 jmp 45D424F7
00***00C 55 push ebp
00***00D C3 retn
esp=0012FFA4,命令行下hr 0012FFA4,F9运行!
00***23B0 /75 08 jnz short 00***23BA
00***23B2 |B8 010****0000 mov eax, 1
00***23B7 |C2 0C00 retn 0C
00***23BA \\68 313****4000 push 004****3831
00***23BF C3 retn //返回到OEP
004****3831 55 push ebp //在这里dump程序
004****3832 8BEC mov ebp, esp
004****3834 6A FF push -1
004****3836 68 F06***00 push 00***62F0
00***83B 68 A44C4000 push 00***04CA4
二、添加附加数据
运行dump后的程序,提示\"Invalid data Of File\",这是由于缺少附加数据导致的
用lordpe查看原始程序的区段,发现最后一个区段的Roffest=001b4c00,size=0,两个相加=001B4C00
用winhex打开原始程序,复制从001B4C00开始到最后的数据
粘添到dump后程序的末尾
保存~!现在脱壳后的程序可以正常运行了!
三、爆破
这是一个易语言写的程序,破解易语言写的程序有一定的特点。
我用脚本来达到易语言的核心代码,将下面的内容保存为txt文件就可以了,OD脚本大家都会用吧
==============================================
VAR Num
mov Num,10
gpa \"GetProcessHeap\",\"kernel32.dll\"
cmp $RESULT,0
jz err
bp $RESULT
runit:
run
cmp [eax],\"WTNE / MADE BY E COMPILER - WUTAO \"
jz ok
dec Num
cmp Num,0
jz err
jmp runit
ok:
bc $RESULT
rtu
find eip,#FFE0#
cmp $RESULT,0
jz err
bp $RESULT
run
bc $RESULT
sto
msg \"胜利到达易语言的程序核心代码开始处,现在可以利用OD字符插件搜索有没有关键字符了\"
ret
err:
msg \"出错拉,有可能不是易语言写的!\"
ret
=================================================
00***66B11 FC cld //我们来到这里
00***66B12 DBE3 finit //可以用OD插件查找相关字符了
00***66B14 E8 F0FCFFFF call 007****6809
00***66B19 68 806****7600 push 007****6880
00***66B1E B8 030****0000 mov eax, 3
00***66B23 E8 400****0000 call 00***66B68
007****4221 55 push ebp
007****4222 8BEC mov ebp, esp
007****4224 81EC 0C00***00 sub esp, 0C
00***22A E8 09D8FFFF call 00***51A38 //算法call请跟进这里
00***22F 8945 F8 mov dword ptr [ebp-8], eax
007****4232 837D F8 00 cmp dword ptr [ebp-8], 0
007****4236 0F85 7C00***00 jnz 00***42B8 //把jnz改成jmp就完成爆破了
00***23C 68 040****0080 push 800****0004
007****4241 6A 00 push 0
007****4243 68 478D4E00 push 004E8D47 ; 失败!
007****4248 68 010****0080 push 800****0301
00***24D 6A 00 push 0
00***24F 68 400****0000 push 40
007****4254 68 040****0080 push 800****0004
007****4259 6A 00 push 0
00***25B 68 4D8D4E00 push 004E8D4D ; 对不起,您使用的是未注册版本,不能使用下一步功能!\\n\\n下一步功能可以过滤大部分垃圾注,请注册本软件!
007****4260 68 030****0000 push 3
007****4265 BB 000****0000 mov ebx, 300
00***26A E8 112****0100 call 00***66B80
00***26F 83C4 28 add esp, 28
--------------------------------------------------------------------------------
【经验总结】
00***22A E8 09D8FFFF call 00***51A38 //算法call请跟进这里
由于水平问题就不跟进去了^_^
007****4236 0F85 7C00***00 jnz 00***42B8 //把jnz改成jmp就完成爆破了
不敢说是原创的,只能供大家参考,希望版主加点分。。。。。。呵呵 |
|