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
(仅为个人学习记录,如有错误,欢迎指正)

posted @ 2022-11-29 17:59  一个半  阅读(169)  评论(1)    收藏  举报