无法反编译iOS银行应用程序

12

我使用Hopper逆向工具来反汇编iOS应用程序。对于大多数应用程序,它都可以很好地工作。

但是今天我突然想了解一个银行应用程序,所以我将该应用从越狱设备移动到我的Mac上,并尝试使用Hopper反汇编它,但它只给我一些没用的东西。

enter image description here

为什么会出现这种情况?这个银行应用程序的二进制文件是否被加密了?如果是,那我该如何解密呢?

他们具体是怎么混淆代码的?他们的代码与其他应用程序的代码有什么不同吗?

我使用iFunbox将应用程序的可执行文件从我的iPhone导出到我的Mac上。通过这种方式导出的所有应用程序在反汇编时没有问题。所以我认为iFunbox进行了DRM(数字版权管理)去除。只有这个特定的银行应用程序无法正常工作。

我甚至尝试过使用class dump,但它只给了我一个名为CDStructures.h的文件,并且里面什么也没有。


考虑到这是一款银行应用程序,代码可能以某种方式进行了混淆。 - user7107845
1
他们到底是如何混淆代码的?有没有办法查看实际的汇编指令?他们的代码与其他应用程序的代码有何不同?我甚至尝试了类转储,但只给了我一个名为CDStructures.h的文件。 - Jaffer Sheriff
1
有一些工具可以混淆方法名称,例如使用宏。他们也可以只使用C语言。不过,如果没有看到应用程序,就很难说了。 - Sulthan
2个回答

3
你需要移除iOS应用程序加密(称为FairPlay)。由于你的设备已越狱,所以你可以这样做。至少有一个工具可以完成此操作。
如果你不确定IPA是否已加密,可以使用以下命令:
otool -l BINARY | grep -A 4 LC_ENCRYPTION_INFO

请注意,在某些国家,拆卸可能是非法的。

我的回答有什么问题吗?我没有看到原始问题中有任何关于移除FairPlay的信息。 - John Tracid
我使用iFunbox将我的iPhone上的应用程序可执行文件传输到我的Mac。以这种方式导出的所有应用程序在反汇编时都没有问题。因此,我认为iFunbox可以去除DRM保护。只有这个特定的银行应用程序无法正常工作。 - Jaffer Sheriff
FairPlay似乎用于加密音频文件(MP4),而不是应用程序。 - Jack G.
1
@JackG,你从AppStore安装的所有IPA文件都是加密的。如果不移除FairPlay,你无法反汇编应用程序。 - John Tracid
@JohnTracid 你说得对,我在二进制文件上运行了otool -l BINARY | grep -A 4 LC_ENCRYPTION_INFO命令,它给了我以下信息: cmd LC_ENCRYPTION_INFO_64 cmdsize 24 cryptoff 16384 cryptsize 5619712 cryptid 1。请注意,cryptid是非正数,因此应用程序已加密,我必须解密可执行文件。 更多信息请参见http://iphonedevwiki.net/index.php/Crack_prevention - Jaffer Sheriff

3
在2017年的RSA展会上,我遇到了一家公司,他们有一款可以混淆iOS和Android代码的产品。他们演示了一个场景,一个网页可以在用户不知情的情况下越狱一部手机并且修改应用程序,使其向第三方发送银行凭证,并且这个应用程序看起来对用户来说仍然是工作正常的。这足以引起足够的注意,至少市场上已经有两种可供选择的解决方案(根据快速谷歌搜索得到的是Arxan和Preemptive)。我对这种技术的复杂度感到惊讶,但显然这是值得为高价值和高敏感性公司防范的攻击向量之一...像一个银行应用程序。如果他们正在这么做的话,我一点也不感到惊讶。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接