Envelop-AppStore Hook

越狱可以使用 Tweak,是因为越狱后默认有mobilesubstrate 这个库,它主要是能在程序运行时能动态加载我们自己的动态库。但非越狱机没有这个库,所以需要直接将这个库打包进 ipa中来使用这个库的一些API实现注入过程。虽然是可以安装在非越狱机器上,但制作过程需要有越狱手机。

获取砸壳应用

自己砸
工具: dumpdecrypted 或者 clutch工具 本文需要砸壳之后的ipa文件所以只能用clutch
环境:只有越狱才能砸壳

dumpdecrypted砸(原理是让app预先加载一个解密的dumpdecrypted.dylib,然后在程序运行后,将代码动态解密,最后在内存中dump出来整个程序。通过dumpdecrypted得到的可执行文件其实不是完全解密过的,机器是arm64的话就只能解密arm64那部分。可尝试命令 lipo -thin arm64 .decrypted -o -arm64.decrypted可获得纯净的可执行文件。)
1. 越狱的iPhone 
2. 进入Cydia,搜索并安装OpenSSH、Cycript、iFile(调试程序时可以方便地查看日志文件)这三款软件
3. 电脑上用iTunes上下载一个最新的微信,连上iPhone,用iTunes装上刚刚下载的微信应用
4. Mac终端,用ssh进入连上的iPhone(确保iPhone和Mac在同一个网段,笔者iPhone的IP地址为192.168.8.54)。OpenSSH的root密码默认为alpine。 如: ssh root@172.17.10.83
5. 手机打开iFile 后在终端一步步找到WeChat所在位置并保持微信打开(也可以用 ps -e 来查看当前进程进行查找):cd /var/mobile/Containers/Bundle/Application/5A3F8B13-FF94-43A8-B02D-1580E38D63D0/WeChat.app/
6. 之后 cycript -p WeChat (cycript -p 查看附加进程的)等待出现 cy# 后在之后输入 NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] 则可以获取到输出地址保留好 如:@"/var/mobile/Containers/Data/Application/C599E377-2B62-41B6-87A7-FBC6F19ECDD6/Documents"
7. 下载dumpdecrypted源码,再:cd /Users/ucsapp/Downloads/dumpdecrypted-master 中后再使用 make 命令在该目录下生成一个 dumpdecrypted.dylib文件
8. 拷贝该动态库到iPhone对应的WeChat的Documents目录下 scp拷贝时并输入ssh的密码alpine(命令scp 源文件路径 目标文件路径)如:scp ./dumpdecrypted.dylib root@172.17.10.83:/var/mobile/Containers/Data/Application/C599E377-2B62-41B6-87A7-FBC6F19ECDD6/Documents
9. 开始对AppStore下载的微信应用进行砸壳,注意检查下当前Mac是否连接到了手机,先ssh到WeChat的dumpdecrypted.dylib所在的document目录:/var/mobile/Containers/Data/Application/xxxxxxx/Documents下,再 (命令格式:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 需砸壳文件WeChat.app/WeChat路径)如:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/5A3F8B13-FF94-43A8-B02D-1580E38D63D0/WeChat.app/WeChat 之后会生成一个WeChat.decrypted文件在dumpdecrypted.dylib的同级目录下这就是砸壳的应用。
10. 电脑新建一个terminal,从手机拷贝该砸壳文件到电脑桌面 scp root@172.17.10.83:/var/mobile/Containers/Data/Application/3D3BD063-A779-4FAD-B4C4-6E674B8F2135/Documents/WeChat.decrypted /Users/yourcomputer/Desktop/
11. 注意:classdump出头文件--- class-dump -H WeChat.decrypted --arch armv7  -o /Users/xxx/Desktop/xxx/Headers
Clutch砸 编译Clutch后将执行文件拷贝到越狱手机中,再ssh进入手机,列出当前安装应用,并选择比如腾讯的某个应用对应的包名砸壳。
clutch 会将砸过的 ipa 文件放到了 /private/var/mobile/Documents/Dumped/ 目录下,接下来可以将其改简单名,再拷回电脑
1. 下载最新的Clutch https://github.com/KJCracks/Clutch/releases
2. cd Clutch
3. xcodebuild -project Clutch.xcodeproj -configuration Release ARCHS="armv7 armv7s arm64" build
4. scp Clutch/clutch root@<your.device.ip>:/usr/bin/
5. ssh root@<your.device.ip>
6. clutch -i
7. clutch -d com.tencent.xin(注意:可能因为越狱iOS9.1的4S上的微信130MB有点大而不成功,尝试用clutch -b com.tencent.xin也不行 猜测可能是clutch对armv7的32bit的处理有误导致失败,官Git上也出现类似问题但未找到相应解决 6Plus越狱64位机没问题)
8. mv /private/var/mobile/Documents/Dumped/com.tencent.xin-iOS7.0-\(Clutch-2.0.4\).ipa /private/var/mobile/Documents/Dumped/wechat.ipa
9. scp root@<your.device.ip>:/private/var/mobile/Documents/Dumped/wechat.ipa ~/Desktop

别人砸
请绕道去PP助手等下载吧

动态库

参考:Envelope 动态库

下载动态库后需要编译,但直接编译会报错提示找不到theos环境等,需要先安装好这些环境。
make编译后会生成一个隐藏的.theos目录,在其下找到该源码的编译动态库文件并拷贝到和上面的砸壳应用同目录下。
使用系统otool工具检测该动态库需要依赖的各个库是否都已存在,看到有两个是属于需要自身动态库要包含进Library的,
除了第一个外第二个(因为该库非越狱环境下是没有的需要从越狱手机下提取出来以备打包用,
路径为:/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate。)
需要通过install_name_tool来修改这个动态库的依赖路径并再次查看发现已经改为从该动态库读取这个依赖库了而非非越狱下的手机环境了,
并用optool工具(下载要recursive因为该源码中又包含了其它源码,后需要编译如果xcodebuild命令提示错误,尝试换一个https://github.com/yuchuanfeng/optool作者的optool后还报错直接用xcode来build不用终端)将缺失库与动态库一起打进该动态库包里。
之后将砸壳过的 ipa 文件解压,然后将 libsubstrate.dylib 与 WeChatRedEnvelop.dylib 拷贝到解压后的 WeChat.app 目录下以便下一步install这个WeChatRedEnvelop.dylib。

1. git clone https://github.com/buginux/WeChatRedEnvelop.git
2. cd WeChatRedEnvelop
3. make
4. cp .theos/obj/debug/WeChatRedEnvelop.dylib ~/Desktop
5. otool -L WeChatRedEnvelop.dylib
6. install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib /Users/ucsapp/Desktop/AutoEnvelopUnJail/WeChatRedEnvelop.dylib
7. otool -L WeChatRedEnvelop.dylib
8. git clone --recursive https://github.com/alexzielenski/optool.git(搜索最新release版本或换其他作者的)
9. cd optool
10. xcodebuild -project optool.xcodeproj -configuration Release ARCHS="i386 x86_64" build (optool是源码编译后将同名product拷到AAAAA待用)
11. unzip wechat.ipa -d wechat(注意:解压砸壳过的wechat.ipa, 解压后得到一个包含Payload文件的文件夹,将optool和两个动态库及解压后的WeChat.app这三个文件放在同一个文件夹AAAAA中)
12. cd ~/AAAAA
13. cp /AAAAA/libsubstrate.dylib /AAAAA/WeChatRedEnvelop.dylib /AAAAA/WeChat.app
14. /AAAAA/optool install -c load -p "@executable_path/WeChatRedEnvelop.dylib" -t WeChat.app/WeChat (会输出表示成功:
Found thin header...
Inserting a LC_LOAD_DYLIB command for architecture: arm64
Successfully inserted a LC_LOAD_DYLIB command for arm64
Writing executable to WeChat.app/WeChat...)
依赖库

打包重签名

1. 删除注入了动态库的.app中的包文件里的Watch目录,将含有iWatch工程先删除不签名
2. 将目标设备的UUID加到即将要签名的证书中并更新配置文件下载安装到Mac
3. 下载应用重签工具并运行该Mac程序 https://github.com/DanTheMan827/ios-app-signer
4. 选择重签的证书和配置文件及保存路径后点击开始
5. 用工具将ipa装入设备检测是否有了动态库的相关改动

可能会有报错无法是被object格式等错误 检测好动态库注入cp 和 optool install路径 尽量放在同一文件夹下操作 暂时应该就无其它错误了

应用重签工具

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 转发自 2016-07-07何兆林腾讯Bugly 如果您有耐心看完这篇文章,您将懂得如何着手进行app的分析、追踪...
    树懒啊树懒阅读 10,547评论 5 63
  • 逆向工程的目的 1)分析竞品的最新研究或者产品原型(包括所用的技术,所使用的框架) 2)学术/学习目的。 3)破解...
    零度_不结冰阅读 647评论 0 2
  • [TOC] iOS 逆向 -微信 helloWorld 一、 前言 本篇主要制作微信的 tweak,实现在非越狱版...
    TKkk阅读 12,538评论 21 42
  • 野有死麇,白茅包之。有女怀春,吉士诱之。林有朴樕,野有死麇;白茅纯束,有女如玉。 舒而脱脱兮,无感我悦兮,无使尨也吠。
    samsong1234阅读 487评论 0 0
  • 突然间朋友告诉我她的姐姐离婚了,这个消息使我的大脑有一瞬间的空白!她结婚还不到三个月吧,当初结婚时朋友作为我的上铺...
    辣辣_5387阅读 174评论 0 0