ABlueCat
本帖最后由 ABlueCat 于 2022-12-10 10:39 编辑
逆向工程(Reverse Engineering)是一门“溯本求源”的技术。由于此概念在软件工程领域中的概念模糊不清,对笔者来说,可粗略理解为对于一个成品程序,通过其运行逻辑(乃至根据其运行逻辑而推测出来的类源代码),来分析其设计理念、程序行为等开发者层面的内容的技术。

受到这门技术本身的“名声限制”,在互联网上相关的资料并不是很多,甚至到了2022年,mcbbs论坛上依然没有一个较成体系的逆向工程教程。技术是一把双刃剑,技术本身并没有绝对的对错。人将技术用于何种目的,该技术才有和这种目的相匹配的立场,逆向工程也是如此。既有人编写后门软件来潜伏在服务器并造成破坏,也有人通过逆向工程来找到后门、乃至后面我们可以了解到:mod本身也是逆向工程应用的一种。因此笔者编写此教程,来让更多人更好地认识和利用逆向工程技术。

本教程目前已更新到PJ2!
教程阅读地址:https://abluecat123.github.io/REtutorial/#/

这篇教程是一份入门级的逆向工程教程。在学习本教程后,你可以:
1. 掌握逆向工程基本原理;
2. 有一定的反编译、阅读字节代码甚至修改它的能力;
3. 掌握一定混淆或反混淆等技术。
4. (或许)可以得知本地代码逆向的方法。


阅读这份教程需要一定的Java基础,但只需要了解一点就行

教程目录如下:(第四章及以后还在编写中)

教程改进工作:
由于笔者水平有限,在逻辑严密性、文字措辞、涉及的知识点上都可能会存在一定缺陷。如果你对本教程的改进有建议或者意见,可用以下方式进行:
如果你有任何帮助改善教程习题的想法,也欢迎用以上方法提出。

获得教程更新:

收藏本教程即可获得教程的更新!


鸣谢名单:
在本教程的写作过程中,有以下几位审稿人提出了十分有意义的建议。在此本人向他们提出十分诚挚的感谢:

@w6vDqw @贺兰兰 @William_Shi @土球球



来自群组: PluginsCDTribe

无敌三脚猫
Coremod 初探及ACBF扩展包编写那一节提到
这意味着寻找 deobf 版本的前置模组来通过正常手段构建貌似已经变得不太可能
这让我想起https://fmltutor.ustc-zzzz.net/3.5.1-使用其他Mod的API.html里记载的
因此,有的时候,我们需要将universal版本的Mod手动反混淆成适用于自己开发工作的dev版本。
这里需要向读者介绍一个名为simpledeobf的工具……
虽然我看不懂,但好像是有用的,毕竟两边都提到了同一个单词deobf

ABlueCat
无敌三脚猫 发表于 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下是:
  1. deobfCompile "mezz.jei:jei_${mc_version}:${jei_version}"
复制代码

在FG3下是:
  1. // These dependencies get remapped to your current MCP mappings
  2. // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
复制代码

在FG5下是:
  1. // Real mod deobf dependency examples - these get remapped to your current mappings
  2. // implementation fg.deobf("com.tterrag.registrate:Registrate:MC${mc_version}-${registrate_version}")
复制代码

海螺螺
如果对mc mod流程不熟可以看下这个
https://www.mcbbs.net/thread-1276664-1-1.html

奥力給
看到了最精彩的反混淆阶段,然后就...
  1. 404 - Not found
复制代码

byxiaobai
本帖最后由 byxiaobai 于 2022-12-15 10:22 编辑

有点基础

能不能加一个mixin原理解析,和用asm达成类似mixin inject效果的教程?

teddyxlandlee
纠正一下:
jdk.internal.org.objectweb.asm 包是 JDK 的内部包。
任何内部(internal)包都不应该当做 API 被外部程序调用!
这个包的 ASM API 版本可能较低,且在 JDK 9+ 已无法被正常调用(non-exported)。
不应鼓励开发者使用此包。

美用的飞物
不太习惯javaassist()

美用的飞物
不太习惯javaassist(用asm用惯了
期待混淆器部分

1569788423
浅浅的问一下 用的什么编程语言?
java
c++
c语言
unity

fn123
6666666666666666

pinkongh
6666666666

pinkongh
问个问题,JAVA优化真的会比c++差吗?

丶米饭
正想看看,怎么对抗技术..结果
404 - Not found

第一页 上一页 下一页 最后一页