Xcode番外__獲取到“調(diào)用我的地址”和“調(diào)用我的那個(gè)函數(shù)的地址”

一.目標(biāo)

  • 1.找到內(nèi)存中調(diào)用setupNotification方法的位置
  • 2.找到調(diào)用setupNotification的方法funcationA的位置
- (void)viewDidLoad{
    [self funcationA];
}

- (void)funcationA{

     self.name = @"lijiachao";
    [self setupNotification];
    
    //自定的某個(gè)類的某個(gè)方法
    [LRDocumentPath fetchPath];
}

- (void)setupNotification{
      NSLog(@"woshiXXX");
}

在正向開發(fā)中,比較簡單,都不用找洼滚,或者看代碼就好了。但是在逆向開中疮方,沒有看到代碼站辉,那么如何找到那?方法有兩種:

  • 1.通過Xcode逆向開發(fā)
  • 2.使用debugserver+lldb組合開發(fā)

二.基礎(chǔ)概念

眾所周知溪厘,在逆向開發(fā)中.
我們?nèi)绻胫?strong>我調(diào)用了誰,去Hopper或者IDA中看就好了,
但是怎么看到誰調(diào)用了我是個(gè)難題。但也有方法:

  • 1.如果使用debugserver+lldb組合牌柄,可以使用po $lr畸悬,打印地址;可以獲取到”調(diào)用我的位置珊佣,然后通過減去偏移量獲取基址地址蹋宦,然后在hopper中找到,然后就可以看到funcationA的位置咒锻。兩個(gè)地址都獲得了.
  • 2.使用Xcode調(diào)試冷冗。看右側(cè)的即可惑艇。今天主要講解Xcode調(diào)試方法

先去了解Xcode幾個(gè)按鈕的名稱和功能

Jietu20170714-195414.jpg
//
//  LRTest1Controller.m
//  LLDBTest
//
//  Created by 王鑫 on 2017/7/14.
//  Copyright ? 2017年 王鑫. All rights reserved.
//

#import "LRTest1Controller.h"

@interface LRTest1Controller ()
/** view */
@property(strong,nonatomic)  UIView *bgView;
/** money */
@property(assign,nonatomic)CGFloat money;
@end

@implementation LRTest1Controller

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self button:nil];
}
- (IBAction)button:(id)sender {
    if (self.person) {
//        NSLog(@"有人\n name  = %@,age = %ld",self.person.name,self.person.age);
        [self setupName];
        self.money = 100.;
    }else{
        LRPerson *per = [[LRPerson alloc] init];
        per.name = @"王鑫";
        NSLog(@"%@",per.name);
    }
}

- (void)setupName{
    self.person.name = @"bbb";
    [self logSome];
    [self createSubViews];
    [self removeSomeViews];
}


- (void)logSome{
    
    NSLog(@"有人\n name  = %@,age = %ld",self.person.name,self.person.age);
}

- (void)createSubViews{
    self.bgView = [[UIView alloc] init];
    [self.view addSubview:self.bgView];
    self.bgView.frame = CGRectMake(100, 400, 100, 100);
}

- (void)removeSomeViews{
    NSLog(@"-------");
}



@end

簡介:

  • 第四個(gè)按鈕:單步執(zhí)行
  • 第五個(gè)按鈕:跟入執(zhí)行
  • 第六個(gè)按鈕:返回到調(diào)用我的位置

三.實(shí)際操作

第四個(gè)按鈕:單步執(zhí)行
一步一步執(zhí)行蒿辙,如果某一步是個(gè)方法拇泛,我們不進(jìn)入方法內(nèi)部,繼續(xù)往下執(zhí)行.

Jietu20170715-101813-HD.gif

第五個(gè)按鈕:跟入執(zhí)行,進(jìn)入到函數(shù)的內(nèi)部.

Jietu20170715-102132-HD.gif

第六個(gè)按鈕:返回到調(diào)用我的位置

Jietu20170715-100725.jpg

左側(cè)就會(huì)一直返回到調(diào)用我的位置思灌。
如果這個(gè)是Xcode正向開發(fā)俺叭,那么很好,可以看到調(diào)用我的那個(gè)方法名稱泰偿,但是如果是逆向開發(fā)的時(shí)候熄守,那么有些方法看不到,我們使用了Hook勾住甜奄,所以切記左側(cè)的都是一些亂東西柠横,我們要將頁面拉倒頂部,然后就可以看到調(diào)用我的函數(shù)课兄,獲取到偏移函數(shù)的位置

正向開發(fā)圖可以直接看到”調(diào)用我的函數(shù)名”

四.查找“調(diào)用我的位置”和“誰調(diào)用了我那個(gè)函數(shù)的名稱”

查找調(diào)用我的位置有三個(gè):

  • 1.點(diǎn)擊調(diào)用棧牍氛,然后就可以看到了
  • 2.1 逆向環(huán)境下:一下一下點(diǎn)擊第五個(gè)按鈕,直到跳轉(zhuǎn)到匯編頁面
  • 2.2 正向環(huán)境下:一下一下點(diǎn)擊第五個(gè)按鈕烟阐,就可以跳轉(zhuǎn)到了調(diào)用我的地方
  • 3.點(diǎn)擊第六個(gè)按鈕即可

查找調(diào)用我的那個(gè)函數(shù):

當(dāng)我們?cè)跀帱c(diǎn)出搬俊,一下一下點(diǎn)擊第五個(gè)按鈕,直到跳轉(zhuǎn)到匯編頁面為止蜒茄,然后將頁面向上拉到頂部唉擂,看到的地址就是實(shí)際在內(nèi)存的地址.

逆向開發(fā)中,一下一下點(diǎn)擊檀葛,直到出現(xiàn)匯編才行(或者是點(diǎn)擊第六個(gè)按鈕玩祟,直接返回到調(diào)用的地方)
找到了調(diào)用他的函數(shù)
向上拉到頂,獲取到函數(shù)調(diào)用調(diào)用他的地址

獲取到“調(diào)用我的那個(gè)函數(shù)”的實(shí)際內(nèi)存地址是0x101208c2c屿聋。

為什么要一下一下的點(diǎn)擊空扎,直到匯編頁面

因?yàn)槲覀冞@個(gè)是反匯編润讥,所以看不到他們的源碼转锈,所以只能點(diǎn)一下,再點(diǎn)一下楚殿,直到獲得匯編頁面撮慨。
正向開發(fā)中,我們點(diǎn)擊第五個(gè)按鈕的時(shí)候脆粥,是一句一句看的見的代碼在執(zhí)行砌溺,但是沒有源碼的情況下,我們只能點(diǎn)一下变隔,點(diǎn)一下的嘗試抚吠,直到匯編頁面.

獲取偏移地址

既然我們?cè)?code>Xcode中調(diào)試應(yīng)用程序,那么我們就在這里不適用debuge+lldb那個(gè)經(jīng)典的方式去獲得應(yīng)用的偏移量了.
直接在Xcode中打印獲得偏移量0x00000000000ac000弟胀。

(lldb) image list -o -f
[  0] 0x00000000000ac000 /Users/wangxin/Library/Developer/Xcode/DerivedData/IPAPatch-hcpqapxbshyvjsajulgtoonbuagq/Build/Products/Debug-iphoneos/WeChat.app/WeChat
[  1] 0x00000000000dc000 /Users/wangxin/Library/Developer/Xcode/iOS DeviceSupport/9.2 (13C75)/Symbols/usr/lib/dyld
...
[327]                    __lldb_objc_find_implementation_for_selector
[328]                    __lldb_caller_function
[329]                    __lldb_apple_objc_v2_get_dynamic_class_info
[336] 0x0000000003b7c000 /Users/wangxin/Library/Developer/Xcode/iOS DeviceSupport/9.2 (13C75)/Symbols/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/Libraries/libCGInterfaces.dylib
(lldb) 

遵循公式 Hopper的地址 = 實(shí)際內(nèi)存地址 - 偏移量

hopper地址 = 0x101208c2c - 0x00000000000ac000 = 000000010115cc2c

hopper中找到調(diào)用者的地址和名稱

hopper的地址找到,然后在Hopper中查找

Jietu20170714-202120@2x.jpg

在這里輸入000000010115cc2c地址

可以獲取到方法是


[WebViewA8KeyLogicImpl handleOnGetA8KeyOK:reason:req:]:

Jietu20170714-202303.jpg

ps:
1.之前我在斷點(diǎn)處,直接打印lr的內(nèi)存地址孵户,試圖找到調(diào)用者的內(nèi)存地址萧朝,然后減去了偏移地址但是結(jié)果不對(duì),現(xiàn)在看來夏哭,是我的位置不對(duì)

2.hopperIDA他們的地址是相對(duì)于偏移地址 = 0而言的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末检柬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子竖配,更是在濱河造成了極大的恐慌何址,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件进胯,死亡現(xiàn)場離奇詭異用爪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)胁镐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門偎血,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盯漂,你說我怎么就攤上這事颇玷。” “怎么了就缆?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵帖渠,是天一觀的道長。 經(jīng)常有香客問我竭宰,道長空郊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任羞延,我火速辦了婚禮渣淳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伴箩。我一直安慰自己入愧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布嗤谚。 她就那樣靜靜地躺著棺蛛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巩步。 梳的紋絲不亂的頭發(fā)上旁赊,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音椅野,去河邊找鬼终畅。 笑死籍胯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的离福。 我是一名探鬼主播杖狼,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼妖爷!你這毒婦竟也來了蝶涩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤絮识,失蹤者是張志新(化名)和其女友劉穎绿聘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體次舌,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熄攘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垃它。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲜屏。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖国拇,靈堂內(nèi)的尸體忽然破棺而出洛史,到底是詐尸還是另有隱情,我是刑警寧澤酱吝,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布也殖,位于F島的核電站,受9級(jí)特大地震影響务热,放射性物質(zhì)發(fā)生泄漏忆嗜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一崎岂、第九天 我趴在偏房一處隱蔽的房頂上張望捆毫。 院中可真熱鬧,春花似錦冲甘、人聲如沸绩卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽濒憋。三九已至,卻和暖如春陶夜,著一層夾襖步出監(jiān)牢的瞬間凛驮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工条辟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留黔夭,地道東北人宏胯。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像本姥,于是被迫代替她去往敵國和親胳嘲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫扣草、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,093評(píng)論 4 62
  • 面試題:開啟瀏覽器窗口颜屠,部分頁面會(huì)閃爍一下辰妙。是因?yàn)轫撁嬖诩虞d數(shù)據(jù)和解析是從上向下執(zhí)行的,所以前面的界面信息先加載甫窟,...
    小草莓蹦蹦跳閱讀 458評(píng)論 0 0
  • 家庭 總有人在那說哈:“互聯(lián)網(wǎng)讓人們互相疏遠(yuǎn)密浑,因?yàn)槌撩栽诰W(wǎng)絡(luò)的虛擬關(guān)系中,耽誤了和現(xiàn)實(shí)的活人打交道粗井《疲”可是就在前兩...
    朱進(jìn)偉西農(nóng)閱讀 505評(píng)論 0 1
  • 簡介 住在一個(gè)寢室的小莫,陳晨浇衬,安然之間有著不同的關(guān)系懒构。小莫打架被開除了,臨走的時(shí)候耘擂,她對(duì)安然說:“你知道愛一個(gè)人...
    南極的狗閱讀 212評(píng)論 0 0