学习:脱壳之内存执行寻找OEP

前言:类似排除法,如果一开始知道OEP的地址话,那么成功脱壳的几率应该百分之百,如果不知道,那自己尝试的时候,还是需要检查检查

1、直接加载入OD,打开内存窗口观察,发现是UPX的壳

内存映射, 条目 22
地址=00401000
大小=00008000 (32768.)
属主=CRACKME_ 00400000
区段=UPX0
包含=输出表
类型=Imag 01001002
访问=R
初始访问=RWE

内存映射, 条目 23
地址=00409000
大小=00001000 (4096.)
属主=CRACKME_ 00400000
区段=UPX1
包含=代码
类型=Imag 01001002
访问=R
初始访问=RWE

内存映射, 条目 24
地址=0040A000
大小=00001000 (4096.)
Owner=CRACKME_ 00400000
Section=.rsrc
Contains=data,imports,resources
Type=Imag 01001002
Access=R
Initial access=RWE

2、知道了UPX1是代码段,那么这个程序在运行的时候肯定不会把自己的代码段UPX1进行解密然后再进行写入,那么值得怀疑的区段就只有.rsrc 和 UPX0,那么直接给UPX0下内存断点,原因是UPX1区段解密完会在别的区段进行写入解密完之后的代码,所以当访问的时候,也就是解密的时候的代码,那么直接F9运行,发现成功来到OEP

原文地址:https://www.cnblogs.com/zpchcbd/p/12096433.html