首页
社区
课程
招聘
[原创]破解 jar 包之直接修改 .class 文件方式
发表于: 2017-5-18 14:24 9532

[原创]破解 jar 包之直接修改 .class 文件方式

2017-5-18 14:24
9532

先讲一下常规jar包的破解流程

         1) 通过procmon监控相关软件,查看程序都访问了些啥。
         2) 用jd-gui反编译 jar 包,得到源码。
         3) 搜索关键字以定位。

这种定位方法只是千万种中的一种,根据不同软件的不同执行特性再具体实施不同的定位方案。

1) 用 dex2jar 将 JAR 包转成 Dex 文件。
         2) 再将 Dex 解出 Smali。
         3) 修改 Smali 代码
         4) 将修改后的文件重新打包回 Dex
         5) 最后转成 JAR 包,破解完成。

 

上面的方式基本已经可以解决破解JAR包的需求。但最近研究了一下直接修改.class 字节码的形式来实现修改程序流程的方法,总有会用得上的应用场景的。下面进入正题。

很多时候别人的 jar 包,反编译过来后是没办法直接用Eclipse创建Java 工程再编译通过的。各种引用及反编译带来的错误会让人抓狂。既然破解的关键点已经找到了,我们可以不可以直接修改.class 字节码以实现破解呢,答案是肯定的。

此处省略定位环节,不是本文重点。

 

1.      jclasslib 源码地址:e45K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6A6L8X3N6G2K9$3g2Y4k6h3I4Q4x3V1k6B7j5$3I4S2M7%4y4D9K9h3t1`.

2.      010 Editor 神器不多说

 

1.      The class file format

69eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8$3y4K6i4K6u0W2L8%4u0S2j5$3I4W2i4K6u0W2j5$3!0E0i4K6u0r3K9X3q4$3j5i4y4W2i4K6u0r3M7%4m8W2j5%4y4Q4x3V1k6B7N6X3#2K6i4K6u0r3M7$3f1%4i4K6u0r3K9s2c8E0L8q4)9J5c8X3A6$3L8i4y4Q4x3X3b7@1i4K6u0W2K9s2c8E0L8q4)9J5x3$3A6$3L8i4y4Q4x3X3b7@1i4K6u0W2y4R3`.`.

2.      中文版Class文件结构

fe7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3N6A6N6s2W2#2j5h3&6Q4x3X3g2U0L8$3#2Q4x3V1j5J5x3o6p5#2i4K6u0r3x3e0m8Q4x3V1j5I4y4#2)9J5c8X3A6$3L8g2)9J5k6r3y4D9j5i4y4K6i4K6u0V1K9h3&6K6N6s2u0#2j5%4c8A6L8$3&6Q4x3V1j5`.

 

假设通过反编译我们已经知道了关键代码的位置。

知道函数路径后,用jclasslib 打开 .class 文件定位的相关函数处。

点击右边的相关指令可以跳转到指令查询页面:

可以看到 aload_0 对应的字节码为 0x2a。以此类推,查询到我们需要的特征指令对应的字节码。

指令:

字节码

用 010 Editor 打开 .class 文件,会自动加载其文件格式的 .bt 格式解析文件


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/05/22
最新回复 (2)
雪    币: 7278
活跃值: (5356)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2017-5-18 16:49
0
雪    币: 14278
活跃值: (5301)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

JavaBite  改.class挺好用

2017-5-19 00:20
1
游客
登录 | 注册 方可回帖
返回