使用 0xED 编辑 Mach-O x86_64 二进制文件会导致应用程序崩溃

逆向工程 男子气概 补丁反转
2021-07-10 11:29:00

我在 Xcode 中创建了一个简单的 Cocoa 应用程序(Mac 64 位),并在其中创建了一个字符串对象,然后在 NSLog 语句中输出字符串的内容。

在此处输入图片说明

然后我决定看看我是否可以修改应用程序的 .app 目录中的二进制文件 (exe) 的内容。我用 0xED 改变,这是我的字符串。to这是我的新字符串。 我通过在 0xED 编辑器的右侧部分键入词来做到这一点

在此处输入图片说明

最后,我保存了文件,然后尝试启动它,但它似乎崩溃了。崩溃报告对我来说似乎有些神秘,所以我不确定应用程序崩溃的原因。

1个回答

之前的代码This is my string依赖于之后的数据(以及可能的代码)的地址/偏移量This is my string当您插入 string 时new,您实际上将代码/数据This is my string向右移动了 4 个字节。当之前的代码This is my string尝试访问该内容时,由于位置已移动,它访问了错误的内容。