iOS 实现非越狱抢红包, 修改微信步数, 消息防撤回

原文链接

一步一步实现iOS微信自动抢红包(非越狱)

iOS微信自动抢红包-入门教程(非越狱)

非越狱iOS应用逆向-更改微信步数

需要的工具/文件

解密微信可执行文件(没越狱的往下翻, 可忽略这一步)

1.确保已越狱的iPhone和Mac处于同一局域网,打开Mac OS的终端命令行工具

2.输入ssh root@192.168.1.121远程登录已越狱的iPhone,root密码默认为alpine(其中192.168.1.121是iPhone的局域网IP地址)

ssh.jpg

3.在iPhone上运行一下微信,之后执行ps -e | grep WeChat(ps -e)查找WeChat可执行文件的路径,并记录为:可执行文件路径

微信bundle id.jpg

4.通过Cycript查找到WeChat的Documents路径,输入cycript -p WeChat,进入cycript命令行状态

cycript.jpg

5.输入NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0],就可以获取到WeChat的Documents路径了,并记录为:Documents路径

记录下刚才的两个路径,接下来需要将砸壳工具dumpdecrypted拷贝到WeChat的Documents目录下用于砸壳

确保我们从Github上下载了最新的dumpdecrypted源码,进入dumpdecrypted源码的目录,编译dumpdecrypted.dylib,命令make

dumpdecrypted.dylib .jpg

6.将命令行切换回Mac OS X

输入scp dumpdecrypted.dylib root@192.168.1.121:Documents路径

scp.jpg

7.重新远程登录到iPhone,使用dumpdecrypted.dylib砸壳,具体用法:

DYLD_INSERT_LIBRARIES=/Documents路径/dumpdecrypted.dylib 可执行文件路径

dumpdecrypted.jpg

出现了如截图页面则表示砸壳成功,会在命令行执行的当前路径下生成WeChat.decrypted文件

7.1 dumpdecrypted对系统ios9.3.2以上的版本砸壳失败, 先远程自己的设备:ssh root@设备IP ; 执行命令:su mobile->cd; 接着砸壳;砸壳文件所在目录:/var/mobile/

8.将生成的WeChat.decrypted使用scp命令拷贝到Mac电脑上,和之前从Mac电脑拷贝dumpdecrypted.dylib到手机上类似的语法。(下图中的黑色覆盖部分替换为你的Mac登陆用户名)

拷贝解密文件到Mac.jpg

9.为保险起见,可以对WeChat.decrypted文件检查一下,查看砸壳是否成功

如截图第一个cryptid 0表示armv7架构已成功,第二个cryptid 1表示arm64未成功

理论上只要把最老的架构解密就可以了,因为新的cpu会兼容老的架构;所以这里arm64未成功不影响

查看砸壳情况.jpg

10.再次远程连接iPhone,拷贝出WeChat.app待用(注意使用scp -r)

拷贝WeChat.app到Mac电脑.jpg

解密微信可执行文件->利用PP助手(推荐)

在已越狱的iPhone上安装PP助手后,从PP助手中下载微信客户端

PP助手上面的App的可执行文件都是经过了砸壳的,所以可以省去自己砸壳的步骤

我们可以按照自己砸壳的步骤,导出PP助手的微信可执行文件,利用otool查看砸壳情况

PP助手中WeChat砸壳情况.jpg

这表示armv7和arm64均已解密

同样再次远程连接iPhone,拷贝出WeChat.app待用

生成并注入dylib

1.下载并安装iOSOpenDev

安装iOSOpenDev.jpg

Xcode 8,直接安装iOSOpenDev会失败。

安装iOSOpenDev失败.jpg

如果你们也遇到类似的问题,可以尝试下载iOSOpenDev_Patches,然后按照如下步骤:

1、把Specifications1文件夹重命名为Specifications放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/

2、把Specifications2文件夹重命名为Specifications放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/

3、把usr3重命名为usr放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/

4、安装iOSOpenDev

2.创建dylib工程并生成dylib

安装完iOSOpenDev后,在Xcode中选择Cocoa Touch Library。

创建Cocoa Touch Library工程.jpg

点击Next开始新建工程,将product name命名为autoGetRedEnv;

删除autoGetRedEnv.h文件,修改autoGetRedEnv.m为autoGetRedEnv.mm,然后在项目中加入CaptainHook.h;

从github中下载autoGetRedEnv工程源码中的CaptainHook.h和autoGetRedEnv.mm拷贝源码,复制到工程中对应文件中,完成后进行(真机)编译,即可得到libautoGetRedEnv.dylib文件

hook微信的AsyncOnAddMsg: MsgWrap:方法,实现方法如下:

//声明CMessageMgr类
CHDeclareClass(CMessageMgr);
CHMethod(2, void, CMessageMgr, AsyncOnAddMsg, id, arg1, MsgWrap, id, arg2)
{
  //调用原来的AsyncOnAddMsg:MsgWrap:方法
  CHSuper(2, CMessageMgr, AsyncOnAddMsg, arg1, MsgWrap, arg2);
  //具体抢红包逻辑
  //...
  //调用原生的打开红包的方法
  //注意这里必须为给objc_msgSend的第三个参数声明为NSMutableDictionary,不然调用objc_msgSend时,不会触发打开红包的方法
  ((void (*)(id, SEL, NSMutableDictionary*))objc_msgSend)(logicMgr, @selector(OpenRedEnvelopesRequest:), params);
}
__attribute__((constructor)) static void entry()
{
  //加载CMessageMgr类
  CHLoadLateClass(CMessageMgr);
  //hook AsyncOnAddMsg:MsgWrap:方法
  CHClassHook(2, CMessageMgr, AsyncOnAddMsg, MsgWrap);
}

2.1 添加微信步数修改


CHOptimizedMethod(0, self, unsigned long, WCDeviceStepObject, m7StepCount) {
    return 66666;
}

CHOptimizedMethod(0, self, unsigned long, WCDeviceStepObject, hkStepCount) {
    return 66666;
}

__attribute__((constructor)) static void entry()
{
    //加载CMessageMgr类
    CHLoadLateClass(CMessageMgr);
    //hook AsyncOnAddMsg:MsgWrap:方法
    CHClassHook(2, CMessageMgr, AsyncOnAddMsg, MsgWrap);
    
    // 微信步数  CHLoadLateClass(WCDeviceStepObject);
    CHHook(0, WCDeviceStepObject, m7StepCount);
    CHHook(0, WCDeviceStepObject, hkStepCount);
}

2.2 添加微信防撤回

CHDeclareClass(CMessageMgr);

CHOptimizedMethod(1, self, void, CMessageMgr, onRevokeMsg, id, value1) {

}


__attribute__((constructor)) static void entry()
{
    //加载CMessageMgr类
    CHLoadLateClass(CMessageMgr);
    //hook AsyncOnAddMsg:MsgWrap:方法
    CHClassHook(2, CMessageMgr, AsyncOnAddMsg, MsgWrap);
    
    // 微信步数  CHLoadLateClass(WCDeviceStepObject);
    CHHook(0, WCDeviceStepObject, m7StepCount);
    CHHook(0, WCDeviceStepObject, hkStepCount);
    // 消息防撤回
    CHHook(1, CMessageMgr, onRevokeMsg); 
}


3.注入dylib

通过yoyolibWeChat注入dylib (相当于告知WeChat有这么个东西了,到时候程序可以加载这个dylib)

./yololib 目标可执行文件 需注入的dylib

目标可执行文件:即,WeChat.app/WeChat解密后得到的文件;如果是自己砸壳时,对应的则是之前导出的WeChat.decrypted文件(建议将WeChat.decrypted文件做好备份以便之后使用,同时把WeChat.decrypted重命名为WeChat);如果是利

注入dylib.jpg

上图效果则代表注入成功了

3.重新签名并安装ipa

  • 新建Entitlements.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>application-identifier</key>
  <string>123456.com.autogetredenv.demo</string>
  <key>com.apple.developer.team-identifier</key>
  <string>123456</string>
  <key>get-task-allow</key>
  <true/>
  <key>keychain-access-groups</key>
  <array>
      <string>123456.com.autogetredenv.demo</string>
  </array>
</dict>
</plist>

获取证书Teamid及其他信息使用以下命令

/opt/iOSOpenDev/bin/ldid -e ./Demo.app/Demo
将四个文件,放入到之前备份好的WeChat.app文件夹中:
  • 1.embedded.mobileprovision
  • 2.libautoGetRedEnv.dylib
  • 3.注入libautoGetRedEnv.dylib后的WeChat文件
  • 4.Entitlements.plist

embedded.mobileprovision文件就是苹果开发者网站中的Provisioning Profiles文件,如果之前创建好了直接下载重命名为embedded.mobileprovision即可。

Provisioning Profiles文件.png

给微信重新签名

重新签名命令格式:codesign -f -s 证书名字 目标文件

证书名字可以在钥匙串中找到

分别用codesign命令来为微信中的相关文件签名,具体实现如下:

codesign -f -s "iPhone Developer: Hao liu (475KU64APH)" WeChat.app/libautoGetRedEnv.dylib

codesign -f -s "iPhone Developer: Hao liu (475KU64APH)" WeChat.app/Watch/WeChatWatchNative.app/PlugIns/WeChatWatchNativeExtension.appex

codesign -f -s "iPhone Developer: Hao liu (475KU64APH)" WeChat.app/Watch/WeChatWatchNative.app

codesign -f -s "iPhone Developer: Hao liu (475KU64APH)" WeChat.app/PlugIns/WeChatShareExtensionNew.appex

codesign -f -s "iPhone Developer: Hao liu (475KU64APH)" --entitlements Entitlements.plist WeChat.app

打包成ipa
给微信重新签名后,我们就可以用xcrun来生成ipa了,具体实现如下:
xcrun -sdk iphoneos PackageApplication -v WeChat.app  -o ~/WeChat.ipa
重新签名.png

安装拥多种功能的微信

只要手机id加入了开发者证书中都是可以安装的

iTools.png
微信步数.jpg
微信红包.jpg
微信红包2.png
系统版本.jpg

哈哈哈哈哈哈, 大家玩的开心!!!!

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

推荐阅读更多精彩内容