
脱壳入门
入门脱壳教程
JAVA百练成神
用技术改变世界
展开
-
【脱壳修复】脱壳修复IAT
如果脱壳后没有秀发IAT那也只能在你的电脑上运行,无法在别人电脑上运行,因为IAT是为了提升软件的兼容性,软件启动后每次运行都会获取当前电脑的API函数地址,脱壳后就会损坏IAT也就无法获取机器的API函数地址。可以通过od 右键 查看所有模块调用 来查询目前程序所调用的API函数地址。原创 2022-10-22 20:58:05 · 409 阅读 · 0 评论 -
【脱壳-寻找OEP】壳常用的函数寻找OEP
我们这次用GetProcAddres来测试,载入我们的测试文件然后Cttrl+G输入GetProcAddress获取函数的地址下断点,但是下的是条件断点,只针对函数加载进行记录而不是进行下断。但是这里的数据有几千行不知道哪一行是我们要定位的数据,我们在他的代码段设置访问断点然后一直按住F9往下运行一直到他被断下来为止。这次我们用的是特殊OD。之后一直F9停下来的就会出现代码段,这就是我们的OEP了,但是这个方法不太好用不建议使用。设置esp的记录为记录值,因为esp的栈顶数据读入的第一条肯定是他。原创 2022-10-20 22:54:59 · 406 阅读 · 0 评论 -
【脱壳-寻找OEP】通过堆栈平衡法找到OEP(ESP定律)
本次教程用的还是用UPX的加密,直接载入这个文件可以看到一个pushad,每个pushad都有他对应的popad,他的作用就是把右边的寄存器内容压入栈中,popad就是把压入栈中的内容进行还原。我们到堆栈里给他设置一个硬件访问断点,因为他是从第一个开始弹出所以要在第一个地址里设置断点,所以等到他pop出来还原的时候也就是解码完成了,就可以顺着找到oep。对比后发现他把内容都给压入到栈中了,到popad那一步的时候他又会把压入的内容还原到堆栈中去。跳过去就是我们的OEP了。原创 2022-10-19 23:15:16 · 570 阅读 · 0 评论 -
【脱壳-寻找OEP】通过内存定位OEP实现脱壳
注意:不需要去断加壳程序原本的代码断,因为他本身的代码断是做解密 还原 写入的,没必要在他本身做断点。这次用的也是UPX的壳,载入特殊od后可以看到upx的壳是在我们原始oep的代码外面,UPX0里面才包含我们的原始入口点,UPX1是不包含的,UPX1这块就对 解密 还原 写入这三个步骤进行操作,然后写入到UPX0这个输入表中,也就是我们真实的OEP入口代码地址。设置完后F9运行,可以发现他断在了我们的入口点处,代码已经解密完成了,加壳程序已经还原了他的代码,这也是还原后执行的第一行代码段被我们断了下来。原创 2022-10-19 21:42:49 · 626 阅读 · 0 评论 -
【脱壳】通过SFX功能定位OEP脱壳
通过将加壳文件导入调试器后通过调试器的配置设置,使用他的SFX自动载入到程序的入口点也就是OEP的位置。重新载入一次软件后他会寻找oep,找到oep入口点后会自动暂停软件。程序入口点必须包含在代码段,如果入口点没有在代码段是无法识别的。可以看到停到了0040100处因为这就是我们的入口点。配置完成后记得忽略异常否则会一直卡着断点。本次使用UPX加壳来进行学习。原创 2022-10-19 21:19:28 · 473 阅读 · 0 评论