安卓逆向中会遇到的问题

1:使用jadx-gui逆向代码后会有部分代码出现空代码的问题。


1.1 例如逆向xunlei的apk时就会出现。位置如下:

Util.PrepareSecurefiles(context, zipFile);

该调用方法的方法体,逆向后变成如下代码格式

/* JADX DEBUG: Multi-variable search result rejected for r21v17, resolved type: java.nio.channels.FileChannel */
    /* JADX WARN: Multi-variable type inference failed */
    /* JADX WARNING: Code restructure failed: missing block: B:162:0x0518, code lost:
        r0 = e;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:163:0x0519, code lost:
        r5 = r28;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:366:0x0c64, code lost:
        r0 = th;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:367:0x0c65, code lost:
        r5 = r28;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:373:0x0c7e, code lost:
        r0 = th;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:374:0x0c7f, code lost:
        r5 = r28;
        r6 = r3;
        r1 = r7;
        r3 = r9;
        r22 = r10;
        r20 = r12;
        r21 = r13;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:379:0x0c96, code lost:
        r0 = th;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:380:0x0c97, code lost:
        r5 = r28;
        r6 = r3;
        r1 = r7;
        r3 = r9;
        r20 = r12;
        r21 = r13;
        r7 = r2;
        r2 = r8;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:381:0x0ca3, code lost:
        r0 = e;
     */
    /* JADX WARNING: Code restructure failed: missing block: B:382:0x0ca4, code lost:
        r5 = r28;
        r6 = r3;
        r1 = r7;
        r3 = r9;
     */
    /* JADX WARNING: Failed to process nested try/catch */
    /* JADX WARNING: Removed duplicated region for block: B:366:0x0c64 A[ExcHandler: all (th java.lang.Throwable), PHI: r22 r23 r24 r25 
      PHI: (r22v10 java.nio.channels.FileLock) = (r22v11 java.nio.channels.FileLock), (r22v11 java.nio.channels.FileLock), (r22v20 java.nio.channels.FileLock) binds: [B:186:0x0577, B:187:?, B:150:0x03a8] A[DONT_GENERATE, DONT_INLINE]
      PHI: (r23v3 java.lang.String) = (r23v4 java.lang.String), (r23v4 java.lang.String), (r23v10 java.lang.String) binds: [B:186:0x0577, B:187:?, B:150:0x03a8] A[DONT_GENERATE, DONT_INLINE]
      PHI: (r24v3 java.lang.String) = (r24v4 java.lang.String), (r24v4 java.lang.String), (r24v14 java.lang.String) binds: [B:186:0x0577, B:187:?, B:150:0x03a8] A[DONT_GENERATE, DONT_INLINE]
      PHI: (r25v3 java.lang.String) = (r25v4 java.lang.String), (r25v4 java.lang.String), (r25v13 java.lang.String) binds: [B:186:0x0577, B:187:?, B:150:0x03a8] A[DONT_GENERATE, DONT_INLINE], Splitter:B:150:0x03a8] */
    /* JADX WARNING: Removed duplicated region for block: B:373:0x0c7e A[ExcHandler: all (th java.lang.Throwable), Splitter:B:10:0x009c] */
    /* JADX WARNING: Removed duplicated region for block: B:381:0x0ca3 A[ExcHandler: Exception (e java.lang.Exception), Splitter:B:8:0x0098] */
    /* JADX WARNING: Removed duplicated region for block: B:399:0x0cfe  */
    /* JADX WARNING: Removed duplicated region for block: B:404:0x0d5c  */
    /* JADX WARNING: Removed duplicated region for block: B:409:0x0dbc  */
    /* JADX WARNING: Removed duplicated region for block: B:418:0x0e21 A[SYNTHETIC, Splitter:B:418:0x0e21] */
    /* JADX WARNING: Removed duplicated region for block: B:436:0x0e45 A[SYNTHETIC, Splitter:B:436:0x0e45] */
    /* JADX WARNING: Removed duplicated region for block: B:464:0x0e78 A[SYNTHETIC, Splitter:B:464:0x0e78] */
    /* JADX WARNING: Removed duplicated region for block: B:486:0x0ea5 A[SYNTHETIC, Splitter:B:486:0x0ea5] */
    /* JADX WARNING: Removed duplicated region for block: B:497:0x0ecc  */
    /* JADX WARNING: Removed duplicated region for block: B:502:0x0f2a  */
    /* JADX WARNING: Removed duplicated region for block: B:507:0x0f8a  */
    /* JADX WARNING: Removed duplicated region for block: B:516:0x0fef A[SYNTHETIC, Splitter:B:516:0x0fef] */
    /* JADX WARNING: Removed duplicated region for block: B:534:0x1013 A[SYNTHETIC, Splitter:B:534:0x1013] */
    /* JADX WARNING: Removed duplicated region for block: B:562:0x1046 A[SYNTHETIC, Splitter:B:562:0x1046] */
    /* JADX WARNING: Removed duplicated region for block: B:584:0x1073 A[SYNTHETIC, Splitter:B:584:0x1073] */
    /* JADX WARNING: Removed duplicated region for block: B:617:? A[ORIG_RETURN, RETURN, SYNTHETIC] */
    /* Code decompiled incorrectly, please refer to instructions dump. */
    public static int PrepareSecurefiles(android.content.Context r27, java.util.zip.ZipFile r28) {
        /*
        // Method dump skipped, instructions count: 4226
        */
        throw new UnsupportedOperationException("Method not decompiled: com.wrapper.proxyapplication.Util.PrepareSecurefiles(android.content.Context, java.util.zip.ZipFile):int");
    }

1.2 解决方案

上述问题的形成原因是什么及解决方案是什么目前还没研究到。有经验的朋友可以分享下。


2:原来的apk包解压缩后AndroidManifest.xml是二进制的无法进行修改,使用AXMLPrinter2.jar恢复成可读的,并修改后,怎么样才能再恢复到apk里并保证可用?


答:

 需要准备以下3个jar包:

1. AXMLEditor2.jar,对二进制文件AndroidManifest.xml进行修改。

2. AXMLPrinter2.jar,输出二进制文件AndroidManifest.xml里的内容。方便我们在用AXMLEditor2.jar修改AndroidManifest.xml后,查看其内容。

3. signapk.jar(签名文件:testkey.pk8,testkey.x509.pem),对apk重新签名打包

具体使用方式参考链接,  AXMLEditor源码位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值