是否有一种方法可以找出在PC Android模拟器上运行APK文件时编写的文件



我的问题是处理一种恶意软件.APK文件。.APK被包装到称为虚拟应用程序的插件框架中。因此,当您运行.APK时,它将首先在其资产中解开另一个加密的.APK文件。它用AES解密,但关键一代被混淆了。为了简化它,我想在PC模拟器上运行它,并尝试找出其未包装的.APK文件,有没有办法做到这一点?

资产中解密文件的代码为:

    localObject2 = paramActivity.getFilesDir().getAbsolutePath();
    assertsToSd((String)localObject2, paramActivity);
    localObject3 = (String)localObject2 + File.separator + aname;
    localObject1 = localObject3;
    String str1 = (String)localObject2 + File.separator + 0 + aname;
    localObject2 = (String)localObject2 + File.separator + (0 + 1) + aname;
    String str2 = create(paramActivity).substring(0, 16);
    if (i == 0)
    {
      Catalog.decFile((String)localObject3, str1, str2);
      new File((String)localObject3).delete();
      Tools.downloadFile(new File(str1), new File((String)localObject2));
      new File(str1).delete();
    }

解密文件功能:

    public static boolean decFile(String sourceFile, String destFile, String speed) {
    File s = new File(sourceFile);
    File d = new File(destFile);
    if (!s.exists()) {
        return false;
    }
    if (d.exists()) {
        d.delete();
    }
    try {
        d.createNewFile();
        return c.decrypt(speed, s, d);
    } catch (Exception ex) {
        ex.printStackTrace();
        return false;
    }
}

在APK(例如APK(内运行APK的目的是可以对其实际代码进行加密并通过反病毒软件检测到它,并且它可以在内部远程安装任何其他APK,而无需通知用户。

>

最后,我通过安装Android X86虚拟机解决了这个问题,并在其中运行应用程序。然后,我将VMDK文件安装在Linux中并复制提取的.APK文件。

顺便说一句,原始.APK通过AES解密其资产.APK文件,该键是通过使用第一个包装签名的第一个字节来生成的,并使用自定义的MD5生成AES的键,并在解密后,它运行它在VirtualApp框架内部。

此外,如果您多次从网站下载.APK,它将为您提供不同签名的不同.APK文件。此绕过病毒扫描。

最新更新