日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS逆向之iOSOpenDev

發布時間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS逆向之iOSOpenDev 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上篇談到使用TheOS進行越獄開發,但是流程相對而言較復雜,本篇我們談一下iOSOpenDev進行越獄開發。通過使用iOSOpenDev,我們可以使用Xcode進行開發、編譯、生成并運行到設備上。

1.安裝iOSOpenDev

  • 打開網址:http://iosopendev.com/download/,選擇“iOSOpenDev 1.6-2 Installer”,下載完成之后,直接安裝pkg文件。在安裝過程中,有可能出現失敗,按照 這篇文章 介紹的方法,進行處理。
  • 安裝成功后,打開XCode,新建工程,我們可以看到iOSOpenDev已經集成在XCode中了,并附帶了很多模板:

2.使用iOSOpenDev

第一步:新建工程,這里選擇“Logos Tweak”,新建完成之后,工程結構如下圖所示:

可以看到有一個.xm文件,我們打開看一下內容:

// Logos by Dustin Howett // See http://iphonedevwiki.net/index.php/Logos#error iOSOpenDev post-project creation from template requirements (remove these lines after completed) -- \Link to libsubstrate.dylib: \(1) go to TARGETS > Build Phases > Link Binary With Libraries and add /opt/iOSOpenDev/lib/libsubstrate.dylib \(2) remove these lines from *.xm files (not *.mm files as they're automatically generated from *.xm files)%hook ClassName+ (id)sharedInstance {%log;return %orig; }- (void)messageWithNoReturnAndOneArgument:(id)originalArgument {%log;%orig(originalArgument);// or, for exmaple, you could use a custom value instead of the original argument: %orig(customValue); }- (id)messageWithReturnAndNoArguments {%log;id originalReturnOfMessage = %orig;// for example, you could modify the original return value before returning it: [SomeOtherClass doSomethingToThisObject:originalReturnOfMessage];return originalReturnOfMessage; }%end

.xm文件提示需要鏈接 libsubstrate.dylib,另外看一下很多%開頭的語句。%是Legos中的指示符,和TheOS中一樣。

這里先把.xm文件的內容清空,然后ibsubstrate.dylib鏈接進來,另外也把UIKit(因為我們需要一個提示框顯示信息)鏈接進來:

和TheOS一樣,這里我們也只是顯示一個Alert框,代碼也一樣:

#import <UIKit/UIKit.h>%hook SpringBoard-(void)applicationDidFinishLaunching:(id)application {%orig;UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello, Gof!" message:@"LeeGof is very handsome" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];[alert show]; }%end

再看一下.mm文件,已經自動根據.xm文件生成了如下代碼:

#line 1 "/Users/GofLee/Desktop/逆向工程/code/TweakDemo/TweakDemo/TweakDemo.xm" #import <UIKit/UIKit.h>#include <substrate.h> #if defined(__clang__) #if __has_feature(objc_arc) #define _LOGOS_SELF_TYPE_NORMAL __unsafe_unretained #define _LOGOS_SELF_TYPE_INIT __attribute__((ns_consumed)) #define _LOGOS_SELF_CONST const #define _LOGOS_RETURN_RETAINED __attribute__((ns_returns_retained)) #else #define _LOGOS_SELF_TYPE_NORMAL #define _LOGOS_SELF_TYPE_INIT #define _LOGOS_SELF_CONST #define _LOGOS_RETURN_RETAINED #endif #else #define _LOGOS_SELF_TYPE_NORMAL #define _LOGOS_SELF_TYPE_INIT #define _LOGOS_SELF_CONST #define _LOGOS_RETURN_RETAINED #endif@class SpringBoard; static void (*_logos_orig$_ungrouped$SpringBoard$applicationDidFinishLaunching$)(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); static void _logos_method$_ungrouped$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST, SEL, id); #line 3 "/Users/GofLee/Desktop/逆向工程/code/TweakDemo/TweakDemo/TweakDemo.xm"static void _logos_method$_ungrouped$SpringBoard$applicationDidFinishLaunching$(_LOGOS_SELF_TYPE_NORMAL SpringBoard* _LOGOS_SELF_CONST self, SEL _cmd, id application) {_logos_orig$_ungrouped$SpringBoard$applicationDidFinishLaunching$(self, _cmd, application);UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello, Gof!" message:@"LeeGof is very handsome" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];[alert show]; }static __attribute__((constructor)) void _logosLocalInit() { {Class _logos_class$_ungrouped$SpringBoard = objc_getClass("SpringBoard"); if (_logos_class$_ungrouped$SpringBoard) {MSHookMessageEx(_logos_class$_ungrouped$SpringBoard, @selector(applicationDidFinishLaunching:), (IMP)&_logos_method$_ungrouped$SpringBoard$applicationDidFinishLaunching$, (IMP*)&_logos_orig$_ungrouped$SpringBoard$applicationDidFinishLaunching$);} else {HBLogError(@"logos: nil class %s", "SpringBoard");}} } #line 13 "/Users/GofLee/Desktop/逆向工程/code/TweakDemo/TweakDemo/TweakDemo.xm"

接著我們看一下Target中的“User-Defined”:

在這里,配置“iOSOpenDevDevice”字段為聯調的設備IP。直接連接真機運行(選擇Build For -- Profiling),可以看到代碼已經生效。如下圖所示:

3.常見錯誤

錯誤一:Failed to create directory /var/root/iOSOpenDevPackages on device 10.1.xx.xx,如下圖所示:

【解決方案】:在終端輸入如下指令:

iosod sshkey -h 10.1.xx.xx

重新再試即可。

錯誤二:運行的時候,有可能出現這樣的錯誤:Use of undeclared identifier 'HBLogError',如下圖所示:

【解決方案】:在.xm文件中加入如下宏定義:

#define HBLogError NSLog

?

轉載于:https://www.cnblogs.com/LeeGof/p/7026734.html

總結

以上是生活随笔為你收集整理的iOS逆向之iOSOpenDev的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品宾馆在线精品酒店 | 国产无遮挡又黄又爽免费视频 | 在线免费观看视频你懂的 | 怡红院一区二区三区 | 日本精品视频网站 | 一本一道精品欧美中文字幕 | 亚洲三级网站 | 色屁屁影院www国产高清麻豆 | 国产手机av在线 | 精品福利一区 | 日韩精品一卡 | 国产av一区精品 | 成人欧美在线 | 精品国产系列 | 国产精品无码一区二区桃花视频 | 永久免费精品视频 | 色婷婷国产精品 | 久久精品a | 伦理片中文字幕 | 国产精选91 | 成人国产网站 | 777色| 女性向av免费网站 | 免费观看一区二区三区 | 男女做那个的全过程 | 男女免费视频网站 | 日本午夜免费 | 狠狠干男人的天堂 | 男男做爰猛烈叫床爽爽小说 | 西西久久| 天天做天天爱天天操 | 国产精品无码永久免费不卡 | 天堂av一区二区 | 久久精品成人av | 一区二区视频在线观看 | 黄色av免费观看 | 爱福利视频一区 | 国产第一草草影院 | av免费在线观看网址 | 一区二区国产电影 | 黄色一级图片 | 亚洲成a人在线观看 | 国产一级黄 | 一本大道久久久久精品嫩草 | 制服中文字幕 | 美日韩免费视频 | 国产精品日 | 成人xxx视频 | 免费一区二区三区 | 成人黄色录像 | 国产在线观看不卡 | 在线成人日韩 | 国产午夜精品免费一区二区三区视频 | 狠狠噜噜 | 久久精品美女 | 中文字幕国产在线观看 | 午夜影院免费体验区 | 91精品国产一区二区无码 | 精品国产无码在线 | 污黄视频在线观看 | 扒开美女内裤狂揉下部 | 日本免费a视频 | 五月天婷婷在线播放 | aaaaa黄色片 天堂网在线观看 | 午夜tv| 黑人玩弄人妻一区二 | 人妻激情偷乱视频一区二区三区 | 精品国产网站 | 天天视频国产 | 久久成人一区 | 天堂国产 | 少妇搡bbbb搡bbb搡打电话 | 欧美黄色免费大片 | 亚洲黄色三级视频 | 手机av在线免费 | 欧美整片在线观看 | 在线观看国产一区二区三区 | 高清一区二区 | 蜜臀av首页 | 久久99久久99精品中文字幕 | 黄色爱爱视频 | 免费成人深夜夜国外 | 黄色毛毛片 | 中国黄色网址 | 性巴克成人免费网站 | 爱涩av| 末路1997全集免费观看完整版 | a级黄色录像 | 日韩精品欧美精品 | 欧美va视频 | 黄色三级带 | 99热热99| 国产精品久久久久久久久免费看 | 91福利视频免费观看 | 国产精品美女 | 中文字幕在线免费观看视频 | 欧美一区二| 麻豆精品视频 | 东北少妇高潮抽搐 |