脱壳 !EP(EXE PACK)1.2

0x1 查壳

将程序拖入!Exeinfo PE显示如下。
在这里插入图片描述
程序拖入OD
在这里插入图片描述
看到第一行有pushad指令,利用ESP定律,执行一步F8。ESP定律是典型的堆栈平衡,因为只要保存了所有寄存器的值都是要开始解密操作,等到解密完成后一般都会将所有初始化的寄存器值进行还原,即popad。所以我们只要在esp堆栈压入的最后一个数据那里设置硬件断点(因为堆栈式先进后出原则,esp现在指向的是压栈的最后的数据,还原时肯定会先从这块数据还原),当执行popad还原寄存器时的位置,一般这个指令位置都是解密后的数据。
所以我们右键选择数据窗口跟随
在这里插入图片描述
在esp指向的内存处设置硬件访问断点
在这里插入图片描述
让程序继续执行,发现断到popad下一条指令位置,可以清楚的看到mov edx,0x004271b0这条指令。这很明显是进入了用户进程的代码段了,按常理说就应该是个教大距离跳转,这往往就是程序从加密壳区段跳转到解密后的代码段的过程,跳转到用户进程的OEP。
在这里插入图片描述
继续向下执行,执行jmp edx指令,基本断定该处为OEP。
在这里插入图片描述
确定了OEP为0x4271b0后,接下来该进行内存Dump
在这里插入图片描述
接下来检查要Dump的内存OEP是否和目前OEP值相等,相等就点击脱壳按钮
在这里插入图片描述
Dump完成后接下来修复导入表
在这里插入图片描述
选择当前正在运行的程序
在这里插入图片描述
修改解密后的OEP
在这里插入图片描述
点击自动查询IAT表,也就是导入地址表。
在这里插入图片描述
接下来获取导入函数
在这里插入图片描述
转储导入函数表
在这里插入图片描述
在这里插入图片描述
转储之后会新生成一个脱壳文件,运行转储后的脱壳文件。脱壳成功。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章