-
-
[原创]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反编译器时可以快速准确的执行到想要分析的汇编指令,而不需要经过很多无关代码。该文件将在下文分析该文件时一并提供,以便读者自行修改分析。
- 快去准备调试环境吧,一切准备就绪,下文我们一起踏上反编译器的原理剖析。
赞赏
他的文章
赞赏
雪币:
留言: