写一个PE的壳
文章平均质量分 97
记录一个给PE文件写壳的过程
磨刀砍柴Debug
当前本博客分享破解、算法、调试相关知识。
展开
-
写一个PE的壳_Part 6:简单的混淆
文章目录1.清理step 1:移除不必要信息step 2:重命名.packed2.简单的混淆step 1:改变packer(python)step 2:改变unpacker(C)3.结果4.其他可能5.参考处理完Part 4,Part 5会轻松很多;Part 6主要是对Part4 中的最终结果中加入简单的混淆1.清理step 1:移除不必要信息当前现状我们已经使用 -nostartfiles 和 -nostdlib编译选项,在最终的二进制文件中移除了C的标准库和运行时库;但是结果PE中可能原创 2022-05-27 22:30:00 · 516 阅读 · 0 评论 -
写一个PE的壳_Part 5:PE格式修复+lief源码修改
文章目录1.CFF查看2.python再次加载3.异常2的Raw问题step 1:运行程序step 2:调试器运行程序step 3:单步调试step 4:CFF查看二进制step 5:查看LIEF源码step 6:解决办法step 7:结果验证step 8:源码修改建议4.参考用原教程中Part 4的py文件处理test.exe,生成名为packed_bug1.exe程序;运行时直接报错下面给出了整个修复的思路1.CFF查看CFF看一下packed_bug1.exe,直观上会发现2处异常,导致PE原创 2022-05-27 21:00:00 · 620 阅读 · 0 评论 -
写一个PE的壳_Part 4:修复对ASLR支持+lief构建新PE
文章目录1.解决思路step 1:当前现状step 2:解决思路step 3:内存布局2.修改unpack部分Image BasePE Header and Section3.修改python的打包程序step 1:构建unpack部分step 2:ASLR特殊处理4.构建结果处理Part 3中遗留了一个隐患,MinGW无法生成重定位表,因此无法产生可移动的二进制文件;Part 4中要处理MinGW生成的可执行文件(不能移动的,即不支持ASLR的二进制文件)的打包问题1.解决思路step 1:当前原创 2022-05-27 20:15:00 · 472 阅读 · 0 评论 -
写一个PE的壳_Part 3:Section里实现PE装载器
文章目录Part 3:Setion里实现PE装载器1.unpack部分step 1:通用想法step 2:修改代码step 3:编译选项2.用python打包step 1:lief安装和使用step 2:避免告警step 3:命令行参数step 4:准备文件step 5:给PE文件添加一个section3.结果展示4.遗留问题5.参考Part 3:Setion里实现PE装载器Part 3主要做了什么?Part 1和Part 2中我们写了一个简易的PE装载器(loader.exe),可以加载一个3原创 2022-05-26 22:15:00 · 645 阅读 · 0 评论 -
写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)
文章目录Part 2:输入表和重定位表1.ASLR预备知识2.输入表支持detail 1:什么是输入表?detail 2:PE Header描述detail 3:真实的输入表detail 4:编程处理数据结构编程实现扩展:LIEF中重建Import Table介绍3.管理重定位表detail 1:什么是重定位表?detail 2:重定位表结构detail 3:编程处理4.结果展示5.参考Part 2:输入表和重定位表本文主要处理Part 1中遗留的2张表:输入表和重定位表(执行一个ASLR使能的文件不原创 2022-05-26 20:30:00 · 3376 阅读 · 0 评论 -
写一个PE的壳_Part 1:加载PE文件到内存
前面都是PE的零散的知识,可以通过给PE文件写一个壳将前面的PE相关知识进行汇总网上看到了一个英文教程(详细看参考),里面包含了给PE加壳和调用LIEF库的操作(这个库很简单);按照教程实现一遍(错误都进行了修正,主要是Part4),对理解PE文件格式和脱壳很有帮助下面是结合自己的实践写的笔记,不是教程的原版翻译教程主要实现的壳的整体功能:1.A PE File will be copied as-is (at first) in a custom section.2.The unpacke.原创 2022-05-25 02:10:04 · 1132 阅读 · 0 评论