【脱壳-寻找OEP】壳常用的函数寻找OEP

48 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

本次演示使用的壳是UPX加壳程序。工具是正常OD。

LoadLibrary 加载dll GetProcAddress 获取函数的地址 ExitThread 调用后就会释放系统分配的堆栈

我们这次用GetProcAddres来测试,载入我们的测试文件然后Cttrl+G输入GetProcAddress获取函数的地址下断点,但是下的是条件断点,只针对函数加载进行记录而不是进行下断。 在这里插入图片描述 设置esp的记录为记录值,因为esp的栈顶数据读入的第一条肯定是他。 在这里插入图片描述 点击OD的L查看日志窗口就可以发现我们拦截下来的数据了。 在这里插入图片描述 但是这里的数据有几千行不知道哪一行是我们要定位的数据,我们在他的代码段设置访问断点然后一直按住F9往下运行一直到他被断下来为止。 在这里插入图片描述 之后一直F9停下来的就会出现代码段,这就是我们的OEP了,但是这个方法不太好用不建议使用。

我们可以通过OD的中断到线程结束函数来操作,因为这个函数执行完后就是线程结束。这次我们用的是特殊OD 在这里插入图片描述 之后运行断下来线程结束后给他的代码段设置一个内存访问断点,出来后就是OEP地址了。