Windows PE变形练手1-用PE自己的机器码修改自己的逻辑
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嵌入模板
PE嵌入模板 编写一段代码,生成一个已经处理过重定位信息,同时所有的内容都在代码段里,并且没有导入表的PE程序,把这个程序嵌入到其他PE的相关位置,能够独立的运行,接下来是整理了2个模板,一个是Hel ...
- Windows PE变形练手3-把通用模板机器码直接覆盖目标PE
把通用模板机器码直覆盖目标PE 这个地方真是尝试了好久,遇到很多坑点,Win PE那本书上的东西有点不够,也就直接写书上的例子会发现很多地方不是说的那样,里面提供的信息太少了,就比如里面并没有提被注入 ...
- Windows API初练手 -- 疯狂写文件代码
警告:恶作剧软件,慎用!仅供初学者研究代码所用!!! 提示:默认文件创建目录在"D:\test",如果需要使用的话请自行更改目录. 1. Windows API 版本 (调用系统函 ...
- Windows PE 第十二章 PE变形技术
PE变形技术 这章东西太多,太细了.这里我只记录了一些重点概念.为后面学习做铺垫. PE变形:改变PE结构之后,PE加载器依然可以成功加载运行我们的程序. 一 变形常用技术: 结构重叠技术.空间调整技 ...
- Python—经典练手题目汇总
Python-经典练手题目汇总 # 1.有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两# 个,问几天以后能卖完? day=0 xg=1020 for i in rang ...
- web前端学习部落22群分享给需要前端练手项目
前端学习还是很有趣的,可以较快的上手然后自己开发一些好玩的项目来练手,网上也可以一抓一大把关于前端开发的小项目,可是还是有新手在学习的时候不知道可以做什么,以及怎么做,因此,就整理了一些前端项目教程, ...
- C语言练手游戏-控制台输出一个会移动的坦克
把C语言的知识融合起来做一个练手的小游戏项目,将自己掌握到的数据结构.数组.函数.宏定义等知识综合利用,增加对语法的熟练程度. 操作系统: windows 10 x64 编译IDE : VS2015 ...
- 小甲鱼PE详解之资源(PE详解11)
原文出自:www.fishc.com 最近一直在安排第一届鱼C 学习班的事情,忙活了好一阵子,真是对不住大家,还大家久等了,这里要跟大家说声不好意思 ^_^ 今天我们来谈谈资源部分,资源部分可以说是 ...
- 亲测:三个值得练手的Java实战项目
测试奇谭,BUG不见. 大家好,我是谭叔. 一提到编码,很多小伙伴便感到头疼,特别是半路转行的小伙伴或者没有系统学习过计算机基础的小伙伴. 对于想学而不知道怎么学的小伙伴,我可以分享下我的策略: 刷一 ...
随机推荐
- CVE-2018-2628-WLS Core Components 反序列化
漏洞参考 https://blog.csdn.net/csacs/article/details/87122472 漏洞概述:在 WebLogic 里,攻击者利用其他rmi绕过weblogic黑名单限 ...
- Java 树结构的基础部分(一)
二叉树 1.1 为什么需要树这种数据结构 1) 数组存储方式的分析 优点:通过下标方式访问元素,速度快.对于有序数组,还可使用二分查找提高检索速度. 缺点:如果要检索具体某个值,或者插入值(按一定顺序 ...
- Java 集合框架体系总览
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...
- JVM之调优及常见场景分析
JVM调优 GC调优是最后要做的工作,GC调优的目的可以总结为下面两点: 减少对象晋升到老年代的数量 减少FullGC的执行时间 通过监控排查问题及验证优化结果,可以分为: 命令监控:jps.jinf ...
- crackme001
最近在学习C语言的语法,今天因为早上起来得太早,导致一整天状态都不是很好,索性就没有继续,就拿了个最简单的crackme练练手 首先跑一下程序,看下报错 PE查壳,发现是一个啥子delphi的东西,没 ...
- maven 打包和构建的Linux命令(mvn)
maven 打包构建相关命令 命令 mvn clean package 依次执行clean.resources.compile.testResources.testCompile.test.jar(打 ...
- 第20 章 : GPU 管理和 Device Plugin 工作机制
GPU 管理和 Device Plugin 工作机制 本文将主要分享以下几个方面的内容: 需求来源 GPU 的容器化 Kubernetes 的 GPU 管理 工作原理 课后思考与实践 需求来源 201 ...
- 学习笔记-vue+quill简单的后台demo
功能比较单一 https://github.com/opceclee/vue-quill
- 201871030119-马桂婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客 2018卓越工程师班 这个作业要求链接 实验三 软件工程结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握Github协作开发程序的操作方法 ...
- 数栈SQL优化案例:隐式转换
MySQL是当下最流行的关系型数据库之一,互联网高速发展的今天,MySQL数据库在电商.金融等诸多行业的生产系统中被广泛使用. 在实际的开发运维过程中,想必大家也常常会碰到慢SQL的困扰.一条性能不好 ...