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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ios逆向工具tweak logos语法总结

發布時間:2023/12/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios逆向工具tweak logos语法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • %hook
    • %hook 后面的類名,是要替換的類名, 里面的 self, 就是這個類
    • self 要使用的方法,如果報錯找不到方法名,則要在前面聲明這個類有這個方法,語法如下:
  • %new
  • %orig
  • 發布debug和release版本
  • %c
  • %ctor
  • %dtor
  • 獲取原來app里的對象變量MSHookIvar

以%百分號開頭的語句,是logos語法,可以在theos tweek里面使用

%hook

%hook 類名 方法1.. 方法2.. %end

%hook 后面的類名,是要替換的類名, 里面的 self, 就是這個類

self 要使用的方法,如果報錯找不到方法名,則要在前面聲明這個類有這個方法,語法如下:

@interface 類名 聲明的方法 @end

例如make時候報錯如下:

Tweak.x:19:25: error: no visible @interface for 'FindFriendEntryViewController' declares the selector 'numberOfSectionsInTableView:'if ( section == [self numberOfSectionsInTableView:tableView ] - 1 ){~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~

解決方法:
聲明self是什么類,在里面加上方法名,如下:

@interface FindFriendEntryViewController - (long long)numberOfSectionsInTableView:(id)arg1; @end

方法2:聲明這個類,并且說明他遵守哪個協議,因為上面的numberOfSectionsInTableView是在協議UITableViewDataSource里定義的,所以聲明self的類遵守了哪個協議,就代表里面有哪些方法.

@interface FindFriendEntryViewController<UITableViewDataSource> @end

%new

%new 方法名1.. %new 方法名2..
  • %new下面的方法,是自己添加的方法,不是之前類擁有的方法.自定義的方法都要加在 %new 里
  • %new一定要寫在%hook 和 %end之間,就是在%hook 類的里面,否則編譯報錯
  • 自定義的%new方法要在%hook之前聲明,格式如下,否則會報錯找不到方法

error: no visible @interface for ‘類名’ declares the selector ‘方法名’

@interface 類名 方法名 @end

%orig

調用原來的方法,自動傳入原來所有參數,例如原來方法參數是3個,就自動傳入3個,不需要手動填寫參數列表

%orig;

發布debug和release版本

在cydia中已安裝可以查看 是debug版還是release版本
在make之后的mage package決定打包什么版本
debug版本 直接輸入make package

make package

release版本 添加debug=0

make package debug=0

%c

下面2行代碼等價%c() 等價于 NSClassFromString ,可以返回字符串表示的類對象

NSClassFromString(@"Student") %c(Student)

%ctor

在動態庫被加載的時候調用的方法,注意不要寫在%hook和%end之間

%ctor{NSLog(@"ctor執行-------------"); }

%dtor

在app被關閉的時候調用,注意不要寫在%hook和%end之間

%dtor{NSLog(@"dtor-------------"); }

獲取原來app里的對象變量MSHookIvar

MSHookIvar<變量類型>(要獲取的對象, "變量名");

例如下面代碼 返回原理的self對象里面的age變量

unsigned int age = MSHookIvar<unsigned int>(self, "age");

總結

以上是生活随笔為你收集整理的ios逆向工具tweak logos语法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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