美文网首页
十三、命令行MJAppTools工具是如何实现的

十三、命令行MJAppTools工具是如何实现的

作者: Lovell_ | 来源:发表于2018-12-11 16:09 被阅读21次

也就是读取Mach-O文件中的数据,所以这需要了解Mach-O文件。

一、main函数处理——做一个简单的工具

注意,命令行工具的调试,是编译好文件后拖拽到手机bin目录下,在终端中打印调试;而不是运行XCode。

MJAppTools命令工具就是个Mach-O可执行文件

命令行工具,就是个可执行文件,跟app差不多。

命令代码 拖拽到手机的/usr/bin/下,要设置权限

二、Mach-O文件数据的位置分析

是否加壳 看架构 看架构 对照源码 构架的类型

三、代码实现加载数据——读取magic

实现读取magic

command+B,编译好的文件拖拽到手机的Device/usr/bin,给予权限。

执行命令:TestCL(即编译好的包名),打印信息:

四、参数——给命令加参数

参数示例 参数传进来的地方

如果什么都不传,也会有一个参数,就是可执行文件的路径。

添加参数 对参数的判断和提示 对参数的判断和提示

五、权限

解决handle没有值,读取失败的问题。

这是权限的问题,读取每个app下的文件夹都必须要权限。

给文件签上一定的权限,让它可以访问其他app的可执行文件

导出已有的权限 产生的文件 强制给TestCL重新签权限

entitlements == xml == plist,所以,后缀可以修改。

权限文件如何写呢?
——找一个已有的权限文件,来修改。
SpringBoard上放了一堆APP,它有权限读取所有APP,它的权限最高。

SpringBoard的位置

拖拽到电脑上。

导出SpringBoard的权限 生成的SpringBoard的权限文件 SpringBoard的权限文件内容

把这个权限强制导入到自己写的命令行工具中:

验证:导出TestCL的权限文件,打开看下是否由很多权限

拖拽TestCL到手机/bin目录,赋值权限后,操作TestCL -l

也可以用codesign,但比较麻烦。

六、MJAppTools分析

添加脚本

相关文章

网友评论

      本文标题:十三、命令行MJAppTools工具是如何实现的

      本文链接:https://www.haomeiwen.com/subject/wieshqtx.html