通过修改Mach-O中Load Commands进行全局进程劫持
来源:互联网 发布:java初识面向对象例题 编辑:程序博客网 时间:2024/06/01 10:42
Mach-O格式,是Machobject文件格式的缩写,是一种可执行文件、目标代码、共享程序库、动态加载代码和核心DUMP(摘自度娘),类似于Win环境的PE、Linux环境的ELF。
LoadCommands数据位于MachHeader数据之后,顾名思义为加载器命令。
Structureoverview
|--------------------------------
|MachHeader
|--------------------------------
|LoadCommand1
|LoadCommand2
|LoadCommandn
|--------------------------------
|Data
|--------------------------------
LoadCommand定义有诸多,比如LC_SEGMENT、LC_SYMTAB、LC_SYMSEG等等,更多的LC定义可在<mach-o/loader.h>头文件中找到。利用otool-l命令可以查看一个mach-o文件的LoadCommands。
利用LoadCommands进行进程劫持的大致思路如下:
1.找一个任意进程启动都会加载的dylib;
2.为dylib写入自定义shellcode;
3.修改/添加此dylib的LC_ROUTINES命令,指向shellcode;
4.替换原dylib。
每步骤原理:
1.找到一个任意进程都会加载的dylib,比如/usr/lib/dyld,这样就达到了全局范围的效果。
2.写入shellcode,比如执行一段dlopen的代码,打开指定动态库,或是什么。
3.当链接器加入-init选项时,LC_ROUTINES就会被加入到LoadCommands中,描述该dylib的入口。如此我们将原入口替换为shellcode的地址,在shellcode执行完再跳回原入口来运行自定义代码。
4.替换后开启任意进程看效果。
以上是本人的假设,还没经过实践。欢迎大家讨论
LoadCommands数据位于MachHeader数据之后,顾名思义为加载器命令。
Structureoverview
|--------------------------------
|MachHeader
|--------------------------------
|LoadCommand1
|LoadCommand2
|LoadCommandn
|--------------------------------
|Data
|--------------------------------
LoadCommand定义有诸多,比如LC_SEGMENT、LC_SYMTAB、LC_SYMSEG等等,更多的LC定义可在<mach-o/loader.h>头文件中找到。利用otool-l命令可以查看一个mach-o文件的LoadCommands。
利用LoadCommands进行进程劫持的大致思路如下:
1.找一个任意进程启动都会加载的dylib;
2.为dylib写入自定义shellcode;
3.修改/添加此dylib的LC_ROUTINES命令,指向shellcode;
4.替换原dylib。
每步骤原理:
1.找到一个任意进程都会加载的dylib,比如/usr/lib/dyld,这样就达到了全局范围的效果。
2.写入shellcode,比如执行一段dlopen的代码,打开指定动态库,或是什么。
3.当链接器加入-init选项时,LC_ROUTINES就会被加入到LoadCommands中,描述该dylib的入口。如此我们将原入口替换为shellcode的地址,在shellcode执行完再跳回原入口来运行自定义代码。
4.替换后开启任意进程看效果。
以上是本人的假设,还没经过实践。欢迎大家讨论
0 0
- 通过修改Mach-O中Load Commands进行全局进程劫持
- mac 中 Mach-O
- Mach-o
- Mach-O
- IOS开发中Apple Mach-O Linker Error 错误
- MAC系统中可执行文件格式(Mach-O)的学习 (一)
- iOS瘦身之删除FrameWork中无用mach-O文件
- iOS开发中,出现错误:Apple Mach-O Linker Error
- mach-o的执行
- Mach-O 可执行文件
- Mach-O 可执行文件
- mach-o格式分析
- Mach-O可执行文件格式
- Mach-O可执行文件
- mach-o格式分析
- python 解析 mach-o
- Mach-O 可执行文件
- mach-o格式分析
- VC6 MFC里怎么使用TTS朗读中文?
- cms 系统网站
- 了解CMS(Concurrent Mark-Sweep)垃圾回收器
- Oracle相同用户相同库Copy表结构
- 工厂方法(设计模式)
- 通过修改Mach-O中Load Commands进行全局进程劫持
- 内核中通过给线程插apc注入dll
- NDK下,是否有可能禁止编译器自动链接C++的运行时库
- mac系统下清除eciplse svn插件用户信息
- c++软件开发第三方库大全
- sql语句优化注意的问题
- Java内存管理——垃圾收集概念及特点
- swfupload在IE9中不显示上传按钮的问题
- Java基础:数组Array转成List的几种方法