EXE Pack ——脱壳

0x00

查看程序信息:
在这里插入图片描述
程序运行状态:
在这里插入图片描述

0X01调试器调试

在这里插入图片描述
一路F7,可以来到壳程序解密数据的代码,通过反汇编窗口可以实时的跟踪被修改的数据情况:
在这里插入图片描述
之后F7 进行单步调试,可以看到很多API函数的调用,在这里需要注意的是,CreateProcessA函数的调用,会新建一个与现有进程名字一样的新进程:
在这里插入图片描述
这个进程其实是一个守护进程的作用,在创建进程之后,就会退出当前进程,所以我们要做的操作就是绕过壳代码的创建进程这一操作,直接在上边的JE指令进行改跳转操作,或者直接将je指令修改为JMP指令:
在这里插入图片描述
在这一步跳过之后,继续单步调试:
之后会跳转到sysenter指令处,同时可以发现此处有SEH异常处理程序:
在这里插入图片描述
在这里插入图片描述
下一步。跳转到异常处理函数下断点,然后F9直接运行起来,程序断在异常处理函数上:
在这里插入图片描述
之后继续单步调试,就可以发现经典的ESP定律标志:pushad,到这里直接ESP定律就可以直接到OEP:
在这里插入图片描述
到达OEP
在这里插入图片描述
后边就可以直接脱壳Dump了

最后还需要注意的一点就是,在这里Dump之后,用工具进行修复转储文件的时候,如果用IRC进行修复的时候,修复之后运行程序,会发生错误,程序报错,在偏移00000000的地方错误,后来跟进去看了一下,是因为在执行完一个函数之后,在返回的时候,EIP的值被设为00000000,这个时候触发了异常,但是怎么解决,暂时还没想到好的方法。建议换一个修复工具(我使用的是Scylla_x86),换了修复工具重新进行修复之后,程序可以运行(也不太清楚什么原因,遇到这种情况的话,就换一种工具尝试一下吧)

0X02

总结:在这个程序的脱壳过程中,需要注意两点
1:守护进程的绕过
2:对异常函数的处理
3:对于sysenter指令的理解(该指令是从用户态到内核态的快速调用),在这个程序里边使用,作用应该是触发一个异常,然后让SEH异常处理链去处理
4:在修复转出的文件的时候,多试一下别的程序,多一种尝试,生活更美好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值