iOS逆向與安全--Logos語法

Logos是iOS逆向中的一個(gè)非常強(qiáng)大的一個(gè)組件淳蔼,可以輕松的編寫Hook代碼乡范,官網(wǎng)網(wǎng)址:http://iphonedevwiki.net/index.php/Logos
Logos底層實(shí)現(xiàn)原理是對Cydia Substrate (官方地址:http://www.cydiasubstrate.com/)中MobileHooker的MSHookFunction函數(shù)的進(jìn)一步封裝

下面詳細(xì)介紹logos常用的語法和使用方法
1、%group 用于將* %hook 分組生年,便于代碼管理及按條件初始化分組婴程,必須以 %end 結(jié)尾;一個(gè) %group 可以包含多個(gè) %hook , 如果使用%group抱婉,就必須使用%ctor來初始化分組
用法如下:

%group group1
%hook ViewController
// your code here
%end // end hook
%end // end group1 

%group group2
%hook ViewController

// your code here
%end // end hook
%end // end group2

%ctor {
if ([UIDevice currentDevice].systemVersion.floatValue >= 11.1(也可以是其他判斷條件排抬,這里舉例使用系統(tǒng)版本) ) {
%init(group1);
} else {
%init(group2);
}
}

2懂从、%init 用于初始化某個(gè) %group ,必須在 %hook 或 %ctor 內(nèi)調(diào)用蹲蒲。如果帶參數(shù)番甩,則初始化指定的 group,如果不帶參數(shù)届搁,則初始化 _ungrouped缘薛,只有調(diào)用了%init,對應(yīng)的%group 才能起作用

3卡睦、%ctor 生成一個(gè)匿名構(gòu)造函數(shù)(默認(rèn)優(yōu)先級(jí))宴胧,如果不定義,會(huì)自動(dòng)生成一個(gè) *%ctor ,并在其中調(diào)用 %init(_ungrouped) 表锻,不需要以 %end 結(jié)尾

%hook ViewController 
- (void)reboot {
NSLog(@"If rebooting doesn't work then I'm screwed.");
%orig;
}
%end
可以成功生效,因?yàn)?Theos 隱式定義了如下內(nèi)容:

%ctor{
%init(_ungrouped);
}
而
%hook ViewController
- (void)reboot{
NSLog(@"If rebooting doesn't work then I'm screwed.");
%orig;
}
%end

%ctor{
// Need to call %init explicitly!
}里的 %hook 無法生效恕齐,
因?yàn)檫@里顯示定義了 %ctor ,卻沒有調(diào)用 %init 瞬逊,
%group(_ungrouped) 不起作用显歧。
%ctor 一般可以用來初始化 %group ,以及進(jìn)行 MSHookFunction 等操作。

4确镊、%hook 預(yù)處理指令士骤,指定需要hook的類,必須以%end結(jié)尾蕾域,內(nèi)部寫需要hook的代碼

%hook ViewController
- (void)menuButtonDown:(id)down{
NSLog(@"你好");
%orig;//call the original menuButtonDown;
}
%end

這段代碼的意思是勾住(hook) ViewController 類里的menuButtonDown: 函數(shù)拷肌,先將一句話寫入 NSLog , 再執(zhí)行函數(shù)的原有操作。

5旨巷、%log 該指令在%hook內(nèi)部使用巨缘,將函數(shù)的類名、參數(shù)等信息寫入NSLog采呐,打印出來带猴。

%hook  ViewController
- (void)menubuttonDown:(id)down
{
%log((NSString *)@"iOSRE",(NSString *)@"Debug");
%orig;//call the original _menuButtonDown;
}
%end

6、%orig 在%hook內(nèi)部使用懈万,執(zhí)行被勾住(hook)的函數(shù)的原始代碼。

%hook ViewController
- (void)menuButtonDown:(id)down
{
NSLog(@"你好");
%orig; // 
}
%end
如果去掉 %orig 那么原始函數(shù)不會(huì)執(zhí)行靶病。

%hook ViewController
- (void)menuButtonDown:(id)down{
NSLog(@"你好");
}
%end

還可以利用 %orig 更改原始行數(shù)的參數(shù)会通。
%hook ViewController
- (void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2
{
%orig(@"Re",arg2);
}
%end

7、%new 在 %hook 內(nèi)部使用,給一個(gè)現(xiàn)有 類 增加新函數(shù)娄周,功能與 class_addMethod 相同涕侈。它的用法如下:

%hook ViewController 
%new 
- (void)namespaceNewMethod {
NSLog(@"We've added a new method to SpringBoard."); 
}
%end

8、%c 作用等同于 objc_getClass 或 NSClassFromString煤辨,即動(dòng)態(tài)獲取一個(gè)類的定義,在 %hook 或 %ctor 內(nèi)使用裳涛。

以上是logos語法常用的一些用法木张,歡迎留言交流指正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末端三,一起剝皮案震驚了整個(gè)濱河市舷礼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌郊闯,老刑警劉巖妻献,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異团赁,居然都是意外死亡育拨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門欢摄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熬丧,“玉大人,你說我怎么就攤上這事怀挠∥龊” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵唆香,是天一觀的道長嫌变。 經(jīng)常有香客問我,道長躬它,這世上最難降的妖魔是什么腾啥? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮冯吓,結(jié)果婚禮上倘待,老公的妹妹穿的比我還像新娘。我一直安慰自己组贺,他們只是感情好凸舵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著失尖,像睡著了一般啊奄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掀潮,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天菇夸,我揣著相機(jī)與錄音,去河邊找鬼仪吧。 笑死庄新,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播择诈,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼械蹋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了羞芍?” 一聲冷哼從身側(cè)響起哗戈,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涩金,沒想到半個(gè)月后谱醇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡步做,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年副渴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片全度。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煮剧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出将鸵,到底是詐尸還是另有隱情勉盅,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布顶掉,位于F島的核電站草娜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏痒筒。R本人自食惡果不足惜宰闰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望簿透。 院中可真熱鬧移袍,春花似錦、人聲如沸老充。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啡浊。三九已至觅够,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巷嚣,已是汗流浹背喘先。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涂籽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓砸抛,卻偏偏與公主長得像评雌,于是被迫代替她去往敵國和親树枫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354