IOS攻击者可以看到多少有关我的方法的信息?

时间:2019-11-28 11:22:29

标签: ios iphone security gdb

我知道,将GDB附加到应用程序的攻击者可以提取有关我的代码的许多信息。他还可以强制返回方法并修改应用程序的行为。无论如何,有些事情我还不了解。 如果我有这样的方法:

-(int)example_method :(int)parameter_1 :(int)parameter_2{

    int value_1=300;
    int value_2=1240445;
    int sub_result_1 = parameter_1*parameter_2;
    int sub_result_2 = parameter_1*value_1;
    int sub_result_3 = value_1*value_2;
    int result = sub_result_1+sub_result_2+sub_result_3;

    return result;
}

据我所知,GDB中的攻击者可以提取和操纵:

  1. 参数_1的值
  2. parameter_2的值
  3. 结果的价值

我的问题是,攻击者可以看到结果如何产生吗? 他可以在方法中看到这些行吗?

int value_1=300;
int value_2=1240445;
int sub_result_1 = parameter_1*parameter_2;
int sub_result_2 = parameter_1*value_1;
int sub_result_3 = value_1*value_2;

1 个答案:

答案 0 :(得分:1)

使用gdb的攻击者可以看到您的代码...至少在程序集级别

如果您的程序是用调试符号(-g)编译的,则可以将程序与其源代码相关联。

如果在没有它们的情况下编译程序,调试器仍将能够查看代码的汇编指令。请注意,汇编程序的级别很低,因此将缺少很多信息(变量名,高级源代码等)。但是有了一些汇编知识,就可以对二进制文件进行反向工程以查看执行了什么操作。

使用obfuscation techniques可以使这种逆向工程过程变得更加困难。


  

我的问题是,攻击者可以看到结果如何产生吗?他可以在方法中看到这些行吗?

汇编中没有变量的概念,只有寄存器。有时寄存器将与变量相关联,有时程序集与您编写的程序非常不同,尤其是在混淆中。

该算法必须在功能上完全相同,但是汇编语言实际上与高级语言不同,因此不要期望1-1匹配。

请注意,您的程序可以进行逆向工程,而无需确切知道使用哪个变量。根据程序的大小和复杂性,它可能是微不足道的,也可能是极其复杂的。

如果要在汇编级别查看包含程序的文件,可以使用objdump -d -S之类的命令。