使用p-joker提取单独的iOS内核驱动

996.icu LICENSE

  • 问题背景
  • 解决方法
  • 总结

阅读之前注意:

本文阅读建议用时:5min
本文阅读结构如下表:

项目下属项目测试用例数量
问题背景0
解决方法0
总结0

问题背景

上一篇文章已经解压了kernelcache,现在目标就是从解压文件中,再提取出单独的内核驱动。因为kernelcache中包含各种驱动,解压后也还是是一个文件,并没有做驱动分离。

解决方法

提取出单独的内核驱动,使用的工具是p-joker,这个工具是国内深信服的一个逆向专家(好像也是趋势科技的专家)写的,已经在github上开源,支持 iOS10/11/12/13 kernelcache。
不过这个工具虽然用起来简单,但初期的环境配置比较麻烦。
首先,目前这个工具只支持python2;其次,需要安装多个python库依赖;最后,需要特定的capstone(next分支)。
在这里插入图片描述
首先是安装自带的2个依赖,进入对应文件夹运行python2 setup.py install,结果提示我还有其他依赖没有安装。

于是,我依次安装了如下 python库依赖:(1) pip2 install nose (2) pip2 install tornado (3) pip2 install --ignore-installed --user numpy==1.7.1 (之所以这么装,是因为我之前装了一个numpy==1.12.0的版本,结果不行,然后又卸载不了,而nose\tornado是1.12.0版本的依赖)。

用pip2,则是因为该工具只支持python2。

另外,/p-joker-master/pyiokit/src/IOKitConnectionBase.h中的#include <boost/python.hpp>有用到boost-python,因此也需要安装boost-python。因此我运行了如下指令:(1) brew install boost (2) brew install boost-python

经过上述操作,再次进入对应文件夹运行python2 setup.py install,2个自带的依赖安装成功了。以下是安装成功截图:
在这里插入图片描述
在这里插入图片描述

最后安装capstone,capstone安装很简单,去github下载next分支,参考其中COMPILE.TXT,在macOS上依次运行(1) ./make.sh (2) sudo ./make.sh install即可。这时使用p-joker,会提示无法运行,因为p-joker用的是python形式的capstone。
于是参考/Downloads/capstone-next/bindings/python/README.txt。在该路径下运行python setup.py install,再把/Downloads/capstone-next/bindings/python路径下的capstone文件夹拷贝到p-joker-master文件夹下即可。

此时运行python2 p-joker.py /deCompressedFile/Path/kernel -K com.apple.iokit.IO80211Family -d /Your/Destination/File/Path,终于拿到了单独的内核驱动。
在这里插入图片描述

在这里插入图片描述
上述步骤可能有多余的:(1)可能不需要安装nose\tornado这2个依赖;(2)可能不需要brew install boost;(3)可能根据COMPILE.TXT编译安装capstone这一步是多余的;
因为我也是一路试过来的,所以也可能也有漏掉的依赖,不过那些应该问题不大,欢迎留言补充。

总结

解压kernelcache后,因为还是单独的一个文件。所以需要用到p-joker来提取单独的iOS内核驱动。
如果本文对你有帮助,不如请我一罐可乐吧 🎃
在这里插入图片描述

参考资料

  1. python2.7 更新numpy出错 ERROR: Cannot uninstall ‘numpy’
  2. ImportError: No module named capstone
  3. 用Python玩玩反汇编,一个好玩有趣的全能型的反汇编引擎Capstone
  4. Python3中”except Exception, e: 语法无效“原因及解决方法
  5. 在OS X 中安装boost.python, 使用homebrew
  6. python库安装方法及下载依赖库
  7. (MacOS)Python设置pip源为国内源
  8. joker-使用joker抽取iOS 11的kernelcache
  9. iOS kernel初探

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我来演示一下使用mybatis-plus写一个分页接口并使用postman测试的步骤。 首先,需要创建一个Spring Boot项目,并添加mybatis-plus依赖。在pom.xml文件中添加以下依赖: ```xml <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> ``` 接着,创建一个实体类User,用于映射数据库表中的数据: ```java @Data @NoArgsConstructor @AllArgsConstructor @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; } ``` 其中,@TableName注解用于指定实体类对应的数据库表名,@TableId注解用于指定实体类中的主键字段。 然后,创建一个Mapper接口UserMapper,用于操作数据库表中的数据: ```java public interface UserMapper extends BaseMapper<User> { } ``` 在这里,我们使用mybatis-plus提供的BaseMapper接口,可以很方便地对数据库表进行增删改查操作。 接着,创建一个Controller类UserController,用于接收前端请求并调用Mapper接口进行数据操作: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/list") public List<User> list() { return userMapper.selectList(null); } @GetMapping("/page") public IPage<User> page(Page<User> page) { return userMapper.selectPage(page, null); } } ``` 在这里,我们创建了两个接口,一个是获取所有用户的列表,另一个是分页获取用户列表。其中,分页接口使用了mybatis-plus提供的Page类和IPage接口,用于实现分页查询功能。 最后,我们使用postman来测试分页接口。首先,启动Spring Boot项目,然后打开postman,设置请求地址为http://localhost:8080/user/page,并在请求参数中添加page和size两个参数,例如:page=1&size=10。发送请求后,就可以得到分页查询结果了。 以上就是使用mybatis-plus写一个分页接口并使用postman测试的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值