如何反编译iOS应用程序?

ahm*_*hhh 10 decompiling deb ios

我想看看iOS应用程序的代码.

我下载的应用程序是.deb.

第一个问题:是否可以在iOS上安装.deb文件或者我下载了错误的文件?

解压缩.deb文件后,我得到了一些文件,包括.nib,.storyboard和其他一些文件.

我的主要问题是,如何反编译这些.nib文件?

我试图使用NibToXibConverter反编译这些文件,但我没有成功.

Sto*_*yan 16

回答你的第一个问题:

我认为你下载了错误的文件..deb适用于iOS的文件对于越狱社区而言并不适用于应用程序,我认为所有的Cydia内容都包含在内.deb.如果您的应用程序是专为越狱场景制作的,那么您可以尝试使用Cydia的自动安装功能在越狱设备上安装它.

回答你的主要问题:

这是关于反编译和修改iOS应用程序的一般信息(不是特定于笔尖,但您可能仍然觉得它很有用).

iOS应用程序在.ipa档案中分发,这是普通的zip档案.它们通常包含一个Mach-O文件形式的可执行文件,以及.plist声音,图像等资源 - 您在xcode项目中包含的每个资源.只能在越狱的iDevice上对可执行文件进行反编译,因为它特别针对当前设备进行了加密,并且解密二进制文件的魔术密钥在设备CPU内部被烧毁,据我所知,没有软件方式来读取该密钥.这里的加密系统称为FairPlay.

简单地说,解密该二进制文件的一种方法是将应用程序安装在越狱设备上,并使用可从Cydia下载的调试器(gdb)从命令行启动它.你必须在某个地方设置一个断点,当你的代码执行在断点处暂停时,你正在对设备ram进行内存转储 - 那就是你的解密bin.

因此,当您拥有解密的二进制文件时,您可以运行一个名为"class-dump"的工具,并获取已声明的类及其方法的信息(如果应用程序是使用Objective C编写的.一旦您了解此信息,您就可以更改使用"Cydia Subtstrate"又名"Mobile Substrate"从您的应用程序中使用的某个类中给出方法.事实上,这就是所有越狱iOS调整的方式.基本上你是挂钩一个方法调用,当调用该方法时,它会使用你的实现.此外,您的实现可以调用原始实现,如果您想要添加一些小代码,这非常有用.

我不确定Swift中是否可以使用这些东西,但是如果你正在处理像cordova,phonegap等那样的混合应用程序,那么你可以看到它的所有javascript源代码,因为它是作为资源保留在"ipa"文件.此外,如果你有一个越狱设备,你可以直接改变那个javascript代码,并找到应用程序在文件系统上的安装位置(通常/var/containers/Bundle/Application/uuid_for_your_app/).但是,我认为没有办法获得修补版本并重新分发它(如果我错了,请纠正我).

  • 写得很好,但每个设备的加密不太正确,请注意 IPA 可以下载到 iTunes,然后加载到多个设备。可执行文件使用 Apple 的密钥加密,并在加载时由嵌入式加密引擎解密以供执行。 (4认同)