《iOS 逆向》010.10Hook原理探究

HOOK原理:

1.MachO是被谁加载的?DYLD动态加载的。
2.ASLR(地址空间布局随机化)技术MachO文件加载的时候是随机地址!
3.PIC技术(位置代码独立)
3.1 -如果MachO内部需要调用 系统的函数时
-先在_DATA段中建立一个指针,指向外部函数!
-DYLD会动态的进行绑定!将MachO中的DATA段中的指针,指向外部函数!

//dis -s 是反汇编指令


屏幕快照 2018-05-22 下午6.15.18.png

验证原理

源码:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"q");
    struct rebinding rebinding;
    rebinding.name = "NSLog";
    rebinding.replacement = myNSLog;
    rebinding.replaced = (void *)&old_nslog;
    
    //定义数组
    struct rebinding rebs[] = {rebinding};
    rebind_symbols(rebs, 1);
    
}
    

//函数指针保存原来的
static void (* old_nslog)(NSString *format, ...);
//新的nslog
void myNSLog (NSString *format, ...){
    format = [NSString stringWithFormat:@"勾住了啊"];
    //调用原来的
    old_nslog(format);
    
}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NSLog(@"asdadas");
}

0x000000010072c000+0x8018指针(就是_DATA段中建立的指针,指向外部函数NSLog)
调试代码:

(lldb) x 0x000000010072c000+0x8018
0x100734018: 24 af cc 83 01 00 00 00 34 b9 cb 83 01 00 00 00  $.......4.......
0x100734028: d8 94 9e 8c 01 00 00 00 38 2b 73 00 01 00 00 00  ........8+s.....
(lldb) dis -s 0x0183ccaf24
Foundation`NSLog:
    0x183ccaf24 <+0>:  sub    sp, sp, #0x20             ; =0x20 
    0x183ccaf28 <+4>:  stp    x29, x30, [sp, #0x10]
(lldb) x 0x000000010072c000+0x8018
0x100734018: b0 1c 73 00 01 00 00 00 34 b9 cb 83 01 00 00 00  ..s.....4.......
0x100734028: d8 94 9e 8c 01 00 00 00 3c 2e e6 82 01 00 00 00  ........<.......
(lldb) dis -s 0x0100731cb0
004-FishhoookDemo`myNSLog:
    0x100731cb0 <+0>:  sub    sp, sp, #0x30             ; =0x30 
    0x100731cb4 <+4>:  stp    x29, x30, [sp, #0x20]
    0x100731cb8 <+8>:  add    x29, sp, #0x20            ; =0x20 
    0x100731cbc <+12>: mov    x8, #0x0
    0x100731cc0 <+16>: stur   x8, [x29, #-0x8]
    0x100731cc4 <+20>: sub    x9, x29, #0x8             ; =0x8 
    0x100731cc8 <+24>: str    x0, [sp, #0x10]
    0x100731ccc <+28>: mov    x0, x9
(lldb) 
    0x183ccaf2c <+8>:  add    x29, sp, #0x10            ; =0x10 
    0x183ccaf30 <+12>: add    x8, x29, #0x10            ; =0x10 
    0x183ccaf34 <+16>: str    x8, [sp, #0x8]
    0x183ccaf38 <+20>: add    x1, x29, #0x10            ; =0x10 
    0x183ccaf3c <+24>: mov    x2, x30
    0x183ccaf40 <+28>: bl     0x183da6d38               ; _NSLogv
(lldb) 

rebinding.name = "NSLog";NSLog作为字符串是怎么被找到的呢?

在Indirect Symbols中Data值是00000089,转换成十进制是137,


Indirect Symbols表

在Symbols Table中的Symbols表中索引137如图,137行Data为9B

Symbols

在String Table中0x0000D01C+0x9B=0xD087


String Table

fishhook
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

  • 一、Fishhook 是什么? 简单来说Fishhook就是hook函数的一种工具,当然它hook的原理和我们熟知...
    bland_Xu阅读 4,297评论 2 18
  • 这是一篇 WWDC 2016 Session 406 的学习笔记,从原理到实践讲述了如何优化 App 的启动时间。...
    茗涙阅读 1,860评论 0 3
  • 深入理解iOS App的启动过程 前言 启动时间是衡量应用品质的重要指标。 本文首先会从原理上出发,讲解iOS系统...
    大维ios阅读 951评论 0 5
  • App 运行理论 理论速成Mach-O 术语Mach-O 是针对不同运行时可执行文件的文件类型。文件类型:Exec...
    未明一二阅读 546评论 1 3
  • 13. Hook原理介绍 13.1 Objective-C消息传递(Messaging) 对于C/C++这类静态语...
    Flonger阅读 1,411评论 0 3