參考地址
https://github.com/Urinx/iOSAppHook
https://github.com/TKkk-iOSer/TKTweakDemo
微信自動搶紅包
學(xué)習(xí)文章合集
1、逆向第一步,應(yīng)用的脫殼
由于本人沒有越獄的機器使用PP助手,版本為6.6.6
將.ipa
后綴改為.zip
進行解壓
2、應(yīng)用簽名
代碼簽名探析中對codesign
說的比較詳細。
iOS簽名原理
a、使用下面命令,可以查看一些信息
codesign -vv -d WeChat.app
b、驗證是否簽名成功
codesign --verify Example.app
這里具體的原理不深究,我使用開源的工具進行重簽名
AppResign,
將下載好的AppResign 拷貝到Payload目錄中使與WeChat.app
在同一目錄中,如下圖
cd到Payload
目錄中執(zhí)行./AppResign -h
查看使用幫助
Version: 2.2.1
Usage:
./AppResign [-options] [INPUT] [OUTPUT]
Options:
-h help
-v verbose mode, print all logs
-c certificate
-p provisioning profile
-b bundle id
-n display name, '*' means default name
Example:
./AppResign xxx.ipa xxx-out.ipa
./AppResign -v xxx.ipa xxx-out.ipa
./AppResign -v -c 'iPhone Developer: XXX XXX (ABCDE12345)' -p 'iOS Team Provisioning Profile: com.xxx.xxx (ABCDE12345)' -b 'com.xxx.xxx' -n '*' xxx.ipa xxx-out.ipa
由于我這邊使用的證書我描述文件不支持Watch,所有需要刪除Watch相關(guān)還有Plugs,
使用
AppResign
進行重簽名
./AppResign WeChat.app WeChat.ipa
首先選擇簽名的證書、然后選擇相應(yīng)的描述文件、設(shè)置應(yīng)用名稱等
使用Xcode來安裝重簽名的.ipa
,使用如下截圖
安裝成功并且成功打開了,證明重簽名成功。
3、iOSOpenDev的安裝
安裝使用教程,安裝成功后新建一個dylib工程如下圖
HookDemo
,在HookDemo.mm
中添加如下代碼
#import <Foundation/Foundation.h>
#import "CaptainHook/CaptainHook.h"
#import <UIKit/UIKit.h>
#include <notify.h> // not required; for examples only
// Objective-C runtime hooking using CaptainHook:
// 1. declare class using CHDeclareClass()
// 2. load class using CHLoadClass() or CHLoadLateClass() in CHConstructor
// 3. hook method using CHOptimizedMethod()
// 4. register hook using CHHook() in CHConstructor
// 5. (optionally) call old method using CHSuper()
CHDeclareClass(UIApplication);
CHDeclareClass(MicroMessengerAppDelegate);
CHOptimizedMethod2(self, void, MicroMessengerAppDelegate, application, UIApplication *, application, didFinishLaunchingWithOptions, NSDictionary *, options)
{
CHSuper2(MicroMessengerAppDelegate, application, application, didFinishLaunchingWithOptions, options);
NSLog(@"## Start Cycript ##");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"大杰哥很丑" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"關(guān)閉", nil];
[alert show];
// CYListenServer(CYCRIPT_PORT);
}
CHConstructor {
@autoreleasepool {
CHLoadLateClass(MicroMessengerAppDelegate);
CHHook2(MicroMessengerAppDelegate, application, didFinishLaunchingWithOptions);
}
}
注意需要記得導(dǎo)入UIkit框架,然后編譯工程,拷貝HookDemo.dylib
到Payload
目錄下
拷貝后的目錄信息如下圖
使用yololib工具對對二進制文件進行dylib的注入,將編譯好的
yololib
也同樣拷貝到Payload
目錄中去,然后執(zhí)行下面的命令
./yololib WeChat.app/WeChat HookDemo.dylib
使用MachOView查看,動態(tài)是否注入成功,查看Load Commands
的數(shù)據(jù)段中,可以看到我們注入的HookDemo.dylib
如下
最后記得我們還需要將我們注入的dylib文件放到WeChat.app目錄下。
cp HookDemo.dylib WeChat.app/
這里我們注入了HookDemo.dylib
,需要重新簽名
./AppResign WeChat.app WeChat.ipa
安裝WeChat.ipa
到手機中,打開App出現(xiàn)如下圖的彈窗證明成功
使用idevicesyslog
查看手機日志(注意這里需要手機連接電腦),安裝教程,使用方法如下
idevicesyslog | grep WeChat
就能查看詳細消息