本篇主要提供iOS黑客攻防秘籍2版ios系统的逆向分析与攻防对抗技术讲解汇编基础动态调用静态分析注入与ho电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
商品基本信息,请以下列介绍为准 | |
图书名称: | iOS黑客攻防秘籍 第2版 |
作者: | 陈德 |
定价: | 129.80 |
ISBN号: | 9787115568816 |
出版社: | 人民邮电出版社 |
内容简介 |
本书内容易于理解,可以让读者循序渐进、系统性地学习iOS安全技术。全书共16章,知识点覆盖iOS 8到iOS 14。书中首先细致地介绍了越狱环境的开发与逆向相关工具,然后依次讲解了汇编基础、动态调用、静态分析、注入与hook、文件格式,后为大家呈现了应用破解与应用保护、隐私获取与取证、刷量与作弊、设备ID、写壳内幕等多个主题。
编辑引荐
1.本书的主要特点是能够让初学者快速入门并学习到iOS安全技术的精髓,易学易懂,带领读者直奔主题,内容覆盖iOS 8到iOS 14。
2.本书细致讲解了iOS系统的逆向分析与攻防对抗技术,从越狱环境的开发与逆向的相关工具,由浅入深的延伸到各个主题。
3.本书作者曾创建小型技术论坛供读者交流,并在看雪论坛发表过多篇热帖,该书也受到了看雪论坛iOS安全版主等多名业内人士力荐。
4.和上一版相比,本书的知识体系更加完整,新增了更多技术难题和解决方案。
作者简介 |
陈德 软件安全研究员,2007年开始自学安全技术,师出《黑客防线》,在安全领域精通多方面技术,个人作品有eXfaker、FileMonitorKit、SystemKit等
目录 |
第1章iOS安全机制 1
1.1iOS应用的安装源 1
1.2沙盒 2
1.3代码签名 3
1.4用户权限隔离 4
1.5数据执行保护 4
1.6地址空间布局随机化 5
1.7后台程序 6
第2章越狱环境开发工具的准备 8
2.1越狱与Cydia 8
2.2文件管理工具 11
2.2.1iFile:在手机上管理文件 11
2.2.2AFC2:通过USB管理手机文件 12
2.3命令行工具 12
2.3.1MTerminal:在手机上执行命令行 12
2.3.2OpenSSH:在计算机上执行命令行 13
2.4代码注入测试工具 15
2.5远程调试工具 16
2.5.1debugserver的配置与启动 16
2.5.2LLDB连接debugserver及其调试 17
2.5.3通过USB连接SSH进行调试 19
2.6反汇编工具 20
2.6.1IDA 20
2.6.2Hopper 23
2.7其他工具 24
2.7.1syslogd:记录日志 24
2.7.2ViIMproved:编辑器 24
2.7.3apt:下载命令 25
2.7.4Networkcommands:网络命令 25
2.7.5dumpdecrypted:脱壳 25
2.7.6class-dump:导出头文件 27
2.7.7lsof:查看进程所占用的文件 29
2.7.8AppSync:安装未签名的应用 31
2.7.9AppAdmin:下载指定版本的应用 31
2.7.10Cydown:下载时提取deb包 31
第3章ARM汇编基础 33
3.1ARMv7 33
3.1.1编写32位汇编代码 33
3.1.2寄存器与栈 35
3.1.3基础指令 35
3.1.4条件跳转与循环 36
3.1.5函数参数的调用过程 37
3.1.6Thumb指令 38
3.2ARM64 39
3.2.1编写64位的汇编代码 39
3.2.2寄存器与栈 39
3.2.3函数参数的调用过程 40
3.3在Xcode中使用内联汇编 41
3.3.1C、C、Objective-C调用汇编函数 42
3.3.2直接编写内联汇编 42
第4章应用逆向分析 44
4.1寻找程序入口——main函数 44
4.1.1编写一个测试程序 44
4.1.2ARMv7的main函数 45
4.1.3ARM64的main函数 46
4.2动态调试 47
4.2.1反汇编 47
4.2.2添加断点 48
4.2.3打印数据 53
4.2.4读写数据 54
4.2.5修改程序的执行流程 56
4.2.6查看信息 58
4.2.7执行到上层调用栈 61
4.2.8临时修改变量的值 62
4.2.9使用帮助与搜索 63
4.2.10LLDB脚本 63
4.2.11不越狱使用Xcode调试第三方应用 68
4.2.12IDA动态调试 71
4.3静态分析 75
4.3.1通过字符串定位代码的引用位置 75
4.3.2查看函数被调用的位置 79
4.3.3重设基地址 81
4.3.4修改代码并保存文件 81
4.3.5使用IDAPython脚本 82
4.4逆向分析实例 83
4.5Frida 93
4.5.1Frida的安装与相关工具 93
4.5.2frida-trace实例 97
4.5.3拦截器的使用 99
4.5.4拦截sub_xxxx这种函数 103
4.5.5API查找器和拦截器的组合使用 106
4.5.6远程过程调用 110
4.6使用MonkeyDev逆向应用 114
4.6.1安装MonkeyDev 114
4.6.2分析应用 115
4.6.3不越狱使用Frida 119
第5章Tweak编写技术 122
5.1Theos开发环境的使用 122
5.1.1编写diyi个Tweak 122
5.1.2Theos工程文件 126
5.2逆向分析与编写Tweak 129
5.2.1逆向分析 129
5.2.2编写Tweak 137
5.3使用MonkeyDev开发Tweak 140
第6章注入与Hook 144
6.1注入动态库 144
6.1.1编写动态库 144
6.1.2DynamicLibraries目录 145
6.1.3DYLD_INSERT_LIBRARIES环境变量 145
6.1.4不越狱注入动态库 146
6.2Hook 147
6.2.1CydiaSubstrate 147
6.2.2SymbolTable 150
6.2.3MethodSwizzing 152
第7章Mach-O文件格式解析 154
7.1Mach-O文件格式 154
7.1.1Fat头部 156
7.1.2Mach头部 158
7.1.3Loadcommand 159
7.1.4符号表与字符串表 172
7.2CFString的运行过程 174
7.2.1编写测试代码 174
7.2.2CFString的数据结构 175
7.2.3调试运行过程 176
7.3Mach-OARM函数绑定的调用过程分析 177
7.3.1编写测试代码 177
7.3.2分析ARMv7函数绑定的调用过程 178
7.3.3分析ARM64函数绑定的调用过程 186
7.3.4总结 190
7.4静态库文件格式 192
7.5class-dump导出头文件的原理 194
7.6关于Bitcode 198
7.6.1Bitcode的作用 198
7.6.2在Xcode中如何生成Bitcode 198
7.6.3通过命令行编译Bitcode 200
7.6.4将Bitcode编译成可执行文件 202
7.6.5编译器相关参数 203
第8章设备ID 205
8.1UDID与设备ID 205
8.1.1编写mobileconfig 205
8.1.2编写receive.php 206
8.1.3安装描述文件 206
8.1.4mobileconfig签名 207
8.2IDFA 208
8.3IDFV 208
8.4OpenUDID 209
8.5SimulateIDFA 210
8.6MAC地址 211
8.7ID的持久化存储 214
8.7.1Keychain的存储 214
8.7.2剪贴板 216
8.8DeviceToken 218
第9章刷量与作弊 219
9.1越狱环境下获取root权限 219
9.1.1iOS8-iOS10获取root权限 220
9.1.2iOS11-iOS14获取root权限 220
9.2修改手机信息 221
9.2.1修改基本信息 221
9.2.2修改Wi-Fi信息与运营商 228
9.2.3修改DeviceToken 230
9.2.4修改位置信息 232
9.2.5修改系统启动时间 233
9.2.6修改屏幕亮度、音量、电池电量 234
9.2.7修改磁盘空间与内存 235
9.2.8修改网络IP地址、MAC地址、DNS 236
9.2.9修改上网类型 238
9.2.10修改系统版本与机型 240
9.2.11绕过VPN与HTTP代理检测 246
9.3清除数据 247
9.3.1清除沙盒目录 247
9.3.2清除Keychain 250
9.3.3清除剪贴板 251
9.3.4清除AppGroup 252
9.3.5清除iTunes信息 255
9.4发布应用 256
9.4.1将App打包成deb格式 256
9.4.2制作Cydia源发布应用 257
9.5权限的切换 258
9.6变化IP地址 259
9.7反越狱检测 261
9.8不用越狱修改任意位置信息 263
9.9在两台手机上同时登录同一微信 264
9.10微信的62数据 265
第10章重要信息获取与取证 267
10.1通讯录 267
10.2短信 268
10.3通话记录 269
10.4位置信息 269
10.5网络信息 271
10.5.1上网类型 272
10.5.2热点信息 273
10.5.3DNS信息 274
10.5.4IP地址 275
10.5.5代理信息 277
10.6传感器信息 278
10.6.1加速计 279
10.6.2陀螺仪 280
10.6.3磁力计 281
10.6.4气压计 282
10.7系统信息 283
10.8硬件ID信息 286
10.9已安装的应用列表 289
10.10使用idb分析泄露的数据 291
10.10.1安装和运行 291
10.10.2使用方法 293
10.11重要的文件与目录 296
10.11.1照片 297
10.11.2Safari浏览器书签 297
10.11.3Wi-Fi历史连接记录 297
10.11.4应用快照 298
10.11.5录音 298
10.12libimobiledevice获取手机信息 299
第11章应用破解 301
11.1重打包应用与多开 301
11.1.1重打包应用 301
11.1.2多开 308
11.2应用重签名 310
11.2.1代码签名 311
11.2.2授权机制 314
11.2.3配置文件 315
11.2.4重签名 317
11.3抓包和改包 318
11.3.1tcpdump抓包 318
11.3.2Wireshark抓包 321
11.3.3Charles抓取HTTPS数据包 323
11.3.4Charles修改数据包与重发 327
11.3.5突破SSL双向认证 330
11.4文件监控 331
11.5破解登录验证 332
11.5.1得到HTTP传输的数据 332
11.5.2得到解密的数据 333
11.5.3破解方法 334
第12章应用保护 335
12.1函数名混淆 335
12.2字符串加密 335
12.3代码混淆 338
12.3.1inline内联函数 338
12.3.2obfuscator-llvm编译器 339
12.3.3Xcode集成配置obfuscator-llvm 341
12.3.4Theos集成配置obfuscator-llvm 343
12.3.5HikariObfuscator 343
12.4越狱检测 344
12.4.1判断相关文件是否存在 344
12.4.2直接读取相关文件 345
12.4.3使用stat函数判断文件 345
12.4.4检查动态库列表 346
12.4.5检查环境变量 346
12.4.6检查函数是否被劫持 346
12.5反盗版 347
12.5.1检查Bundleidentifier 347
12.5.2检查来源是否为AppStore 347
12.5.3检查重签名 350
12.5.4代码校验 351
12.6反调试与反反调试 353
12.6.1反调试方法 353
12.6.2反反调试 355
12.7反注入与反反注入 359
12.8防止被抓包 361
第13章代码入口点劫持 365
13.1实现原理 365
13.2编写ShellCode 365
13.2.1编写ARM汇编 366
13.2.2计算main函数的跳转地址 370
13.2.3终的ShellCode 372
13.3插入代码 373
13.4修改入口点 374
13.4.1关于指令切换 374
13.4.2ARMv7入口点 375
13.4.3ARM64入口点 375
13.5重签名 376
第14章写壳内幕 378
14.1判断文件格式类型 378
14.2代码的插入 379
14.3修改程序入口点 381
14.4Shellcode如何调用函数 382
14.5编写和调试Shellcode 386
14.5.1ARMv7Shellcode 387
14.5.2ARM64Shellcode 394
14.6总结 407
第15章系统相关 409
15.1Cydia的相关问题及修复方法 409
15.1.1使用h3lix越狱后,Cydia不能上网 409
15.1.2越狱后抹掉所有内容修复Cydia 409
15.1.3Cydia不能上网的解决方法 411
15.2降级传说 412
15.2.1iPhone5降级到8.4.1 412
15.2.2iPhone5s降级到10.3.3 413
15.3访问限制密码的安全隐患 416
15.3.1访问限制密码 416
15.3.2备份密钥数据 416
15.3.3暴力破解密码 417
15.4扫码在线安装应用 418
15.4.1安装Apache 418
15.4.2配置自签名证书支持HTTPS 419
15.4.3下载安装应用 422
15.4.4购买认证的SSL证书 424
15.5CVE-2018-4407远程溢出漏洞 425
15.6解决磁盘空间不足的问题 426
15.7解决h3lix重签名后越狱失败 427
15.8解决iOS12启动进程提示Killed:9的问题 429
15.9iPhone安装Android系统 431
第16章LLVM编译器代码混淆的原理 434
16.1开发和调试Pass 434
16.1.1编写diyi个LLVMPass 434
16.1.2编写Pass获取基本块和指令 438
16.1.3将Pass编译到Clang 442
16.2移植代码混淆Pass 444
16.2.1移植代码 444
16.2.2安装graphivz 445
16.2.3设置opt的启动参数 446
16.3从源码角度解读代码混淆Pass 449
16.3.1flattening 449
16.3.2boguscf 458
16.3.3substitution 464
16.3.4indirectbr 469
附录A书中用到的工具列表 477
附录B机型代号列表 479