第一章

PE和内存之间的映射

节偏移

文件偏移地址(File Offset Address):数据在PE文件中的地址

装载地址(Image Base):PE装入内存的基地址

虚拟内存地址(Virtual Address,VA):PE文件中的指令被装入内存后的地址

相对虚拟地址(Relative Virtual Address,RVA):相对虚拟地址是虚拟内存地址相对于映射基址(装载地址)的偏移量

关系:

VA = Image Base + RVA

节偏移=文件虚拟地址偏移量-文件物理地址偏移量

文件偏移地址=虚拟内存地址-装载基址-节偏移

例:虚拟内存地址为0x4010D4,文件虚拟地址偏移量为1000h,文件物理地址偏移量为200h

文件偏移地址=0x4010D4-0x400000(1000h-200h)=0x2D4  (注意十六进程的换算)

分析和破解win32控制台程序

环境如下

系统:windows7 x64虚拟机

软件:IDA Pro、UltraEdit

编译器:vc++6.0

注意:尽量不用vs或其他IDE,否则反编译时出现的伪代码不同,有些IDE编译会加入IDE的一些代码提高软件安全性等(笔者使用了vs2017,反编译出来没有main函数)

代码:

#include <stdio.h>
#include <string.h>
#define PASSWORD "123456" int verfity(char *password) {
int i;
i = strcmp(password, PASSWORD);
return i; } int main() { char password[];
int i;
printf("please input pwd:\n");
while () {
scanf("%s",password); i = verfity(password);
if (i){
printf("fail!please input pwd:\n");
}
else{
printf("success\n");
break; }
}
return ; }

载入IDA,这里选择第一个(进行PE分析)

进入main函数,按F12查看函数的流程图

经过分析后我们发现破解的关键点在于怎么跳过验证(两个字符串对比)

我们可以从字符串对比的判断JZ(为零则跳)作为切入点

按空格键进入汇编代码,找到JZ的虚拟地址004010D4

根据前面虚拟内存计算的例子,可以得出文件偏移地址是0x2D4

打开UltraEdit,进入0x2D4的位置,把74(机器指令JZ)修改为75(机器指令JNZ)

保存程序,破解完成!

关于机器指令和汇编指令可以参考: https://blog.csdn.net/ida0918/article/details/52655615

0day2安全——笔记1的更多相关文章

  1. 0day2安全——笔记4(修改临界变量)

    第二章 修改临界变量 #include <stdio.h> #include <string.h> #define PASSWORD "1234567" i ...

  2. 0day2安全——笔记3

    第二章 函数调用约定 不同的操作系统,语言和编译器调用函数的原理差不多,但是具体的调用约定有差异. C语言VC++编译的函数传参顺序如下图所示(默认使用__stdcall调用约定) 函数调用步骤(__ ...

  3. 0day2安全——笔记2

    第二章 内存的不同用途 windows应用—>编译连接—>PE文件—>进程 进程使用的内存 1.代码区:储存着被装入执行的二进制机器代码,处理器会到这个区域取指和执行 2.数据区:用 ...

  4. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  7. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  8. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  9. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

随机推荐

  1. 怎么将CAD转JPG?教你两种CAD转JPG方法

    在CAD中,对于CAD图纸格式的转换那是比较常见的了,因为CAD图纸的格式是dwg格式的,在使用的时候不是那么的方便,就需要将CAD图纸转换为偏于查看的格式.那怎么将CAD转JPG呢?具体要怎么来进行 ...

  2. Axure制作dialog效果的动作步骤

    1.在Axure中添加一个弹框按钮  2.将动态面版拖动到界面中    3.双击动态面版,双击state  4.拖入一块图片占位符进来    5.设置图片  6.回到上一个界面设置动态面版的大小,使其 ...

  3. SSM + VUE 实现简单的 CRUD

    一.项目分析 1.需求 (1)使用 ssm + vue 实现一个crud(数据库增删改查)的简单实现.(2)前后端分离,前端页面展示+后台管理. 2.技术点 (1)基础框架: SSM(Spring,S ...

  4. FCC---CSS Flexbox: Use the flex-direction Property to Make a Row

    Adding display: flex to an element turns it into a flex container. This makes it possible to align a ...

  5. XSS劫持cookie登录

    <script>alert (document.cookie)</script>  获取cookie 实验环境用的DVWA 先用系统账号登录,admin    password ...

  6. Kali Linux install "Veil-Evasion"

    Xx_Step wget https://github.com/ChrisTruncer/Veil/archive/master.zip unzip master.zip cd Veil-Evasio ...

  7. 将Android封装库通过gradle部署到maven私服并依赖使用

    一.在需要发布的模块chrisbaselibrary下的build.gradle中添加以下部分 //maven插件 apply plugin: 'maven' //打包main目录下代码和资源的 ta ...

  8. win10,7 80端口被占用的检测和解决方法

    这是一篇关于检测windows7和windows10系统“80端口”被哪个程序占用和怎么解决的小教程.此处用windows10作为范例 1.得到占用该端口的PID ①打开运行(快捷键win+R)(也可 ...

  9. MySQL数据库:数据完整性及约束的应用

    数据完整性 1.域完整性:---------匹配完整性:非空.缺省 字段/列 2.实体完整性:-------匹配完整性:主键.唯一键 记录/行 3.引用完整性:-------匹配完整性:外键 表与表之 ...

  10. robotframework框架 - 在Pycharm当中编写RobotFramework测试用例

    众所周知,pycharm是个写python极好用的编辑器.也可以装很多的插件来完成各种骚操作. 某一天,心血来潮在pycharm的插件库里,搜索了一下robot,恩,发现有支持robotframewo ...