吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10117|回复: 36
收起左侧

[iOS 原创] iOS动态注入与自签名

  [复制链接]
张艾伦 发表于 2021-7-14 15:47
准备工具

1、在线砸壳网站

2、我的饭店_已砸壳(演示用)

3、MachOView

4、optool

5、AltStore

操作步骤

大家可以看到,当我们使用MonkeyDev开发插件的时候,最终的产物是有两个的,一个是我们的App,一个是HOOK用的动态库,之所以能够实现逆向,就是把这个动态库注入到二进制文件中实现的,那么我们是否可以直接把动态库注入到游戏的二进制文件中呢?答案是肯定的。

image-20210714104041380

首先,我们使用MachOView这个工具来查看一下二进制文件的动态库,如下图所示,LC_LOAD_DYLIB就是加载的动态库。

image-20210714103729840

那么我们要做的也很简单,就是使用optool工具把我们已经写好的动态库给注入进去,首先我们要对ipa包进行解压缩,直接使用第三方工具或者修改ipa后缀名为.zip进行解压,会得到一个Payload文件夹,文件夹里有一个pig-mobile.app文件夹,在这个文件夹上右键选择显示包内容,然后按照大小进行排序,最上面的那个pig-mobile文件,就是我们游戏的二进制文件

image-20210714104545391

然后执行如下命令(optool要提前编译出来放到/usr/local/bin,pig-mobile文件也要复制出来操作,不然命令可能不生效,注入完成后我们再替换回去即可)

optool install -c load -p "@executable_path/Frameworks/libpighomeDylib.dylib"  -t pig-mobile

然后得到如下结果:

Found thin header...
Inserting a LC_LOAD_DYLIB command for architecture: arm64
Successfully inserted a LC_LOAD_DYLIB command for arm64
Writing executable to pigmobile_new...

我们再次使用MachOView这个工具查看被修改后的二进制文件,发现我们写的这个动态库已经被成功的注入了

image-20210714153123100

当然,在注入这个动态库之前,我们还要先确认下这个动态库,看它有没有依赖于别的动态库,如果有的话,我们还需要把它所依赖的动态库全部加到游戏工程里面去,我们使用下面的命令来查看libpighomeDylib.dylib

otool -L libpighomeDylib.dylib

我们会得到如下的结果:

libpighomeDylib.dylib:
        @executable_path/Frameworks/libpighomeDylib.dylib/libpighomeDylib.dylib (compatibility version 1.0.0, current version 1.0.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 907.1.0, weak)
        @executable_path/Frameworks/libsubstrate.dylib (compatibility version 0.0.0, current version 0.0.0, weak)
        @executable_path/Frameworks/libcycript.dylib (compatibility version 0.0.0, current version 0.0.0)
        @rpath/RevealServer.framework/RevealServer (compatibility version 2.0.0, current version 2.0.0)
        /System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore (compatibility version 1.0.0, current version 612.1.15)
        /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 5043.1.109)
        /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1835.100.0)
        /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1308.0.0)
        /System/Library/Frameworks/AVFoundation.framework/AVFoundation (compatibility version 1.0.0, current version 2.0.0)
        /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 1835.100.0)

由于我没有引用到别的三方库,这里面我们看到有三个需要我们处理的

    @executable_path/Frameworks/libsubstrate.dylib (compatibility version 0.0.0, current version 0.0.0, weak)
    @executable_path/Frameworks/libcycript.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/RevealServer.framework/RevealServer (compatibility version 2.0.0, current version 2.0.0)

其实就是MonkeyDev重签名后会自动打包进去的几个文件,我们把这些文件都放到pig-mobile.app/Frameworks的目录下面

image-20210714153308019

然后我们再把自己录制的那个1.mov文件和修改后的二进制文件一起放入到pig-mobile.app文件夹内。下面就是使用AltStore工具进行重签,首先打开AltStore工具,选择Install Mail Plug-in,安装一个Mail的插件到我们的电脑上,安装完成后,我们需要打开Mail的设置界面,选择“管理插件”并启用它。

image-20210714132604473

插件被启用以后,我们就可以愉快的玩耍啦,选择Install AltStore,然后安装到你的手机上,它会弹出一个账号密码的输入框,让你输入自己的Apple ID和密码。下面我们进入等待时间,等待它安装成功,成功后会有提示。

image-20210714132458743

安装成功后,我们的手机桌面上就会出现这个软件,点击这个软件会发现有一个弹框,我们打开手机的设置 --> 通用 --> VPN与设备管理 --> 开发者App  --> 信任你的账号

image-20210714132348048

信任以后,我们就可以正常的打开这个软件,这一步安装完成后,我们基本上就已经成功了一大半,下面我们需要把刚刚我们已经修改后的游戏文件进行打包,进入到我们解压的PayLoad文件夹,执行如下命令,把文件夹重新打包成ipa,这们我们就得到了一个"我的饭店_hook.ipa"

注意:在直接安装这个ipa包的时候,AltStore报了一个错,错误的内容是“the name for this app is invalid”,经过我的研究,发现是签名工具对中文和特殊字符支持不好导致的,所以需要针对这个包进行修改,修改的地方有四处:

1、pig-mobile.app目录修改为pigmobile.app

2、二进制文件名由pig-mobile修改为pigmobile

3、Info.plist里的Bundle display name修改为pigmobile

4、Info.plist里的Executable file修改为pigmobile(就是二进制文件的文件名)

zip -r 我的饭店_hook.ipa Payload

然后我们只需要把这个文件通过任何办法下载到手机上即可(由于公司保密性较高,所以无法通过微信、QQ等手段。我就演示下通过自建服务器吧)

image-20210714112222071

上面是我在内网里自建的一个简单的服务器,我们让苹果手机和我们处在同一个局域网内,然后使用safari浏览器直接访问我们的服务器地址,然后下载对应的“我的饭店_hook.ipa”文件 ,下载完成后,我们直接通过AltStore方式打开这个ipa文件

image-20210714132301193

这里会让你再次输入Apple ID和密码,输入完成后,即可完成自签名,自签名的有效期是七天,七天后只需要刷新重签即可。

image-20210714132147752

相关资料下载地址:
https://gitee.com/allenzhang/note/

免费评分

参与人数 6吾爱币 +5 热心值 +5 收起 理由
mouccc + 1 + 1 我很赞同!
hybin + 1 我很赞同!
junjia215 + 1 用心讨论,共获提升!
砼小砼 + 1 + 1 我很赞同!
SCL + 1 + 1 谢谢@Thanks!
唐小样儿 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

大先生0201 发表于 2021-7-15 17:52
感谢分享
 楼主| 张艾伦 发表于 2021-7-22 11:00
砼小砼 发表于 2021-7-19 08:09
1.mov这个是什么文件?
libsubstrate.dylib,libcycript.dylib,RevealServer.framework/RevealServer, ...

动态库放进去会自动签名
1.mov那个是我之前写《iOS视频广告游戏跳过》用到的资源
此文章就是说如果不使用开发环境直接注入一个游戏,让它可以自动跳过广告的
lingye512 发表于 2021-7-15 13:37
daszpn 发表于 2021-7-15 20:52
看见代码都头大
李彡 发表于 2021-7-15 22:05
虽然看不懂,但是大佬牛逼
yearnth 发表于 2021-7-15 22:18
虽然看不懂,但是HENGANXUIE
wen704 发表于 2021-7-16 09:19
大佬就是大佬,一套操作玩的66的,问几个问题
查看依赖动态库是 optool -L libpighomeDylib.dylib 还是 otool   (当下还没实践过)
还有就是怎么判断当前需要处理的动态库
那个AltStore签名后的应用还能收到推送消息不
希望大佬不吝赐教
SCL 发表于 2021-7-16 10:32
技术大咖 ,已加分。。
谁说要在乎我 发表于 2021-7-16 15:41
感谢分享,技术派!
52tc007 发表于 2021-7-16 16:42
插眼以后备用,谢谢啦!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-19 05:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表