iOS 實(shí)現(xiàn)非越獄搶紅包, 修改微信步數(shù), 消息防撤回

原文鏈接

一步一步實(shí)現(xiàn)iOS微信自動(dòng)搶紅包(非越獄)

iOS微信自動(dòng)搶紅包-入門教程(非越獄)

非越獄iOS應(yīng)用逆向-更改微信步數(shù)

需要的工具/文件

解密微信可執(zhí)行文件(沒(méi)越獄的往下翻, 可忽略這一步)

1.確保已越獄的iPhone和Mac處于同一局域網(wǎng),打開(kāi)Mac OS的終端命令行工具

2.輸入ssh root@192.168.1.121遠(yuǎn)程登錄已越獄的iPhone,root密碼默認(rèn)為alpine(其中192.168.1.121是iPhone的局域網(wǎng)IP地址)

ssh.jpg

3.在iPhone上運(yùn)行一下微信,之后執(zhí)行ps -e | grep WeChat(ps -e)查找WeChat可執(zhí)行文件的路徑,并記錄為:可執(zhí)行文件路徑

微信bundle id.jpg

4.通過(guò)Cycript查找到WeChat的Documents路徑,輸入cycript -p WeChat,進(jìn)入cycript命令行狀態(tài)

cycript.jpg

5.輸入NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0],就可以獲取到WeChat的Documents路徑了,并記錄為:Documents路徑

記錄下剛才的兩個(gè)路徑,接下來(lái)需要將砸殼工具dumpdecrypted拷貝到WeChat的Documents目錄下用于砸殼

確保我們從Github上下載了最新的dumpdecrypted源碼,進(jìn)入dumpdecrypted源碼的目錄,編譯dumpdecrypted.dylib,命令make

dumpdecrypted.dylib .jpg

6.將命令行切換回Mac OS X

輸入scp dumpdecrypted.dylib root@192.168.1.121:Documents路徑

scp.jpg

7.重新遠(yuǎn)程登錄到iPhone,使用dumpdecrypted.dylib砸殼,具體用法:

DYLD_INSERT_LIBRARIES=/Documents路徑/dumpdecrypted.dylib 可執(zhí)行文件路徑

dumpdecrypted.jpg

出現(xiàn)了如截圖頁(yè)面則表示砸殼成功,會(huì)在命令行執(zhí)行的當(dāng)前路徑下生成WeChat.decrypted文件

7.1 dumpdecrypted對(duì)系統(tǒng)ios9.3.2以上的版本砸殼失敗, 先遠(yuǎn)程自己的設(shè)備:ssh root@設(shè)備IP ; 執(zhí)行命令:su mobile->cd; 接著砸殼;砸殼文件所在目錄:/var/mobile/

8.將生成的WeChat.decrypted使用scp命令拷貝到Mac電腦上,和之前從Mac電腦拷貝dumpdecrypted.dylib到手機(jī)上類似的語(yǔ)法。(下圖中的黑色覆蓋部分替換為你的Mac登陸用戶名)

拷貝解密文件到Mac.jpg

9.為保險(xiǎn)起見(jiàn),可以對(duì)WeChat.decrypted文件檢查一下,查看砸殼是否成功

如截圖第一個(gè)cryptid 0表示armv7架構(gòu)已成功,第二個(gè)cryptid 1表示arm64未成功

理論上只要把最老的架構(gòu)解密就可以了,因?yàn)樾碌腸pu會(huì)兼容老的架構(gòu);所以這里arm64未成功不影響

查看砸殼情況.jpg

10.再次遠(yuǎn)程連接iPhone,拷貝出WeChat.app待用(注意使用scp -r)

拷貝WeChat.app到Mac電腦.jpg

解密微信可執(zhí)行文件->利用PP助手(推薦)

在已越獄的iPhone上安裝PP助手后,從PP助手中下載微信客戶端

PP助手上面的App的可執(zhí)行文件都是經(jīng)過(guò)了砸殼的,所以可以省去自己砸殼的步驟

我們可以按照自己砸殼的步驟,導(dǎo)出PP助手的微信可執(zhí)行文件,利用otool查看砸殼情況

PP助手中WeChat砸殼情況.jpg

這表示armv7和arm64均已解密

同樣再次遠(yuǎn)程連接iPhone,拷貝出WeChat.app待用

生成并注入dylib

1.下載并安裝iOSOpenDev

安裝iOSOpenDev.jpg

Xcode 8,直接安裝iOSOpenDev會(huì)失敗。

安裝iOSOpenDev失敗.jpg

如果你們也遇到類似的問(wèn)題,可以嘗試下載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.創(chuàng)建dylib工程并生成dylib

安裝完iOSOpenDev后,在Xcode中選擇Cocoa Touch Library。

創(chuàng)建Cocoa Touch Library工程.jpg

點(diǎn)擊Next開(kāi)始新建工程,將product name命名為autoGetRedEnv;

刪除autoGetRedEnv.h文件,修改autoGetRedEnv.m為autoGetRedEnv.mm,然后在項(xiàng)目中加入CaptainHook.h;

從github中下載autoGetRedEnv工程源碼中的CaptainHook.h和autoGetRedEnv.mm拷貝源碼,復(fù)制到工程中對(duì)應(yīng)文件中,完成后進(jìn)行(真機(jī))編譯,即可得到libautoGetRedEnv.dylib文件

hook微信的AsyncOnAddMsg: MsgWrap:方法,實(shí)現(xiàn)方法如下:

//聲明CMessageMgr類
CHDeclareClass(CMessageMgr);
CHMethod(2, void, CMessageMgr, AsyncOnAddMsg, id, arg1, MsgWrap, id, arg2)
{
  //調(diào)用原來(lái)的AsyncOnAddMsg:MsgWrap:方法
  CHSuper(2, CMessageMgr, AsyncOnAddMsg, arg1, MsgWrap, arg2);
  //具體搶紅包邏輯
  //...
  //調(diào)用原生的打開(kāi)紅包的方法
  //注意這里必須為給objc_msgSend的第三個(gè)參數(shù)聲明為NSMutableDictionary,不然調(diào)用objc_msgSend時(shí),不會(huì)觸發(fā)打開(kāi)紅包的方法
  ((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 添加微信步數(shù)修改


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);
    
    // 微信步數(shù)  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);
    
    // 微信步數(shù)  CHLoadLateClass(WCDeviceStepObject);
    CHHook(0, WCDeviceStepObject, m7StepCount);
    CHHook(0, WCDeviceStepObject, hkStepCount);
    // 消息防撤回
    CHHook(1, CMessageMgr, onRevokeMsg); 
}


3.注入dylib

通過(guò)yoyolibWeChat注入dylib (相當(dāng)于告知WeChat有這么個(gè)東西了,到時(shí)候程序可以加載這個(gè)dylib)

./yololib 目標(biāo)可執(zhí)行文件 需注入的dylib

目標(biāo)可執(zhí)行文件:即,WeChat.app/WeChat解密后得到的文件;如果是自己砸殼時(shí),對(duì)應(yīng)的則是之前導(dǎo)出的WeChat.decrypted文件(建議將WeChat.decrypted文件做好備份以便之后使用,同時(shí)把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
將四個(gè)文件,放入到之前備份好的WeChat.app文件夾中:
  • 1.embedded.mobileprovision
  • 2.libautoGetRedEnv.dylib
  • 3.注入libautoGetRedEnv.dylib后的WeChat文件
  • 4.Entitlements.plist

embedded.mobileprovision文件就是蘋果開(kāi)發(fā)者網(wǎng)站中的Provisioning Profiles文件,如果之前創(chuàng)建好了直接下載重命名為embedded.mobileprovision即可。

Provisioning Profiles文件.png

給微信重新簽名

重新簽名命令格式:codesign -f -s 證書名字 目標(biāo)文件

證書名字可以在鑰匙串中找到

分別用codesign命令來(lái)為微信中的相關(guān)文件簽名,具體實(shí)現(xiàn)如下:

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來(lái)生成ipa了,具體實(shí)現(xiàn)如下:
xcrun -sdk iphoneos PackageApplication -v WeChat.app  -o ~/WeChat.ipa
重新簽名.png

安裝擁多種功能的微信

只要手機(jī)id加入了開(kāi)發(fā)者證書中都是可以安裝的

iTools.png
微信步數(shù).jpg
微信紅包.jpg
微信紅包2.png
系統(tǒng)版本.jpg

哈哈哈哈哈哈, 大家玩的開(kāi)心!!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容