本帖最后由 ABlueCat 于 2022-12-10 10:39 编辑
这篇教程是一份入门级的逆向工程教程。在学习本教程后,你可以:
1. 掌握逆向工程基本原理;
2. 有一定的反编译、阅读字节代码甚至修改它的能力;
3. 掌握一定混淆或反混淆等技术。
4. (或许)可以得知本地代码逆向的方法。
阅读这份教程需要一定的Java基础,但只需要了解一点就行
教程目录如下:(第四章及以后还在编写中)
教程改进工作:
由于笔者水平有限,在逻辑严密性、文字措辞、涉及的知识点上都可能会存在一定缺陷。如果你对本教程的改进有建议或者意见,可用以下方式进行:
获得教程更新:
收藏本教程即可获得教程的更新!
鸣谢名单:
在本教程的写作过程中,有以下几位审稿人提出了十分有意义的建议。在此本人向他们提出十分诚挚的感谢:
@w6vDqw @贺兰兰 @William_Shi @土球球
来自群组: PluginsCDTribe
逆向工程(Reverse Engineering)是一门“溯本求源”的技术。由于此概念在软件工程领域中的概念模糊不清,对笔者来说,可粗略理解为对于一个成品程序,通过其运行逻辑(乃至根据其运行逻辑而推测出来的类源代码),来分析其设计理念、程序行为等开发者层面的内容的技术。
受到这门技术本身的“名声限制”,在互联网上相关的资料并不是很多,甚至到了2022年,mcbbs论坛上依然没有一个较成体系的逆向工程教程。技术是一把双刃剑,技术本身并没有绝对的对错。人将技术用于何种目的,该技术才有和这种目的相匹配的立场,逆向工程也是如此。既有人编写后门软件来潜伏在服务器并造成破坏,也有人通过逆向工程来找到后门、乃至后面我们可以了解到:mod本身也是逆向工程应用的一种。因此笔者编写此教程,来让更多人更好地认识和利用逆向工程技术。
本教程目前已更新到PJ2!
这篇教程是一份入门级的逆向工程教程。在学习本教程后,你可以:
1. 掌握逆向工程基本原理;
2. 有一定的反编译、阅读字节代码甚至修改它的能力;
3. 掌握一定混淆或反混淆等技术。
4. (或许)可以得知本地代码逆向的方法。
阅读这份教程需要一定的Java基础,但只需要了解一点就行

教程目录如下:(第四章及以后还在编写中)
- 前言
- 第一部分 走进逆向世界
- 第二部分 字节码基础
- 第三部分 字节码修改技术
- 特别部分 PJ1 预热
- PJ1 修复游戏漏洞
- PJ2 插件内核汉化
- 第四部分 对抗技术简介
- 第五部分 本地代码逆向
- FINAL-PJ 迷你攻防游戏
教程改进工作:
由于笔者水平有限,在逻辑严密性、文字措辞、涉及的知识点上都可能会存在一定缺陷。如果你对本教程的改进有建议或者意见,可用以下方式进行:
- 在mcbbs的帖子下直接回复;
- 在本教程的Github仓库提出issues或者提交Pull Request;
获得教程更新:
收藏本教程即可获得教程的更新!
鸣谢名单:
在本教程的写作过程中,有以下几位审稿人提出了十分有意义的建议。在此本人向他们提出十分诚挚的感谢:
@w6vDqw @贺兰兰 @William_Shi @土球球
来自群组: PluginsCDTribe
Coremod 初探及ACBF扩展包编写那一节提到这让我想起https://fmltutor.ustc-zzzz.net/3.5.1-使用其他Mod的API.html里记载的虽然我看不懂,但好像是有用的,毕竟两边都提到了同一个单词deobf
这意味着寻找 deobf 版本的前置模组来通过正常手段构建貌似已经变得不太可能
因此,有的时候,我们需要将universal版本的Mod手动反混淆成适用于自己开发工作的dev版本。
这里需要向读者介绍一个名为simpledeobf的工具……
无敌三脚猫 发表于 2022-12-10 13:01
Coremod 初探及ACBF扩展包编写那一节提到这让我想起https://fmltutor.ustc-zzzz.net/3.5.1-使用其他Mod的AP ...
还有这种东西吗,我可能得研究一下是怎么回事
ABlueCat 发表于 2022-12-10 13:06
还有这种东西吗,我可能得研究一下是怎么回事
事实上ForgeGradle本身就自带对mod依赖进行deobf的功能.
在FG2下是:
- deobfCompile "mezz.jei:jei_${mc_version}:${jei_version}"
在FG3下是:
- // These dependencies get remapped to your current MCP mappings
- // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
在FG5下是:
- // Real mod deobf dependency examples - these get remapped to your current mappings
- // implementation fg.deobf("com.tterrag.registrate:Registrate:MC${mc_version}-${registrate_version}")
如果对mc mod流程不熟可以看下这个
https://www.mcbbs.net/thread-1276664-1-1.html
https://www.mcbbs.net/thread-1276664-1-1.html
看到了最精彩的反混淆阶段,然后就...
复制代码
- 404 - Not found
本帖最后由 byxiaobai 于 2022-12-15 10:22 编辑
有点基础
能不能加一个mixin原理解析,和用asm达成类似mixin inject效果的教程?
有点基础
能不能加一个mixin原理解析,和用asm达成类似mixin inject效果的教程?
纠正一下:
jdk.internal.org.objectweb.asm 包是 JDK 的内部包。
任何内部(internal)包都不应该当做 API 被外部程序调用!
这个包的 ASM API 版本可能较低,且在 JDK 9+ 已无法被正常调用(non-exported)。
不应鼓励开发者使用此包。
jdk.internal.org.objectweb.asm 包是 JDK 的内部包。
任何内部(internal)包都不应该当做 API 被外部程序调用!
这个包的 ASM API 版本可能较低,且在 JDK 9+ 已无法被正常调用(non-exported)。
不应鼓励开发者使用此包。
不太习惯javaassist()
不太习惯javaassist(用asm用惯了
期待混淆器部分
期待混淆器部分
浅浅的问一下 用的什么编程语言?
java
c++
c语言
unity
java
c++
c语言
unity
6666666666666666
6666666666
问个问题,JAVA优化真的会比c++差吗?
正想看看,怎么对抗技术..结果
404 - Not found
404 - Not found