首页
社区
课程
招聘
[原创]修改dex字节码
发表于: 2025-12-1 23:23 7189

[原创]修改dex字节码

2025-12-1 23:23
7189

如果只是查看dex代码可以用MT管理器或jadx等等很多工具打开,但是有时候又会有需求想要修改dex中的代码并重打包,很多时候只是想改个返回值,直接返回turefalsereturn,或者固定值,这里使用前辈已经造好的轮子如下,是个010Editor模板:

ca9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2K6N6$3g2W2N6s2y4U0j5i4m8W2i4K6u0W2j5$3!0E0i4K6u0r3x3o6p5H3k6h3c8A6N6r3!0J5i4K6u0r3M7X3g2H3L8%4y4A6N6r3!0J5P5g2)9J5c8Y4c8W2L8i4m8D9j5i4c8W2M7#2)9J5c8X3k6A6L8r3g2Q4y4h3k6A6L8X3k6G2i4K6u0W2M7r3S2H3i4K6y4r3k6X3W2D9k6g2)9K6c8p5c8q4h3q4)9J5k6h3u0@1i4K6t1$3j5h3#2H3i4K6y4n7N6s2W2H3k6g2)9K6c8o6m8Q4x3U0k6S2L8i4m8Q4x3@1u0K6L8%4u0@1=

 

运行后是这样的:

 

比如我想改个返回值,需要先找到对应的类,再找到对应的方法,再找到方法方法对应的Opcode,以下是列举一些比较常用的反编译后的smali代码

 

比如上图中 “const/4 v0, 0x1”“const v0, 0x1”,在dex中的表现形式是不一样的,虽然都是返回1,如下图,

每个方法的前16个字节都是描述方法有几个寄存器,占用几个字节码等等,描述信息在如下注释

剩下的才是真正的方法的字节码

12 10 0F 00对应aaaaa方法

14 00 01 00 00 00 0F 00对应bbbbb方法

14 00 10 27 00 00 0F 00对应fffff方法

 

各种Opcode对照关系可以查看如下

960K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6v1k6i4y4#2M7@1k6J5k6h3E0W2i4K6u0r3M7$3#2S2L8r3W2Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3k6r3g2^5L8r3W2T1x3W2)9J5c8Y4y4J5j5#2)9J5c8X3#2S2K9h3&6Q4x3V1k6B7j5i4k6S2i4K6u0r3L8%4u0Y4i4K6u0r3K9X3k6Q4x3V1k6V1k6i4S2D9K9h3t1J5i4K6u0r3e0%4m8U0L8$3c8W2i4K6u0W2K9X3q4$3j5b7`.`.


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 3
支持
分享
最新回复 (4)
雪    币: 6421
活跃值: (5932)
能力值: ( LV5,RANK:76 )
在线值:
发帖
回帖
粉丝
2
感谢楼主分享,如果单纯的修改指令的话,ida跟gda这两个效果都挺不错的,楼主也可以试试
2025-12-2 15:25
0
雪    币: 144
活跃值: (1983)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
666
2025-12-4 01:36
0
雪    币: 227
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
666
2025-12-4 22:15
0
雪    币: 342
活跃值: (1044)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
其实用dexlib2 就有类似 asm 修改class的方法,
只不过修改dex方法,要注意每个方法的变量表 变成数组了,还要考虑16位的指令,我也研究了很久很久,才实现了指定方法前后加 hook
2025-12-8 15:23
0
游客
登录 | 注册 方可回帖
返回