本帖最后由 duskxi 于 2024-11-2 16:56 编辑
破解APP的起因是,由于还没买C8HD的减焦镜,所以想着通过拼接的方式去获得一张较为全视的M42,但是看了一圈,pixinsight没找到破解版,Astro Pixel Processor也是,所以那就只好我亲自来破解咯(还好我是学计算机的)
破解好的Astro Pixel Processor在下面
先附上合成马赛克M42的效果图:
软件随便填写注册码后:
直接下载破解后的软件: 链接: https://pan.baidu.com/s/12HMUGGaM-nF9uviHCGK5PA?pwd=v3im 提取码: v3im
这里下载是一个压缩包,打开直接运行就行了,不用看后面的教程(教程是给想要自己捣鼓破解的人看的)
注意: 注册码随便填,但是长度要超过15个字符
接下来是破解过程[给喜欢捣鼓的人写的](理论上来说全平台通用,作者没必要为了切换平台更换License Code激活用的Class):
准备工作:
1. [APP软件本体] 去官网下载合适的版本,并且安装(我虽然只尝试过2.0beta29,但是理论上来说授权代码变化不会很大): https://www.astropixelprocessor.com/downloads/
2. [Java 字节码编辑器] 我使用的是Bytecode Viewer (https://github.com/Konloch/bytecode-viewer), 当然也可以用Recaf(https://github.com/Col-E/Recaf),选择很多
3. [Java 反编译器(可选,除非你想看代码)] 我使用的是Jadx(https://github.com/skylot/jadx) 如果只是想跟教程自己破解,而不是想玩点别的逆向工程,这个就对你没必要
4. [解压缩软件] 如7z bandizip
5. [jre/jdk环境(可选)] 其实可以直接用APP自带的jre环境,所以是可选
额外条件: 具有额外Linux环境,或者WSL(Windows 的 Linux子系统,想要亲自破解的多多少少应该有CS基础,这里就不过多解释),同时带有java 21环境,因为java包是分大小写的,而Windows的文件系统视大小写不同,但是字母相同的文件为同一个文件,因此打包过程需要在Linux进行。或自行尝试使用Java Agent修改启动命令覆写字节码
开始破解(Patch)
1. 找到可执行文件AstroPixelProcessor.exe所在目录,比如说我的就在"C:\Program Files\AstroPixelProcessor"。接下来所有操作都会基于这个目录
2. 使用解压缩软件直接打开AstroPixelProcessor.exe,因为AstroPixelProcessor.exe本质上就是个jar打包成exe的,而jar文件本质上就是个压缩包,因此解压缩软件可以直接打开。
3. 从中寻找到(注意!严格确认大小写)jv.class(最核心文件,为APP的授权处理类所在的文件) 与 gT.class(为编译jv.class反编译的代码所需的依赖文件,其中有类方法gT.a()需要执行)
4. 打开Bytecode Viewer,分别把gT.class和jv.class拖曳到Bytecode Viewer中:
5. 点击顶部栏的显示->面板1->Fernflower 勾选Java和可编辑
6. 展开jv.class 点击下面的jv.class,你会看到如下代码:
7. 如图,这个函数是授权函数,是破解的核心, 只需要将图中函数内的逻辑代码全删了,改成 this.c = gT.a() (或者this.sc = gT.a() 因为后续的代码涉及到为了编译暂时修改部分成员类的名称)
8. 这一步也很关键,涉及到是否能够顺利编译反编译后的代码,
类成员重命名:
现在将低6,7行和public String[] a()方法与public String[][] a()中的类成员变量从a和b改为psa,psb。然后修改第九行的c改为sc(相应的授权函数中的this.c也应该变为this.sc)。以及将23行的 public boolean a() 改为public boolean ba();把public String[[ a()改为public String[[ aa();把public String a()改为public String sa();
参数覆写:
将第二行第三行的a,b赋值从false改为true, 第五行的e添加默认值为true, 这三个参数分别是控制判断注册码是否激活,是否有效,注册码验证过程是否完成的参数。然后设置psa, psb, sc默认值为"114514 d abcdefgh g 191810 d abcdefgh g ikun d abcdefgh g 1919810"; 当然了,这里面的值随便填写,反正无所谓,唯独要确保至少有三个" d abcdefgh g "在其中, 然后前后都要有额外字符,不然会报错
最终,修改完成后文件应该如下:
- public class jv {
- public static boolean a = true;
- public static boolean b = true;
- public static boolean c = false;
- private static boolean e = true;
- private static String psa = "114514 d abcdefgh g 191810 d abcdefgh g ikun d abcdefgh g 1919810";
- private static String psb = "114514 d abcdefgh g 191810 d abcdefgh g ikun d abcdefgh g 1919810";
- private boolean d;
- private String sc = "114514 d abcdefgh g 191810 d abcdefgh g 191810 d abcdefgh g 191810";
- public jv(String[] var1) {
- this.a(var1);
- }
- public String a() {
- return this.sc;
- }
- public void a(String[] var1) {
- this.sc = gT.a();
- }
- public boolean ba() {
- return e;
- }
- public String[] a() {
- String[] var1 = psa.split(" d abcdefgh g ");
- return new String[]{var1[1], var1[2]};
- }
- public String[][] aa() {
- psb.split(" d abcdefgh g ");
- String[][] var3 = new String[3][3];
- for(int var1 = 0; var1 < 3; ++var1) {
- for(int var2 = 0; var2 < 3; ++var2) {
- var3[var1][var2] = "unlimited";
- }
- }
- return var3;
- }
- public boolean b() {
- return this.d;
- }
- public boolean c() {
- return a;
- }
- public boolean d() {
- return b;
- }
- }
复制代码 9. 执行编译,点击左上角的文件->编译
编译成功后理应显示这个:
10. 关闭源码编辑,打开字节码编辑
还是之前的地方,关掉显示->面板1->Fernflower 里面的可编辑,然后选中 显示->面板2->smali, 同时打开里面的可编辑:
11. 用顶部栏的搜索工具,输入.method public
一个个去找里面高亮的后面,确保所有对应的函数的名字都是一个字母,都基本上是a/b/c, 总之就是回复其修改源码之前的名字,之所以要在字节码里面修改,是因为在编译器面前这些同名被认为是不正确的写法。
比如说:
改为
改为
12. 最后再按一次编译,然后使用快捷键Ctrl+S保存,随便哪里都行,你会看到一个jar文件
13. 还是用解压缩软件打开jar文件,然后我们只需要里面的jv.class,gT.class只是辅助用的,现在它没用了。把jv.class复制出来放到随便哪个文件夹里面备用
14. 执行命令,解包jar
先准备好目录,在AstroPixelProcessor.exe的安装目录中新建一个pack目录
然后切入wsl环境(或者复制这堆东西到你的Linux环境中)
然后执行如下命令:
- cp AstroPixelProcessor.exe pack/AstroPixelProcessor.jar
- cd pack/
- jar xf AstroPixelProcessor.jar
- rm AstroPixelProcessor.jar
- cd ..
复制代码 上述命令复制原先的APP可执行文件到pack目录中并且重命名后缀为jar, 然后调用jar命令解包jar,所有的文件都会在pack目录里面,然后删除临时文件AstroPixelProcessor.jar
现在,完成了对APP的解包,接下来就需要把刚才编译好的jv.class复制到pack目录里面,覆盖其中的jv.class文件
接下来继续执行如下命令:
- jar cmf ./pack/META-INF/MANIFEST.MF AstroPixelProcessor-Patch.jar -C ./pack/ .
复制代码 现在我们完成了打包
此时APP软件已经破解完成,只需要执行java -jar AstroPixelProcessor-Patch.jar就可以打开软件了
15. 最终打包为exe(可有可无,你也可以直接写个sh或者bat文件调用本地的jre去启动,一样是一键启动,只不过没有APP的ico没那么好看罢了)
用Launch4j打包为exe可执行文件,这里我就不过多赘述了,Launch4j的教程网上一抓一大把
至此,大功告成
|