Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从解密的iOS应用程序可执行文件中查找常量_Ios_Security_Reverse Engineering_Dump_Decompiling - Fatal编程技术网

从解密的iOS应用程序可执行文件中查找常量

从解密的iOS应用程序可执行文件中查找常量,ios,security,reverse-engineering,dump,decompiling,Ios,Security,Reverse Engineering,Dump,Decompiling,我试图从iOS应用程序内部找到一个常量(类似于秘密令牌),以便使用未记录的web API构建一个应用程序(顺便说一句,我没有参与非法活动)。到目前为止,我的Mac上有解密的应用程序可执行文件(越狱+SSH+将解密的可执行文件转储为文件)。我可以使用strings命令获取可读的字符串列表,并且可以使用class dump工具()获取类的接口定义(头)列表。虽然这让我了解了应用程序的内部工作原理,但我仍然找不到我要搜索的内容:我要寻找的常量。strings命令转储中有数千个字符串定义。是否有任何方法

我试图从iOS应用程序内部找到一个常量(类似于秘密令牌),以便使用未记录的web API构建一个应用程序(顺便说一句,我没有参与非法活动)。到目前为止,我的Mac上有解密的应用程序可执行文件(越狱+SSH+将解密的可执行文件转储为文件)。我可以使用strings命令获取可读的字符串列表,并且可以使用class dump工具()获取类的接口定义(头)列表。虽然这让我了解了应用程序的内部工作原理,但我仍然找不到我要搜索的内容:我要寻找的常量。strings命令转储中有数千个字符串定义。是否有任何方法可以转储字符串,使我可以将NSString常量的名称与其值一起转储。我不需要这些方法的实现细节,我知道它是经过编译的,我能得到的只是汇编代码。但是,如果我可以得到字符串常量的名称(在字符串转储和类转储中)以及字符串值(在字符串转储中),我认为可能有一种方法可以将它们关联在一起

谢谢


可以。

不幸的是,没有,除非有一些我不知道的黑魔法工具,或者除非可执行文件是用调试符号构建的(可能不是这样)。如果存在调试符号,您应该能够通过调试器运行它并获取变量名

在编译时,编译器去掉常量的名称,并用其在内存中的位置地址(通常与可执行文件中的字节偏移量相同)替换代码中出现的所有常量。因此,常量的原始变量命名丢失,只留下值。因此,在任何地方都找不到常量的原因

为了找到秘密令牌,我会做一些事情,捕获应用程序创建的所有数据流量,然后在二进制文件中查找相同的模式。如果令牌确实在那里,并且它没有以某种方式被混淆,那么至少这会大大缩小它的范围


祝你好运!RE可能非常有价值,但有时它真的很糟糕。

不幸的是,没有,除非有我不知道的黑魔法工具,或者除非可执行文件是用调试符号构建的(可能不是这样)。如果存在调试符号,您应该能够通过调试器运行它并获取变量名

在编译时,编译器去掉常量的名称,并用其在内存中的位置地址(通常与可执行文件中的字节偏移量相同)替换代码中出现的所有常量。因此,常量的原始变量命名丢失,只留下值。因此,在任何地方都找不到常量的原因

为了找到秘密令牌,我会做一些事情,捕获应用程序创建的所有数据流量,然后在二进制文件中查找相同的模式。如果令牌确实在那里,并且它没有以某种方式被混淆,那么至少这会大大缩小它的范围


祝你好运!RE可能非常有价值,但有时它真的很糟糕。

令牌(必须)在可执行文件中的某个地方,因为API调用包含一个签名,该签名与一些其他变量散列(它使用amazon aws服务,但不幸的是,这只是工作的一部分)。如果我不能得到常量名,我至少可以得到用哪个变量调用的objc方法(即使我不知道名称),这就足够了,因为我专注于一个我知道名称的特定方法(我可以在头转储后看到该方法),从逻辑上讲,我应该知道何时使用正确的工具调用它。@canpoyrazoğlu是的,令牌在可执行文件中的某个地方。您正在寻找使用它的方法名,这是正确的。基于您的问题和对Steve Nygard的类转储的引用,我假设您有一个所有方法名称的列表?是的,我(相信)我将它们都作为目标c类头。现在,我正在使用cycript ana inalyzer连接到工作应用程序以查找令牌。@canpoyrazoğlu Sweet!这听起来很有趣@canpoyrazoğlu太棒了!感谢后续工作,令牌(必须)在可执行文件中的某个位置,因为API调用包含一个签名,该签名与一些其他变量散列(它正在使用amazon aws服务,但不幸的是,这只是工作的一部分)。如果我不能得到常量名,我至少可以得到用哪个变量调用的objc方法(即使我不知道名称),这就足够了,因为我专注于一个我知道名称的特定方法(我可以在头转储后看到该方法),从逻辑上讲,我应该知道何时使用正确的工具调用它。@canpoyrazoğlu是的,令牌在可执行文件中的某个地方。您正在寻找使用它的方法名,这是正确的。基于您的问题和对Steve Nygard的类转储的引用,我假设您有一个所有方法名称的列表?是的,我(相信)我将它们都作为目标c类头。现在,我正在使用cycript ana inalyzer连接到工作应用程序以查找令牌。@canpoyrazoğlu Sweet!这听起来很有趣@canpoyrazoğlu太棒了!谢谢你的跟进