1.?服务????????Դ??
2.IL2CPP 逆向初探
3.逆向工程的方法实现
4.逆向pyinstaller打包的exe软件,获取python源码(4)
5.逆向pyinstaller打包的器源exe软件,获取python源码(6)
6.逆向pyinstaller打包的码逆exe软件,获取python源码(3)
?????????Դ??
年,我开发了第二个安全运营工具——统一运营,源码专为驻场运营管理员设计。服务数据库系统源码该工具需要与第一个工具安全事件分析(ailx:逆向pyinstaller打包的器源exe软件)配合使用。安全事件分析工具会产生一个db文件,码逆存储客户态势感知平台上的向服安全事件信息。统一运营工具对多个客户的源码数据进行横向AI聚类分析和纵向历史基线分析,并构建分析报表,服务自动生成邮件。器源在此过程中,码逆我使用了一个复杂的向服算法进行横向对比,即9:1开,源码强制%的安全驻场不及格。近期,遇到一个beacon加密程序被同事破解,激发了我对逆向的兴趣,于是我开始逆向pyinstaller打包的exe软件,获取python源代码。dz爱心源码
提醒:故事还有后续,逆向成功获取pyinstaller打包的exe软件的所有源代码:ailx:逆向pyinstaller打包的exe软件,获取python源码(5)
自动化运营周报小工具说明:
第一步:对exe程序进行反编译[1]
第二步:进入新获得的extracted文件夹
第三步:查看struct.pyc和main.pyc前8字节之间的区别
第一个软件前个字节,第二个软件只有前8个字节相同,不知道为啥,不过我这里并未处理
第四步:反编译pyc文件得到python源代码
第五步:欣赏一下反编译的代码
非常遗憾,暂时只能看到主函数,看不到最核心的my_core函数,不知道咋弄
IL2CPP 逆向初探
IL2CPP 逆向分析涉及将游戏C#代码转换为C++并编译为Native代码,同时保持C#特性如GC和反射的实现。核心文件global-metadata.dat存储了类名、方法名等信息,启动时会读取。逆向过程包括解压apk,使用IL2CPPDumper获取符号,寻找libil2cpp.so和global-metadata.dat,以及利用dump.cs、IL2cpp.h和script/json/stringliteral.json等工具解析代码。
详细步骤如下:
1. 获取Android(armeabi-v8a\libil2cpp.so)和PC(_Data/il2cpp_data/Metadata/global-metadata.dat)的il2cpp相关文件。
2. 利用IL2CPPDumper工具处理global-metadata.dat,源码种子搜索dump.cs显示C#类、方法等信息,IL2cpp.h提供cpp头文件,script.json和stringliteral.json则为类方法和字符串的json展示。
3. 在IDA中,根据元数据加载路径(il2cpp_init、il2cpp::vm::Runtime::Init等函数),分析混淆情况,寻找可能的解密或混淆点。
4. 对于混淆的metadata,尝试内存搜索魔术字,或对比源代码找到解密代码区域。
5. 解密后的关键函数,如ScoreScene__Start,通过检测preciseTime和notehit来获取flag。
示例中提到的解密和逆向技术包括:
- 搜索内存中的魔术字
- 对比源代码找出MetadataLoader的调用链
- 检测AES加密,确定密钥和IV
- 编写解密脚本恢复数据
参考资源:
- [Blog post 1] katyscode.wordpress.com
- [Blog post 2] cloud.tencent.com
- [Blog post 3] blog.shi.cn
- [Blog post 4] blog.csdn.net
- [Video tutorial] bilibili.com/video/BV1D...
完整示例代码或详细步骤的出处:[Original article - IL2CPP Reverse Engineering - KanXue.com]
逆向工程的方法实现
软件逆向工程有多种实现方法,主要有三种:
1、分析通过信息交换所得的观察。最常用于协议逆向工程,启动指标源码涉及使用总线分析器和数据包嗅探器。在接入计算机总线或网络的连接,并成功截取通信数据后,可以对总线或网络行为进行分析,以制造出拥有相同行为的通信实现。此法特别适用于设备驱动程序的逆向工程。
2、反汇编。即使用反汇编器,把程序的原始机器码,翻译成较便于阅读理解的汇编代码。这适用于任何的计算机程序,对不熟悉机器码的人特别有用。
3、反编译。即使用反编译器,尝试从程序的机器码或字节码,重现高级语言形式的源代码。
逆向pyinstaller打包的exe软件,获取python源码(4)
在之前的逍遥ssc源码文章“ailx:逆向pyinstaller打包的exe软件,获取python源码(1)”中,我们已经成功逆向出了主程序。然而,导入的py文件并未被逆向出来。得益于知乎网友的提醒,我们发现了“PYZ-.pyz_extracted”文件夹,这激发了我们继续探索的兴趣。这个小工具依赖于四个文件,而我们此次成功地还原了pyinstaller打包的exe软件的所有python源码。尽管pyinstaller操作便捷,但在打包过程中,我们仍需注意对python源码进行加密。
第一步,我们进入“PYZ-.pyz_extracted”文件夹,确实发现了依赖文件。第二步,我们逆向了pyc文件,成功获取到了所有python源代码。第三步,我们在pycharm中打开了这些代码,并解决了所有依赖问题。最后,第四步,我们直接运行了python代码,成功启动了软件。
逆向pyinstaller打包的exe软件,获取python源码(6)
在之前的讨论中,我们已经成功逆向了由pyinstaller打包的exe程序的主程序。然而,关于其依赖的python文件,其实获取方法相当直接。关键在于PYZ-.pyz_extracted文件夹,其中包含编译exe时转化为pyc格式的依赖文件。只要对这些pyc文件进行逆向,就能揭示出整个exe的所有python源代码,这种方法屡试不爽。然而,有知乎网友推荐使用Nuitka进行exe打包,以增加代码的防护,防止源码被轻易反编译。具体步骤如下:首先,进入PYZ-.pyz_extracted文件夹,你将发现所需的依赖文件。
接着,对这些pyc文件进行逆向处理,从而获取到全部的python源代码。
在pycharm等开发环境中,打开这些源代码,解决任何依赖关系问题。
最后,直接运行你修改后的代码,程序即可成功启动。
逆向pyinstaller打包的exe软件,获取python源码(3)
年,我开发了第三个安全运营小工具,这个工具是为安全驻场人员设计的。本来打算将其与第一个软件整合,但由于时间限制未能实现。当时过于急于求成,没有深入分析代码。然而,最近的一次威胁狩猎事件激发了我对逆向工程的兴趣,我顺便尝试了逆向pyinstaller打包的exe软件,以获取python源码。回顾过去的代码,转眼已到年。我一直从事网络安全业务,但在coding技术上却毫无进步。今年,我决心提升代码水平,争取创造出有差异性的成果。
提醒:故事还有后续,我将逆向pyinstaller打包的exe软件的所有源代码:ailx:逆向pyinstaller打包的exe软件,获取python源码(6)
态势感知体检小工具说明:
第一步:对exe程序进行反编译[1]
第二步:进入新获得的extracted文件夹
第三步:查看struct.pyc和main.pyc前4字节之间的区别
第一个软件前个字节,第二个软件只有前8个字节相同,第三个软件只有前4个字节相同,不知道为什么,但我在这里并未发现任何问题。
第四步:反编译pyc文件得到python源代码
第五步:欣赏一下反编译的代码
逆向pyinstaller打包的exe软件,获取python源码(1)
年创作了一款安全事件分析小工具,这是我初次尝试为安全驻场人员开发的简易工具。利用pyinstaller打包为PE格式,使用起来十分便捷,只需导入态势感知的安全事件列表,小工具便会自动进行分析。这款工具旨在辅助驻场人员理解安全事件,同时收集现场信息,便于后续运营效果评估。 近期,在探索逆向工程的过程中,我了解到可以逆向pyinstaller打包的exe软件,从而获取python源码。这促使我回忆起之前在GitHub上分享的项目。现在,就让我讲述这个过程:逆向工程之旅。 小工具操作步骤如下:首先,对exe程序进行反编译处理。
接着,进入反编译后得到的extracted文件夹。
仔细观察struct.pyc和main.pyc文件头的前字节,它们之间可能存在关键线索。
然后,对pyc文件进行反编译,逐步揭示python源代码。
最后,虽然目前只能看到主函数,但这是逆向工程的一个重要突破。
尽管未能完全揭示所有函数,但这无疑为后续深入研究打开了新的可能。