12下一页
返回列表 发新帖

Dexlib2修改Dex常量池例子.

[复制链接]

39

主题

184

回帖

807

积分

高中生

Rank: 4

金币
151
好评
9
信誉
100
发表于 2023-9-23 19:13:01 来自手机  | 显示全部楼层 | 阅读模式  来自 山东
本帖最后由 Armadill0 于 2023-9-23 19:14 编辑

.........,不知道说什么,不喜勿喷.
赏我点金币吧!
没有调用例子,因为我觉得应该没有人不会实例化吧............
额,刚入论坛不知道怎么加附件......所以直接把代码扔这里把?
  1. //前言,你拿去干嘛倒是无所谓.............
  2. //该懂得都懂了把?
  3. //提示,改的是常量的值.

  4. import java.io.*;
  5. import java.util.*;
  6. import org.jf.dexlib.*;
  7. import org.jf.dexlib.Code.*;
  8. import org.jf.dexlib.Util.*;
  9. import org.jf.util.*;

  10. public class Dexlib
  11. {
  12.         private DexFile dex;
  13.         private List<ClassDefItem> classes;
  14.         private ArrayList<ClassDataItem.EncodedMethod> methods;
  15.         private ArrayList<StringIdItem> stringIds;
  16.         private org.jf.dexlib.CodeItem code;
  17.         private List<Integer> showListOffsets;
  18.         //构造函数
  19.         public static byte[] toByteArray(InputStream in) throws IOException
  20.         {
  21.                 ByteArrayOutputStream out = new ByteArrayOutputStream();
  22.                 byte[] buffer = new byte[1024 * 4];
  23.                 int n = 0;
  24.                 while ((n = in.read(buffer)) != -1)
  25.                 {
  26.                         out.write(buffer, 0, n);
  27.                 }
  28.                 return out.toByteArray();
  29.         }
  30.         //修改常量池的
  31.         public void StringReplace(String old, String news) throws IOException
  32.         {
  33.                 List<String> s = new ArrayList<String>();
  34.                 read(s);
  35.                 for (int i =0;i < s.size();i += 1)
  36.                 {
  37.                         if (s.get(i).equals(old))
  38.                                 s.set(i, news);
  39.                 }
  40.                 String[] a=new String[s.size()];
  41.                 for (int i=0;i < s.size();i++)
  42.                 {
  43.                         a[i] = s.get(i).toString();
  44.                 }
  45.                 write(a);
  46.         }
  47.         //保存dex的三个监听事件.....
  48.         public interface SaveDexListener
  49.         {
  50.                 public void onSuccess();
  51.                 public void onProgress(int size, int progress);
  52.                 public void onFailed(Exception e);
  53.         }
  54.         //这里是Dex的修改和保存操作,有三个Listener.
  55.         public void save(File outfile, SaveDexListener callback)
  56.         {
  57.                 try
  58.                 {
  59.                         DexFile dex2=new DexFile();
  60.                         IndexedSection<ClassDefItem> classes=dex.ClassDefsSection;
  61.                         for (int i=0;i < classes.getItems().size();i++)
  62.                         {
  63.                                 classes.getItems().get(i).internClassDefItem(dex2);
  64.                                 callback.onProgress(classes.getItems().size(), i);
  65.                         }
  66.                         dex2.setSortAllItems(true);
  67.                         dex2.place();
  68.                         byte[] buf=new byte[dex2.getFileSize()];
  69.                         ByteArrayAnnotatedOutput out=new ByteArrayAnnotatedOutput(buf);
  70.                         dex2.writeTo(out);
  71.                         DexFile.calcSignature(buf);
  72.                         DexFile.calcChecksum(buf);
  73.                         new FileOutputStream(outfile).write(buf);
  74.                 }
  75.                 catch (Exception e)
  76.                 {
  77.                         e.printStackTrace();
  78.                         callback.onFailed(e);
  79.                 }
  80.                 callback.onSuccess();
  81.         }
  82. }
复制代码

回复

使用道具 举报

372

主题

1万

回帖

3万

积分

博士后

       

Rank: 8Rank: 8

金币
3329
好评
175
信誉
118
发表于 2023-9-23 19:19:26 来自手机  | 显示全部楼层  来自 广东
   抱歉原谅我看不懂这是什么东西



  
回复

使用道具 举报

39

主题

184

回帖

807

积分

高中生

Rank: 4

金币
151
好评
9
信誉
100
发表于 2023-9-23 19:22:26 来自手机  | 显示全部楼层  来自 山东
Java嘛,修改Dex的常量池,顾名思义就是这玩意

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

28

主题

6648

回帖

1万

积分

博士生

百川

Rank: 7Rank: 7Rank: 7

金币
8818
好评
1
信誉
150

MT论坛新人考神MT论坛帅哥

发表于 2023-9-23 19:52:03 来自手机  | 显示全部楼层  来自 四川
修改了有什么用,Java知道
回复

使用道具 举报

22

主题

6592

回帖

2万

积分

博士后

超级至尊VIP

Rank: 8Rank: 8

金币
6092
好评
6
信誉
99

考神MT论坛新人MT论坛帅哥MT论坛最佳新人MT论坛活跃会员挂机大佬

发表于 2023-9-23 19:53:35 来自手机  | 显示全部楼层  来自 甘肃
感谢分享
回复

使用道具 举报

39

主题

184

回帖

807

积分

高中生

Rank: 4

金币
151
好评
9
信誉
100
发表于 2023-9-23 19:55:58 来自手机  | 显示全部楼层  来自 山东
嘶...........我写注册机用的
回复

使用道具 举报

35

主题

776

回帖

2931

积分

禁止访问

金币
161
好评
12
信誉
97

MT论坛新人考神MT论坛帅哥

发表于 2023-9-23 20:30:25 来自手机  | 显示全部楼层  来自 江西
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

39

主题

184

回帖

807

积分

高中生

Rank: 4

金币
151
好评
9
信誉
100
发表于 2023-9-23 20:43:56 来自手机  | 显示全部楼层  来自 山东
白珩. 发表于 2023-9-23 20:30
这玩意有大用

大牛能不能给我那个iapp修复的源码
回复

使用道具 举报

21

主题

4069

回帖

7762

积分

硕士生

Rank: 6Rank: 6

金币
662
好评
2
信誉
84
发表于 2023-9-23 20:45:21 来自手机  | 显示全部楼层  来自 河南
支持分享的朋友,谢谢
回复

使用道具 举报

35

主题

776

回帖

2931

积分

禁止访问

金币
161
好评
12
信誉
97

MT论坛新人考神MT论坛帅哥

发表于 2023-9-23 20:47:50 来自手机  | 显示全部楼层  来自 江西
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

35

主题

6645

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
403
好评
9
信誉
125

MT论坛帅哥MT论坛新人考神MT论坛最佳新人

发表于 2023-9-23 21:45:50 来自手机  | 显示全部楼层  来自 山东
路过看看
回复

使用道具 举报

35

主题

6645

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
403
好评
9
信誉
125

MT论坛帅哥MT论坛新人考神MT论坛最佳新人

发表于 2023-9-23 21:46:15 来自手机  | 显示全部楼层  来自 山东
路过看看
回复

使用道具 举报

4

主题

6254

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
3952
好评
5
信誉
96

考神MT论坛帅哥MT论坛新人

发表于 2023-9-23 22:23:28 来自手机  | 显示全部楼层  来自 江苏
让我康康
回复

使用道具 举报

24

主题

6184

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2658
好评
12
信誉
384

考神

发表于 2023-9-28 20:52:20 | 显示全部楼层  来自 香港
感谢分享
回复

使用道具 举报

8

主题

3773

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4629
好评
8
信誉
124

MT论坛最佳新人考神

发表于 2023-9-30 10:30:11 来自手机  | 显示全部楼层  来自 广东
路过看看,学习
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表