我使用漏斗反汇编程序来反汇编iOS应用程序.它适用于大多数应用程序.
然而今天我只是好奇地了解一个银行应用程序,所以我试图拆解它.所以,我将应用程序从我的越狱设备移动到我的mac,当我尝试用漏斗拆卸它时,它只给了我一些无用的东西.
为什么会这样?此银行应用程序的二进制文件是否加密?如果是,那我该怎么解密呢?
他们如何模糊代码?他们的代码与其他应用程序代码有何不同?
我使用iFunbox从我的iPhone到我的mac获取应用程序的可执行文件.以这种方式导出的所有应用程序在拆卸时都没有问题.所以我认为iFunbox会删除DRM.只有这个特定的银行应用程序不起作用.
我甚至尝试过类转储,它只给了我一个名为CDStructures.h的文件.
我使用Hopper Disassembler来拆卸它UIKit.framework.我通常选择二进制文件,/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/UIKit但由于我使用Xcode 9及更高版本,我无法找到二进制文件来进行反汇编.Xcode 8 UIKit.framework具有二进制文件,但Xcode 9 UIKit.framework只有一个UIKit.tbd文件.
如何在最近的Xcode中实现反汇编?
我知道一些 C 和一点汇编,想开始学习逆向工程,所以我下载了适用于 Mac 的 Hopper Disassembler 试用版。我创建了一个超级基本的 C 程序:
int main() {
int a = 5;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并使用 -g 标志编译它(因为我之前看到过这个并且不确定它是否重要):
gcc -g simple.c
Run Code Online (Sandbox Code Playgroud)
然后我a.out在 Hopper Disassembler 中打开文件并点击伪代码按钮,它给了我:
int _main() {
rax = 0x0;
var_4 = 0x0;
var_8 = 0x5;
rsp = rsp + 0x8;
rbp = stack[2047];
return 0x0;
}
Run Code Online (Sandbox Code Playgroud)
我在这里理解的唯一一行是将变量设置为0x5. rsp = rsp + 0x8;对于这样一个简单的程序,我无法理解所有这些附加行的用途(例如)。有人愿意向我解释这个吗?
此外,如果有人知道逆向工程介绍的良好来源/教程,那也会非常有帮助。谢谢。
Hopper 反汇编器如何理解函数的名称?
例如,我有一个名为 function() 的简单 Swift 函数,在使用该函数反汇编可执行文件后,Hopper 向我显示它的损坏名称是 __T04file8functionyy。我可以在可执行文件中找到这些符号的位置,但是我找不到它是如何将函数的地址与其名称映射的。
hopper ×4
disassembly ×2
assembly ×1
c ×1
ida ×1
ios ×1
pseudocode ×1
swift ×1
x86 ×1
xcode9 ×1