首页
社区
课程
招聘
[原创] GhidraDec 编译测试
发表于: 2021-7-5 17:39 11367

[原创] GhidraDec 编译测试

2021-7-5 17:39
11367


摘要:本文对GhidraDec进行编译和测试,以了解GhidraDec,基本手段是解决编译过程可能遇到的问题和测试对比该插件与原生Ghidra反编译效果,无甚特色。


关键词:Ghidra,IDA,RetDec,反编译



    GhidraDec是一款用于IDA Pro的插件,主要目的是在IDA中使用Ghidra的反编译器(decompiler.exe),即类似IDA的F5伪码反编译功能,并非反汇编功能。由于Ghidra 9.x和10.x版本间的协议差异,GhidraDec只支持Ghidra  10.x版本的反编译器,兼容IDA 6/7x版本。支持Ghidra和IDA所支持的处理器。更多信息参考官方说明:

    (1) 官仓: https://github.com/GregoryMorse/GhidraDec

    (2) Ghidra支持的处理器列表: https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Processors

    (3) IDA支持的处理器列表: https://hex-rays.com/products/ida/processors/


    这里主要为Windows 10 x64的IDA Pro 7.5编译GhidraDec插件

    (1)由于是IDA Pro 7.5的插件,别无二选是IDASDK75;

    (2)参考IDASDK75\readme.txt,这里我们选择Visual Studio 2017; 

    (3)这里我们使用win_flex_bison,版本尽量2.x以上(参考附件);

    (4)这里我们使用VC编译环境,搭配cmake进行编译;

    (5)git是搬运github代码必备。

图2-1 官方说明的编译要求


    我们主要通过cmd.exe命令行完成编译。

    (1)启动cmd.exe,初始化Visual Studio 2017 x64编译环境;

    (2)添加cmake、win_flex_bison、git路径到path环境变量;

    (3)搬运GhidraDec和Ghidra代码;

        说明,搬运Ghidra主要是使用 Ghidra\Features\Decompiler\src\decompile目录的源码,本次编译测试中需要修正decompiler.cpp源码,附件提供了修正版,如果使用附件的decompile目录代码,也可以忽略下载ghidra代码;虽然GhidraDec有decompile9源码,考虑到官方提到的只支持Ghidra10.x,这里直接使用目前最新的10.x版本源码,至于直接修改decompile9为decompile行不行,这里未作测试。

    注意:如果环境除了win_flex_bison外,也有其他bison,为避免其他版本可能较低或是其他环境专属带来的干扰,

需要修改GhidraDec\CMakeLists.txt的下述行内容,挑战win_bison的为优先查找顺序。

图2-2 设置win_bison优先于其他版本bison

        

    (1)cmake配置和编译

        应当注意到,下述-DIDA_SDK_DIR应设置为实际的IDASDK75路径。

    (2)可能出现的错误与解决方案

        A、"unrecognized: %destructor"错误。这一般是由于bison版本过低造成,换较高版本bison解决。

        B、error C2398: 元素“2”: 从“const color_t”转换到“_Elem”。这是编译器太高端所致,这里需要修改decompiler.cpp的源码进行排错。

图2-3 混合char与uchar引起的C2398错误

    (3)将GhidraDec\build\Release目录下的GhidraDec插件ghidradec.dll、ghidradec64.dll复制到IDA的plugins目录即可完成安装。

        A、设置decompiler.exe的目录。选择“Options|GhidraDec plugin opitons"进行配置,然后选定ghidra的安装目录,


    


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2021-7-5 17:42 被tritium编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (3)
雪    币: 48
活跃值: (3434)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
666
2021-7-5 19:05
0
雪    币: 4172
活跃值: (3396)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3

这个,blc插件感觉还不错,楼主可以看看!

https://github.com/cseagle/blc

最后于 2021-7-6 07:51 被haogl编辑 ,原因:
2021-7-6 07:49
1
雪    币: 15187
活跃值: (16852)
能力值: (RANK:730 )
在线值:
发帖
回帖
粉丝
4
支持一波,感觉还有优化空间
2021-7-7 08:58
0
游客
登录 | 注册 方可回帖
返回
//