简单Hook微信

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Crazy_SunShine/article/details/90296776

越狱教程:https://blog.csdn.net/Crazy_SunShine/article/details/90208725

当然越狱之后,就要尝试hook其他应用。

首先在 Cydia 中安装 OpenSSH(搜索安装即可)

 

将可执行文件Cluth拷贝至手机:

1.下载并编译:

$ git clone https://github.com/KJCracks/Clutch

$ cd Clutch

// 使用 Xcode 进行build,得到可执行文件

$ xcodebuild -project Clutch.xcodeproj -configuration Release ARCHS="armv7 armv7s arm64” build

当然,也可以直接下载编译完成的Cluth(https://github.com/KJCracks/Clutch/releases

 

2.将可执行文件通过SSH拷贝至手机(your.device.ip 在手机无线网络设置中,查看ip)

scp Clutch/clutch root@<your.device.ip>:/usr/bin/

如果拷贝成功,直接第三步,失败的话参考下面


如果发现控制台无反应(像是卡死状态),那么再连接ssh试一下是否可以:

ssh root@<your.device.ip>

 

反应如上述(卡死状态),说明之前只执行了越狱操作,并未安装App Sync。

如果未安装App Sync,则无法访问手机的根文件系统,故而出现上述问题。

1).爱思越狱,如果iOS10.0以下,直接使用爱思一键安装App Async;iOS10.0以上,需要添加官方App Sync源(参考:https://www.i4.cn/news_detail_13094.html)。

源URL:https://cydia.angelxwind.net/

 

2).PP越狱(参考:http://bbs.25pp.com/thread-171765-1-1.html)。

源URL:http://apt.25pp.com


 

下面,重新执行拷贝操作。

 

3.SSH到越狱手机,查看当前应用(若无权限,先执行 chmod 755 /usr/bin/Clutch* ):

Clutch -i

 

砸壳(开始时执行一直失败,后来卸载微信重新安装,执行成功,可以在控制台看到存放路径,取出至桌面):

//如微信 ,BundleId 是 com.tencent.xin
Clutch -d BundleId

 

4.使用 class-dump 获取 .app 的头文件

首先,下载 class-dump (http://stevenygard.com/projects/class-dump/),将 class-dump 放入 /usr/bin 路径下(如果无权限则查看 Mac下/usr/bin无权限)。

获取app的头文件(~/Document/headers/ 本地存放路径,可以修改):

class-dump -S -s -H WeChat.app -o ~/Document/headers/

本文主要写Hello World,暂时用不到头文件,后续如果开发功能,需要仔细研究。

 

5.安装配置Theos

安装步骤(https://github.com/theos/theos/wiki/Installation-macOS):

  • 确认已安装 Homebrew 、 Xcode 

            然后执行:

brew install ldid xz

//注意:如果提示brew updating, 但是控制台处于卡死状态,需要更换镜像源( 更新brew无响应);如果安装多个Xcode,并且默认的是旧版本,需要更新至最新版本的路径(更新默认Xcode路径)。

 

  • 设置环境变量

先在 .bash_profile 中配置环境,(~/jailbreak/theos/)是theos的指定存放路径,需要更换成本机的指定存放地址

export PATH=~/jailbreak/theos/bin:$PATH

export THEOS=~/jailbreak/theos

//配置立刻生效

source .bash_profile

 

  • 在指定路径中,下载 theos
git clone --recursive https://github.com/theos/theos.git $THEOS

如果 $THEOS 路径配置成功,则直接下载到该路径。

 

  • 下载 iOS SDK

下载SDK(https://github.com/theos/sdks),放入 theos 的 sdks 文件夹下。

 

  • 下载 ghostbin 脚本
curl https://ghostbin.com/ghost.sh -o $THEOS/bin/ghost

chmod +x $THEOS/bin/ghost

 

6.创建tweak

使用 nic.pl 命令,选择 iphone/tweak,然后配置其他项:

  • 项目名称
  • deb名称(类似bundleID,com.wq.exmp)
  • 作者
  • tweak作用对象的bundleID (如com.tencent.xin)
  • tweak安装完成后重启的应用名称 (如WeChat)

 

填写完毕后,会生成四个文件(Makefile 、example.plist、Tweak.x 、control):

工程信息,包含 处理器架构(ARCHS)、SDK版本(TARGET)、库(frameworks)等等。

 

  • .plist

Tweak 对象的 BundleID

 

  • control

Tweak创建时的基本信息

 

  • Tweak.x

编写hook代码的文件,.x 文件支持Logos语法,.xm文件支持Logos 和 C/C++语法。

 

首先,修改Makefile文件,以及在Tweak.x 中输入hook代码。(参考:iOS 逆向 -- 简单 hook 微信,实现hello World

 

然后,使用 make 进行编译时,首先 make clean,会在当前文件夹下生成 .theos 文件夹,编译的动态库就在 .theos/obj/debug 下。

注意:编译时,如果出现*** missing separator.  Stop.错误,表明 tab 键有问题。如果用Xcode编写,需要在 Preference -> Text Editing -> Indentation -> Prefer indent using 选择 Tabs,默认是Spaces。然后在Makefile文件中,将之前 Tab 键替换。

 

7.查看上述生成的动态库并更改依赖

查看:

 otool -L WQDemo.dylib 

会发现依赖 /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate (compatibility version 0.0.0, current version 0.0.0),需要更改。

 

更改依赖:

install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib WQDemo.dylib

 

8.依赖注入App

首先下载 insert_dylib:

git clone https://github.com/Tyilo/insert_dylib

Xcode打开insert_dylib项目,Command + B 编译出 insert_dylib文件。

 

然后将 WQDemo.dylib和 libsubstrate.dylib(在 /theos/bin 中找,如果不存在,下载https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib 即可) 拷贝到WeChat.app 中。

 

最后,将 insert_dylib 文件 与 WeChat.app 放入同一文件夹,然后执行:

./insert_dylib @executable_path/WQDemo.dylib WeChat.app/WeChat

 

成功之后,删除WeChat,将 WeChat_patched 改成 WeChat。

 

9.打包

下载工具 iOS-app-signer:https://github.com/DanTheMan827/ios-app-signer/releases

 

打开iOS-app-signer,选择WeChat.app ,选择对应 bundleID 的 Provisioning Profiles,点击 start 开始制作 ipa。

 

利用PP助手,或者 Xcode 安装新的ipa。

 

出现的错误:

1.如果安装时提示 WatchApp 相关的错误,那么在制作ipa之前,在WeChat.app中删除Watch文件夹。

2.如果安装后闪退,查看DeviceLogs,发现Library not loaded,说明可能进行第8步时,注入动态库存在问题,比如WQDemo.dylib和 libsubstrate.dylib未放入WeChat.app中。

 

 

参考:

iOS 逆向 -- 简单 hook 微信,实现hello World

移动App入侵与逆向破解技术-iOS篇

 

-----------------------------------------------------------

个人博客:https://blog.csdn.net/Crazy_SunShine

个人公众号:Flutter小同学

个人网站:http://chenhui.today/

 

展开阅读全文

没有更多推荐了,返回首页