Windows PE变形练手1-用PE自己的机器码修改自己的逻辑
来源:互联网 发布:mac 网盘 知乎 编辑:程序博客网 时间:2024/05/16 12:37
PE变形练手1-用PE自己的机器码修改自己的逻辑
就是找一个PE文件,用自己的部分代码部分覆盖或者而修改自己另一个代码部分的补丁姿势(现实中使用很少,极少数破解可以用到。这次例子目的是了解PE)。
第一个实验,写个例子。然后把函数1和函数2调换一下。
代码如上,很简单。先输出111,在输出222.根据:
可知,相关FOA main 0x440 main1 0x400 main2 420
两个函数如上,最后C3是return,仔细观察,是下面参数不同:
OK,好办,直接替换这两个参数就行了呗:
然而发现,并不性。还是先输出111,有输出222。当时我还傻愣半天,还找同事问问。怎么这么简单,改个东西。我却失败了。额...结果我输了一块雪糕。原因是这两个函数根本没有被调用到。比如这样。我上来就C3,发现程序继续运行。
原因是因为直接被优化掉了,编译器编译的时候直接把这两个函数的字节码弄到了调用的地方,看反汇编就知道了:
相关编译选项是这两个:
我们可以把 内联函数扩展禁用:
这样就调用函数了,这个时候再去改函数就有反应了。这里不上图了,我本地测试发现可以。
下面我试了下编译选项,总结了一些组合产生的结果(VS2015 C++)
(1)优化:完全 内联函数扩展:开
(1)优化:禁用 内联函数扩展:开
(2)优化:禁用 内链函数扩展:关
(3)优化:完全 内链函数扩展:关
例子2,模拟一个最简单的破解:
要想在错误密码或者不输入密码的时候走yes函数,姿势有很多:
(1)OD直接加载起来,在判断密码正误的地方改下逻辑,可以直接改判断部分或者if不满足后执行的函数地址(如果是实际情况,推荐这个)。
(2)直接上来把PE入口函数指向yes,这样可以直接跑yes函数了。但是这样的缺点不会执行其他别的逻辑代码了,而且执行完,应该不会退出。我记得是退出不了。或者再在后面自己追加退出代码。
(3)覆盖部分主函数里面的代码,让他进入主函数后直接就跳转到yes函数了。(这个思路也行)。
(4).....还有很多姿势。下面就简单实现下上面三个姿势。虽然没什么用,练着玩,为接下来的复杂PE变形做铺垫。
实现姿势1:OD加载走走逻辑破解:
OK这就行了,比较简单,不细说了。
实现姿势2:改PE入口的地址,直接让他跑yes函数:
看下入口:
之前是什么都不管,反正RVA1000对应FOA400
OK yes函数在这里,41000处,直接把13F2 改成1000就行了:
这样双击就直接破解了:
和预想一样,点击确定后卡在这个黑色界面上了:
实现姿势3:直接代码覆盖(这个不通用,之后在解释):
直接把400-420的函数yes 代码覆盖到420-440的no里,如果no里代码比较多,可以直接C3返回,但是上面也有很多坑,之后会的例子里会解释。
- Windows PE变形练手1-用PE自己的机器码修改自己的逻辑
- Windows PE变形练手2-开发一套自己的PE嵌入模板
- Windows PE变形练手3-把通用模板机器码直接覆盖目标PE
- 打造自己的PE工具盘
- 自己做了个实用的PE
- 制作自己的特色PE----Mr.Zhang
- DIY 手动制作自己的win pe
- vc编写自己的壳之一:对pe文件OEP的修改
- vc编写自己的壳之一:对pe文件OEP的修改
- 自己制作Windows PE工具盘
- 自己制作Windows PE工具盘
- 自己常用imagex命令备忘录(对于DISM无法修改的早期PE,如vistape,用此命令)
- Windows PE的作用
- Windows PE 第十二章 PE变形技术
- 自己练手的
- 自己写的一个PE文件FileVersionInfo类,可以轻松获取PE文件版本信息
- C++PE文件格式解析类(轻松制作自己的PE文件解析器)
- 我自己的PE文件RVA-VA-Offset心得
- jdbc——简单的查询操作
- java中高级面试题
- 姿态解算基础知识(二)-旋转矢量坐标变换的四元数描述的验证
- Lowest Common Ancestor(CodeChef TALCA)
- 最好大学网python爬虫代码
- Windows PE变形练手1-用PE自己的机器码修改自己的逻辑
- 我回来了,为了梦想
- React+react-router4+webpack2基础环境搭建
- 扔玻璃球问题
- 姿态解算知识(三)-陀螺仪加速度计6轴数据融合
- XML和HTML
- Echarts 后台传入数据
- Poj 3061 Subsequence (尺取
- Spring+SpringMVC+Mybatis+SSM整合教程(手写)