12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 1466|回复: 0

编译ida反编译插件F4(像F5)、

[复制链接]

312

主题

312

帖子

634

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
634
发表于 2019-8-23 14:10:22 | 显示全部楼层 |阅读模式
第一次在吾爱破解发贴,本贴内容主要分享一下IDA反编译插件的编写流程,先上个结果吧,有兴趣的可以看一下,有需要了解的可以回复一下,你们的支持是我更新下去的动力。ps:如果都没兴趣的话我就不更新了
以下是汇编代码(自定义架构),以下是我自己写的ida处理器得到的反汇编代码(关于ida处理器编写和加载器的编写,如果有需要了解的朋友也可以和我一起交流)

环境:
vs2013

QT4.8.7 :http://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.zip

qt-vs-addin-1.2.5.exe : http://download.qt.io/archive/vsaddin/qt-vs-addin-1.2.5.exe
IDA6.8(百度下载)
IDASDK6.8(百度下载)
boost库,我使用的是1.66的

smartdec源代码:(x32dbg中的反编译插件snowman,就是基于这个框架更改的)
https://github.com/smartdec/smartdec

安装环境:
1、安装QT4.8.7,安装直接添好路径以后,安装就行了
2、安装vs2013,已安装的可以跳过,vs2010也可以,
3、安装qt-vs-addin-1.2.5.exe。  建议按照这个顺序安装,可以保证qtvs插件能识别到vs和qt
4、编译boost库,
打开vs2013的命令行,
cd E:\SVN_Pre\toolLib\boost_1_66_0

bjam stage --toolset=msvc-12.0 --without-graph --without-graph_parallel --stagedir="E:\SVN_Pre\toolLib\boost_1_66_0\bin\vc12" link=static runtime-link=shared runtime-link=static threading=multi debug release  

这个需要很长一段时间 ,视你电脑配置,可能时间在20分钟-4个小时


安装好以后,打开vs2013,
[url=]1.png[/url]
查看是否识别到了版 本,如果没有识别到,可以手动添加


环境安装好以后,就可以开始了。

解压出smartdec的代码,如果是用github直接下载的,可能是smartdec这个文件 夹,如果是下载的压缩包,那么应该是smartdec-master.zip

解压后的结构如下:



doc目录,保存着要编译该项目的方法 ,使用cmake,我是没有使用过这个工具,所以就不用这个工具了,


在src目录下,是这样的结构

ida-plugin,即ida插件,编译这个工程就能像ida f5一样使用了。当然前提是你已经反汇编完成了需要的汇编代码,
nc,是整个反编译的核心,
nocode是一个命令行的反编译工具
smartdec是一个带界面的反编译工具
3rd-party,第3方库


,那么我们是不是可以就立即编译了呢,然后就可以开心的使用f4了呢,,实现不是的,我们得先配置qt4.8.7。(这一步相当重要,否则能正常编译,但是无法链接到ida的sdk。这个坑也是我花了几天才找到原因的)
,那么怎么样配置呢,我还是喜欢抄别的人文档,抄出来的结果如下:
1)首先在这里获得Qt 4.8.4的二进制构建(234mb):http
//download.qt.io/archive/qt/4.8/4.8.4/qt-win-opensource-4.8.4-vs2010。可执行程序2)安装它。通常它会转到“C:\ Qt”。
不要构建,只需安装它。3)将您的开始菜单调至“Qt by Digia v4.8.4 ..”并打开“Qt 4.8.4命令提示符”。4)在IDA设置中,QT命名空间环境用于避免IDA SDK中的一些冲突与qstrlen()冲突函数一起
运行。在此控制台中运行:
configure -debug-and-release -platform win32-msvc2010 -no-qt3support -qtnamespace QT
选择'o'开源选项和'y'到许可协议完成该过程。这就是你现在需要做的一切。您可以运行“nmake”来构建,但您不需要也可能不想。
重建整个文件需要几个小时,文件夹的大小将增加到几千兆字节。只需关闭控制台即可完成。

那么这么配置以后,就可以正式的踏上编译的道路

1、编译核心库

首先建一个解决方案:


然后来到界面,勾选静态库

点击完成,那么可爱的解决方案就已经生成了,结果如下:
,
nc.cpp和nc.h不是我们需要的文件 ,我们删掉他们,
然后把core的代码加入nc这个工程


项目->显示所有文件,左边的文件结构就自动识别了当前工作目录下的所有目录

选择common,点击

,会卡住几秒,看你的电脑的配置,不同的配置会卡的时间不等。然后展开以后看到变成下面这样了。表示加入成功



按同样的方法依次加入core,其它文件暂时不用加入,
然后配置一下目录。,按下面配置(路径替换成自己的路径)



修改src/nc/config.h.in为config.h,然后注释掉config.h中33行、36行、39行的代码
在预处理器添加 QT_NAMESPACE=QT;QT_NO_DEBUG;  
那么是时候生成一波了。。先编译一下nc这个工程吧
,看到一个错误,
1>core\mangling\MsvcDemangler.cpp(26): fatal error C1083: 无法打开包括文件: “undname/undname.h”: No such file or directory
双击跳转到MsvcDemangler.cpp,注释掉26行,和35-38行。


那么再编译一次,这次成功 了。但是有几个警告,如下:

1>  MsvcDemangler.cpp
1>  正在生成代码...
1>Debug\Statement.obj : warning LNK4042: 对象被多次指定;已忽略多余的指定
1>Debug\Types.obj : warning LNK4042: 对象被多次指定;已忽略多余的指定
1>  nc.vcxproj -> E:\SVN_Pre\GitHub\smartdec-master\src\nc\Win32\Debug\nc.lib
========== 生成:  成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========


接着2018/7/5号更新
从警告可以看出,有types.cpp和Statement.cpp冲突,那么需要处理掉这个冲突,可以直接把冲突的cpp和.h的名字改掉,然后改掉引即可,
我更改了nc/core/likec/Statement到_Statement。然后编译一下,很多错误。挨个把错误处理了吧。
我更改了nc/core/likec/types到_types。然后编译一下,很多错误。挨个把错误处理了吧。

编译完成以后,选择重新生成一次,这次没有任何错误,,核心库已经编好了。



2、编译ui库
同样的建立gui库,删掉gui.cpp和gui.h,


1、添加所有gui文件进去
2、复制nc项目的包含目录到gui工程的包含目录
3、预处理器修改成UNICODE;WIN32;QT_LIB;QT_CORE_LIB;QT_GUI_LIB;GUI_LIB;QT_NAMESPACE=QT;QT_NO_DEBUG;%(PreprocessorDefinitions)
附加目录修改成 .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;%(AdditionalIncludeDirectories)
然后编译吧,有2个错误,是刚才修改_Statement引起的,修改成#include 即可


再编译一次,编译成功

1>  正在生成代码...
1>  gui.vcxproj -> E:\SVN_Pre\GitHub\smartdec-master\src\nc\Win32\Debug\gui.lib
========== 全部重新生成:  成功 1 个,失败 0 个,跳过 0 个 ==========

3、编译ida插件

按刚才同样的方法 把ida-plugin加入到解决方案中
1、并修改附加目录为.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories)
2、修改预处理器定义为UNICODE;WIN32;__NT__;__IDP__;QT_DLL;QT_GUI_LIB;QT_CORE_LIB;IDA_PLUGIN_LIB;QT_NAMESPACE=QT;QT_NO_DEBUG;%(PreprocessorDefinitions)
3、vc++包含目录 为E:\SVN_Pre\toolLib\boost_1_66_0;E:\SVN_Pre\GitHub\smartdec\src;E:\SVN_Pre\Analyzer\IDAPlug\SDK\idasdk68\include;$(IncludePath)
4、vc++库目录为E:\SVN_Pre\Analyzer\IDAPlug\SDK\idasdk68\lib\x86_win_vc_32;E:\SVN_Pre\Analyzer\IDAPlug\SDK\idasdk68\lib\x86_win_qt;$(LibraryPath)、
5、链接器->输入->附加依赖项 :nc.lib;gui.lib;ida.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)
6、链接器-常规-附加库目录 :..\Build\Out\$(Configuration);E:\SVN_Pre\Analyzer\IDAPlug\SDK\idasdk68\lib\x86_win_qt

并修改gui和nc项目属性
输出目录为..\..\Build\Out\$(Configuration)\
中间目录..\..\Build\Imm\$(ProjectName)\$(Configuration)\

8、修改项目依赖项, 使ida-plugin依赖gui、nc

编译一下,发现错误,把GitSHA1.cpp.in修改成GitSHA1.cpp。然后加入工程

注释掉module.cpp中61-69行。
注释掉ParserRepository.cpp中41-42行。

重新生成。居然还有一个错误。。
1>SmartDecPlugin.obj : error LNK2019: 无法解析的外部符号 "public: class nc::core::arch::Architecture * __thiscall nc::core::Module::setArchitecture(class QT::QString const &)" (?setArchitecture@Module@core@nc@@QAEPAVArchitecture@arch@23@ABVQString@QT@@@Z),该符号在函数 "private: class std::unique_ptr __thiscall nc::ida::SmartDecPlugin::createIdaProject(void)const " (?createIdaProject@SmartDecPlugin@ida@nc@@ABE?AV?$unique_ptr@VProject@gui@nc@@U?$default_delete@VProject@gui@nc@@@std@@@std@@XZ) 中被引用
1>E:\SVN_Pre\GitHub\smartdec-master\src\nc\Win32\Debug\\ida-plugin.dll : fatal error LNK1120: 1 个无法解析的外部命令
========== 生成:  成功 0 个,失败 1 个,最新 2 个,跳过 0 个 ==========

等明天再来修正了。。



来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-4-27 12:13 , Processed in 0.125000 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表