首页
社区
课程
招聘
[原创]Ghidra反编译器的设计与实现(1)——调试环境搭建
发表于: 6天前 627

[原创]Ghidra反编译器的设计与实现(1)——调试环境搭建

6天前
627

Ghidra反编译器的调试环境搭建

反编译器可以将机器码反编译为伪C代码,本文首先介绍Ghidra反编译器的调试环境搭建,下文会基于此调试环境以一个最简单的exe文件为例介绍Ghidra反编译器的设计与实现。

Ghidra反编译器的环境搭建

我采用的调试方式是在Ubuntu上编译Ghidra的反编译器,在Windows上用VS Code远程连接到Ubuntu进行调试。

  • 下载Ghidra源码
  • 进入到源码的Ghidra/Features/Decompiler/src/decompile/cpp目录
  • 在该目录创建.vscode目录,并在.vscode目录内创建tasks.json文件和launch.json文件
  • tasks.json文件内容:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make build",
            "type": "shell",
            "command": "make decomp_dbg",
            "args": [],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}
  • launch.json文件内容:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug with Make",
            "type": "cppdbg",
            "request": "launch",
            "program": "./decomp_dbg",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "make build", // 关键:在启动调试前执行make
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
  • 在Ghidra/Features/Decompiler/src/decompile/cpp目录先执行“make”指令,如果报错按照报错内容安装依赖,make成功后在VS Code中按下F5,会首先执行"make decomp_dbg",生成decomp_dbg文件后,会运行该文件。默认情况下生成的decomp_dbg文件是可调试的。
  • 下载Ghidra发行版并解压,在/etc/profile最后一行添加环境变量,将上述指令等号“=”后的路径指向自己的Ghidra发行版路径。
export SLEIGHHOME=/root/ghidra_12.0.4_PUBLIC
  • 成功启动decomp_dbg后在命令行中会显示“[decomp]>”,此时可以输入想要载入分析的文件名,指令如下,注意load和file之间有空格,file和文件路径之间也有空格。
load file /mnt/hgfs/test/1/tt3.exe
  • 在载入文件后执行
load addr 0x14000300

如果想要分析反编译器的行为,在执行该指令前可以给对应位置加上断点,然后执行这条指令,这样就可以调试了。0x14000300是exe文件的入口函数地址。tt3.exe是基于最小exe文件思路创建的,在IDA中载入该文件,然后在IDA中修改该文件的汇编代码并保存,这样可以使得将该exe文件载入Ghidra反编译器时可以快速准确的执行到想要分析的汇编指令,而不需要经过很多无关代码。该文件将在下文分析该文件时一并提供,以便读者自行修改分析。

  • 快去准备调试环境吧,一切准备就绪,下文我们一起踏上反编译器的原理剖析。

[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回