无法在 mac 可执行文件中找到硬编码字符串

逆向工程 补丁反转 字符串 料斗 苹果系统
2021-06-19 09:26:57

我知道在这个特定的应用程序中使用了一个名为“激活您的订阅”的字符串。但是我无法从它的可执行文件中找到这个字符串。我尝试strings myapp并使用 Hopper 反汇编器搜索了相同的字符串,但它都没有找到该字符串的位置。

所以我的问题是我在这里错过了什么,这是这些应用程序使用的某种混淆吗?

此特定 mac 应用程序中使用“激活您的订阅”字符串的屏幕图像

苹果应用

在 Hopper 中搜索“Activate”字符串后

料斗

1个回答

一些二进制文件将字符串隐藏在 base64 上,使用基本加密算法 rc4 甚至使用 xor 只是为了避免您想要实现的目标。根据二进制文件所有者的设计,您可以在其中找到此类技术。

例如,而不是这样做

const char *msg = "Good morning";

你可以做

const char *msg = "R29vZCBtb3JtaW5nCg=="; /* base64 of 'Good morning' */

每次使用 msg 时,您只需调用 base64 解码函数,这就是在非常基本的环境中的工作方式。您可以使用 RC4、Xor 或任何其他加密算法来隐藏字符串,但请记住,有经验的人会找到解码字符串的方法

printf("My message is %s\n", decode64(msg));