我是一名IOS开发人员,我知道目标C.我想创建一个独立的mac应用程序,其唯一的功能是修补同一个mac中可用的另一个应用程序。
假设我的应用程序文件夹中有一个名为X的应用程序。这个应用X有一些不受欢迎的行为。所以我试着修改这个行为。我在Hopper反汇编程序的帮助下分析了应用程序的可执行文件,我发现我必须从00000001003e3790
开始更改汇编指令。我更改了那些汇编指令并生成了新的可执行文件。然后我用新的可执行文件替换了旧的可执行文件,然后现在似乎已经消失了不良行为。
由于大多数人都希望删除这种不受欢迎的行为,我决定写一个修补程序并将修补程序分发给他们。
那么如何在我的修补程序应用程序中修改app X的可执行文件中可用的汇编指令,然后用修改后的版本替换原来的汇编指令?
如果有人帮助我朝正确的方向发展,那就太好了。
答案 0 :(得分:2)
/Applications/
中找到,请向用户询问应用包的位置。[UPD。] [3]的示例代码。
这不需要任何与ObjC相关的机制,只能使用普通libc
构建和运行:
long PatchSomething(char *name, char *data, size_t offs, size_t size) {
long file = open(name, O_WRONLY);
if (file != -1) {
lseek(file, offs, SEEK_SET);
write(file, data, size);
close(file);
}
return file != -1;
}
其中:
name
是要修补的文件的名称data
是要写的数据offs
是要放置数据的文件偏移量size
是数据大小; size