首页
社区
课程
招聘
[求助] 关于Anroid hook art
发表于: 2017-5-13 17:00 2986

[求助] 关于Anroid hook art

2017-5-13 17:00
2986

小弟新手, 在开发app的时候,遇到日志:

Failed to open dex files from /data/app/myapp/base.apk because: Failure to verify dex file '/data/app/myapp/base.apk': Duplicate interface: myinterface

经过查询代码,发现是来自这个地方的日志

c88K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3q4F1k6s2u0G2K9h3c8^5M7X3g2X3i4K6u0W2j5$3!0E0i4K6u0r3y4#2)9J5k6e0q4Q4x3X3f1I4i4K6g2X3M7U0k6Q4x3V1k6^5M7X3g2X3i4K6u0r3j5i4u0@1i4K6u0r3M7Y4g2F1N6r3W2E0k6g2)9J5c8X3c8W2P5q4)9#2k6X3k6A6L8r3g2Q4y4h3k6$3k6i4u0A6k6X3W2W2M7W2)9J5k6h3y4U0i4K6t1K6x3U0l9@1x3R3`.`.


2037    for (uint32_t i = 1; i < size; i++) {
2038      uint32_t idx1 = interfaces->GetTypeItem(i).type_idx_;
2039      for (uint32_t j =0; j < i; j++) {
2040        uint32_t idx2 = interfaces->GetTypeItem(j).type_idx_;
2041        if (UNLIKELY(idx1 == idx2)) {
2042          ErrorStringPrintf("Duplicate interface: '%s'", dex_file_->StringByTypeIdx(idx1));
2043          return false;
2044        }
2045      }
2046    }

因为日志只打出来了idx1 的信息, 但我同时也需要idx2的信息 来确定到底是哪两个接口重复了。

现在有两种解决方法:
1,编译android 代码 ,修改这个地方的逻辑,比如变成
ErrorStringPrintf("Duplicate interface: '%s', '%s'", dex_file_->StringByTypeIdx(idx1), );
但是这种方法,首先要下载android 源码,并且要编译,耗时不可谓不长,并且硬件条件有限,没有多余的200G linux空间来做

2,用Hook 或者调试
如果可以,这个方案比较能接受
因此我想问的是,这个方案2可行么,可行的话?


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回