逆向基础知识

逆向,基础知识 · 浏览次数 : 13

小编点评

**逆向基础知识** **1. 逆向分析代码** * 代码首先包含 #include 和 #include 指令,这是 C 编译器的预处理指令,用于包含其他源文件的内容。 * 然后是 `main` 函数的定义,它接受两个参数:`aggc` 和 `argv`。 * `main` 函数首先调用 `MessageBox` 函数显示消息,然后返回 0。 **2. 查找 `main` 函数调用 `main` 函数的入口点** * 代码使用 `int aggc, TCHAR *argv[]` 声明数组 `argv`,其中 `argv[0]` 保存函数名称, `argv[1]` 保存参数。 * 然后使用 `main(int aggc, TCHAR *argv[])` 的语法来定义 `main` 函数。 * 代码使用 `return` 语句返回 0,表示成功。 **3. 了解代码的行为** * 代码首先使用 `MessageBox` 显示消息,然后返回 0。这表明代码在运行时会显示一个消息。 * 然后使用 `_` 显示一个光标的位置,可以查看代码或内存。 **4. 使用跳转命令访问目标地址** * 代码使用不同的跳转命令访问目标地址: * `Ctrl+G` 跳转到地址 003C1000 设置断点。 * `F2` 设置和取消断点。 * 点击断点界面显示已设置的断点。 * 双击某个断点即可跳转到断点位置。 **5. 使用注释注释代码** * 代码使用 `:` 和 `;` 注释代码块,可以帮助编译器和运行器识别代码结构。 **6. 使用右键搜索代码** * 代码可以使用右键->搜索/字符串 (shift+D) 命令查找模块内所有字符串内容 API 接口。 * 可以使用右键->搜索/字符串 (shift+D) 命令查找调用 `MessageBox` 函数的 API 接口。

正文

逆向基础知识

1.逆向分析Hello World程序

源码

#include <Windows.h>
#include <stdio.h>

int main(int aggc, TCHAR *argv[])
{
    MessageBox(NULL,
        L"Hello World!",
        L"www.baidu.com",
        MB_OK);
    return 0;
}

2.查找main函数

调用main(int aggc, TCHAR *argv[])函数

main(int aggc, TCHAR *argv[])函数汇编

使用运行函数跳转到EntryPoint(系统调用的进入窗口),点击步进,逐步运行,知道弹窗,就可以查找到main函数

加入断点

(步进)进入可以发现传入了四个参数

快捷键使用

指令 快捷键 含义
跳转 Ctrl+G 移动到指定地址,用来查看看代码或内存,运行时不可用
运行 F9 运行(若设置断点,则执行至断点处)
转到上一个 "_" 显示上一个光标的位置
步进 F7 进入函数内部
步过 F8 跳过函数不进入
修改 space 修改汇编代码
断电 F2 设置/取消
运行到返回 Ctrl+F9 执行到ret处
注释 ; 添加注释

3.访问目标地址的4种方法

  • 使用跳转命令(Ctrl+G)
    • 比如跳转到地址003C1000

  • 设置断点(F2)
    • 使用F2设置和取消断点,点击断点界面显示已设置的断点,双击某个断点即可跳转到断点位置

  • 注释(:)
    • 按键盘的";"键可以在指定在地址处添加注释,点击注释窗口可以查找到


  • 标签
    • 按键盘“:”键可以找到已经设置的所有标签


image

image

3.快速查找指定代码的常用方法

代码执行法

有明确特征并且代码量不是很大的情况下推荐使用,例如我们需要查找的是main()函数中调用MessageBox()函数的戴拿

例如 执行到地址003911DF时弹出消息框,那么003911DF这个地址的CALL就是我们定位的一个标记进入内部查看,发现调用MessageBox函数,那么这个CALL就是main()函数

image
image

字符串检索法

假设我们知道一些显示特征,比如调用MessageBox函数,显示Hello World,我们可以使用右键->搜索/字符串(shift+D)查找到模块内所有字符串内容

image

API检索法(1)搜索跨模块调用API

前面的hello world.exe程序执行的时候,弹出消息框,我们可以推测可能调用了WIN32 API函数MessageBox

右键->搜索/当前模块/跨模块调用,双击即可切换到调用地址处
image
image
image
image

API检索法(2)在AP处设置断点

使用跳转指令(Ctrl+G)输入MessageBox然后设置断点之后返回调用

image

双击返回调用

image

调用代码,可以确定是我们查找的函数位置

image

4.使用打补丁方式修改Hello World字符串

修改字符串的两种方法

  1. 直接修改字符串缓冲区
  2. 在其他内存区域生成新字符串并传递给消息函数
1.直接修改字符串缓冲区

image
image
image
image

修改的内容不能超过原有内容,否则会损坏字符串后面的数据

image

保存更改到执行文件

选择补丁->修补文件

image

2.在其他内存区域生成新字符串并传递给消息函数

找一块未使用的NULL填充区,写入内容,然后把地址传递给消息函数
image
image

与逆向基础知识相似的内容:

逆向基础知识

逆向基础知识 1.逆向分析Hello World程序 源码 #include #include int main(int aggc, TCHAR *argv[]) { MessageBox(NULL, L"Hello World!", L"www.baid

【Android 逆向】【攻防世界】基础android

1. 下载并安装apk,提示要输入密码 2. apk拖入到jadx中看一下 this.login.setOnClickListener(new View.OnClickListener() { // from class: com.example.test.ctf02.MainActivity.1

【Android逆向】静态分析+frida破解test2.apk

有了上一篇的基础 https://www.cnblogs.com/gradyblog/p/17152108.html 现在尝试静态分析的方式来处理 为什么还要多此一举,因为题眼告诉了我们是五位数字,所以可以爆破,不告诉这个题眼的话,就得分析 1. IDA 打开libroysue.so,查看JNI_O

MyBatis的逆向工程详细步骤操作

1. MyBatis的逆向工程详细步骤操作 @目录1. MyBatis的逆向工程详细步骤操作2. 逆向工程配置与生成2.1 MyBatis3Simple:基础版,只有基本的增删改查2.1.1 第一步:在pom.xml 中添加逆向工程插件2.1.2 第二步:配置 generatorConfig.xml

[转帖]面渣逆袭:二十二图、八千字、二十问,彻底搞定MyBatis!

https://cdn.modb.pro/db/334793 大家好,我是老三,面渣逆袭系列继续,这节我们的主角是MyBatis,作为当前国内最流行的ORM框架,是我们这些crud选手最趁手的工具,赶紧来看看面试都会问哪些问题吧。 基础 1.说说什么是MyBatis? MyBatis logo 先吹

逆向通达信 x 逆向微信 x 逆向Qt

本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18252961 本篇内容包括: win32窗口嵌入Qt UI。反斗玩转signal-slot。最后 通达信 x 微信 x Qt 做手术。 Qt Alien Widget是一种广义的DirectUI。 在UI技术中,D

逆向WeChat(四)

本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18209439 mars 先回顾一下,在上两篇《WeUIEngine》,《EventCenter》。我对wechat如何使用chrome::base框架的分析中需要更正补充。首先要指出,逆向分析是一个过程。需要经过不

逆向WeChat(三)

本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18198572 上篇回顾,对象是WEUIEngine。WeUIEngine使用了chrome::base框架,但只用来实现了单一的功能,只为了DUI的动画计时器。 chrome::base框架没有用作主线程的disp

逆向WeChat (二)

本篇在博客园的地址https://www.cnblogs.com/bbqzsl/p/18187099 回顾一下现时网上的资源。 原生 https://github.com/duilib, Ultimate https://github.com/qdtroy/DuiLib_Ultimate 腾讯 ht

逆向wechat

本篇博客园地址https://www.cnblogs.com/bbqzsl/p/18171552 计划来个wechat的逆向系列,包括主程序WeChat,以及小程序RadiumWMPF。 开篇,对WeChat入口进行分析。 depends显示WeChat.exe并没有依赖CRT,入口地址也找到那个S