Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
对十六进制二进制补丁程序macOSX进行编码_C_Xcode_Macos_Cocoa_Offset - Fatal编程技术网

对十六进制二进制补丁程序macOSX进行编码

对十六进制二进制补丁程序macOSX进行编码,c,xcode,macos,cocoa,offset,C,Xcode,Macos,Cocoa,Offset,我的问题如下 我对编程非常陌生,但我非常希望能够为我的应用程序创建一个补丁程序,以防我需要编辑一组都有相同错误的应用程序 我需要的是构建一个命令行实用程序或cocoa应用程序,该应用程序将打开一个二进制文件,在其中搜索十六进制字符串,然后用更新版本替换该字符串,然后保存文件并退出 现在,我希望能为自己创建一个小cocoa应用程序,例如打开一个.app导航到二进制文件打开它,执行搜索和替换功能并保存结果 这将是额外的方便更新文件,我已经发送给其他人,因为他们可以只修补他们的旧版本与此工具和改进将得

我的问题如下

我对编程非常陌生,但我非常希望能够为我的应用程序创建一个补丁程序,以防我需要编辑一组都有相同错误的应用程序

我需要的是构建一个命令行实用程序或cocoa应用程序,该应用程序将打开一个二进制文件,在其中搜索十六进制字符串,然后用更新版本替换该字符串,然后保存文件并退出

现在,我希望能为自己创建一个小cocoa应用程序,例如打开一个.app导航到二进制文件打开它,执行搜索和替换功能并保存结果

这将是额外的方便更新文件,我已经发送给其他人,因为他们可以只修补他们的旧版本与此工具和改进将得到实施

同样重要的是,“补丁程序”不包括资源中的原始二进制文件,因此补丁程序非常小。随着我的项目变得越来越大,我当然不想发送大而笨重的补丁

因此,基本上,如果有人能给我概述一下我如何才能得到我需要的东西,我将非常感激

我将使用MacOSX10.8.4和最新的开发工具/xcode等

这似乎是一个很容易的概念,我相信它很容易做到。我只是不知道怎么做,如果有人能帮我,请把你认为有帮助的东西贴出来,就像我能得到的任何信息一样:)

非常感谢

编辑:-

基本上,我希望补丁有一个十六进制值字符串

B0 01 c3 0f 85 00 00 75 5b 90 20

这足够长,我当然会在构建补丁之前测试它,然后替换相关字节

原件:B001 c3 0f 85 00 00 75 5b 90 20 已修补:B0 01 c3 0f 84 00 00 74 5b 20 20

因此,它将搜索一个唯一的十六进制值字符串,并用编辑过的字符串替换它

希望能把事情弄清楚


海市蜃楼

啊,旧的二进制搜索。幸运的是,有一个解决方案。二进制搜索和替换似乎不太可能适用于任意可执行文件。为什么不直接用
diff
或类似的方法计算一个显式补丁呢?这听起来对我来说非常危险。您如何知道现有号码是您要替换的号码的唯一实例。假设您将0xabcd替换为0xbeef。您如何知道0xabcd不存在于您不想替换的位置。也许我误解了这个问题?@KerrekSB:我想你是在看一种不同类型的“二进制搜索”。OP希望在二进制文件中查找内容,而不是使用“二进制搜索”方法(使用
m=(h+l)/2
,然后根据找到的值将
l
h
替换为
m
,直到找到值或
l>=h
)。支持增量更新,可能是一个比自己滚动更可靠、用户友好的解决方案