是否可以直接用mobsf分析dex文件?

Is it possible to analyze dex file directly with mobsf?

我有几个dex文件需要在解包apk文件后由mobsf进行静态分析,因为在解包之前无法访问核心代码。

我尝试过的: 添加第 3 行并将第 4 行从 glob_pattern = app_dir + *.dex' 更改为 glob_pattern = ddex_dir

def get_dex_files(app_dir):
    """Get all Dex Files for analysis."""
    ddex_dir = "C:/path/Sample/dexfilepath/"
    glob_pattern = app_dir + '*.dex'
    return glob.glob(glob_pattern)

我知道这是一种幼稚的方法,但我真的是渗透测试的新手。

部分错误代码:

[INFO] 08/Jan/2021 11:49:08 - Decompiling to Java with jadx
[INFO] 08/Jan/2021 11:49:30 - DEX -> SMALI
[INFO] 08/Jan/2021 11:49:30 - Converting 10046944_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 10152568_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 10247328_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 10286360_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 10453796_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 1272952_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 1349780_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 13539468_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:30 - Converting 3046356_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:31 - Converting 3261832_dexfile.dex to Smali Code
[INFO] 08/Jan/2021 11:49:31 - Converting 3261832_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:31 - Converting 359592_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:31 - Converting 5068284_dexfile_execute.dex to Smali Code
[INFO] 08/Jan/2021 11:49:31 - Converting 8294920_dexfile.dex to Smali Code
Lcom/qinggan/ftp/library/ftp/QGFTPServer$MyFtplet;->onConnect(Lorg/apache/ftpserver/ftplet/FtpSession;)Lorg/apache/ftpserver/ftplet/FtpletResult;: Invalid debug offset
Lcom/qinggan/ftp/library/socket/message/QGP2PMessageBase;->obtainHead(I)Ljava/lang/String;: Invalid debug offset
Lcom/qinggan/ftp/library/socket/message/QGP2PMessageServer;->run()V: Invalid debug offset
Lcom/qinggan/ftp/library/socket/message/QGP2PMessageClient;->run()V: Invalid debug offset
Lcom/qinggan/keepalive/GuardService;->getServiceIntent()Landroid/content/Intent;: Invalid debug offset
Lcom/qinggan/ftp/library/socket/message/QGP2PMessageClient;->closeSelf()V: Invalid debug offset
[INFO] 08/Jan/2021 11:49:32 - Converting 8294920_dexfile_execute.dex to Smali CodeLcom/qinggan/app/arielapp/ArielApplication;->insert(Ljava/util/List;)V: Invalid debug offset
Lcom/qinggan/ftp/library/ftp/QGFTPClient;->run()V: Invalid debug offset
Lcom/qinggan/app/arielapp/ArielApplication;->clearUserCache()V: Invalid debug offset
Lcom/qinggan/ftp/library/socket/message/QGP2PMessageServer;->dispatchMessage(Lcom/qinggan/ftp/library/socket/message/QGP2PMessage;)V: Invalid debug offset

Lcom/hp/hpl/sparta/DefaultLog;->error(Ljava/lang/String;Ljava/lang/String;I)V: Invalid debug offset
Lcom/qinggan/app/arielapp/ArielApplication;->onConnectStatusChange(Z)V: Invalid debug offset

我会尝试使用 dex2jar 工具来达到这个目的。将您的 apk 转换为 jar,然后使用 MobSF 对其进行分析。 MobSF 应该使用 jar 文件,因为这是一个存档。我不确定它是否会表现出稳定的行为,但它可以是一个选项。

据我所知,MobSF 的源代码中也有这个包,所以你是否尝试过不做任何更改直接将这个 APK 加载到 MobSF?我认为它可能会起作用。

您也可以使用JADX 工具进行手动源代码分析。它应该从 DEX 二进制文件恢复源代码。

另请注意 this issue. MobSF developer suggests to use enjarify instead of dex2jar (2nd answer) and sends the link,其中说明了如何操作。

这是我挖掘后的工作流程的更完善的版本:.dex =dex2jar=> .jar =jadx=> .java 然后可以复制粘贴到生成的 mobsf 下的 JAVA_Source目录。

我能够生成功能性的 .java 源代码,方法是使用 modified 版本的 dex2jar 将 dexes 反编译为 jar,然后使用 JADX 读取使用 d2j 反编译的 jar .