UPX脱壳
单步执行:
-
起始位有pushad往下找popad,遇到跳转向下可以实现,向上不让实现,遇到连在一起的跳转选择最后一个跳转的下一行继续单步执行。
-
遇到jmp底下有call也需要在下一行断点单步遇到popad下面的jmp,观察跳转跨度是否过大。因为一般说很大跨度的跳转就会直接跳转到oep(程序入口)
-
在程序入口处的pushad入栈的值和这里的popad相对应,说明程序已经到达跳转的oep附近,观察popad下一行的jmp可以发现是一个非常大跨度的跳转,即跳转到oep
-
到达入口可以使用插件ollydump来进行脱壳,或者使用loadpe
方法2:ESP定律法
根据pushad入栈的值来设置硬件断点并执行
dd XXXXXhr XXXXX命令都可设置断点后执行基本就会在oep附近
方法3:2次内存镜像法
方法4:一步直达法{适用于部分upx壳和aspack壳
直接右键查找popad
(仅为个人学习记录,如有错误,欢迎指正)
本文作者:一个半
本文链接:https://www.cnblogs.com/hopein/p/16936116.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步