From ef63b92ec1bfbf50a76056e72e04c2560daa6300 Mon Sep 17 00:00:00 2001 From: feicong Date: Thu, 27 Mar 2025 13:57:23 +0800 Subject: [PATCH] update. --- .gitignore | 4 +++- README.md | 24 ++++++++++++++---------- book.toml | 13 +++++++++++++ chapter-03/README.md | 17 ++++++++--------- chapter-12/README.md | 2 ++ 5 files changed, 40 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index a96b61b..dad0e44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /book/ .DS_Store - +.pdf +.html +/pdf/ diff --git a/README.md b/README.md index fdcadc7..0148bac 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ -# 安卓系统定制:从入门到实践 +#

安卓系统定制:从入门到实践

-**大家在阅读过程中,发现什么内容错误、格式错误、错别字等问题,欢迎提交pr,这样可以帮助到更多想要学习的朋友。** +

非虫 missingkeys 著

+ +
 
+

+ +> 大家在阅读过程中,发现什么内容错误、格式错误、错别字等问题,欢迎提交pr,这样可以帮助到更多想要学习的朋友。 本书开源,欢迎 Star & 贡献! 🚀 @@ -20,19 +25,18 @@ GitHub 项目地址:[https://github.com/feicong/rom-course](https://github.com - 安全研究员 -## 目录 - -见[目录](TOC.md) - -## 电子版图书 - -[点击下载最新版本PDF版本图书,不定时更新](https://t.zsxq.com/mBLwU) +[点击下载最新版PDF电子书,不定时更新](https://t.zsxq.com/mBLwU) ## 技术交流 欢迎加入系统定制技术交流微信群,分享安卓系统定制资源,交流系统定制技术。 -微信添加**feicongcn**邀请入群。 +> 微信添加**feicongcn**邀请入群。 + +## 微信公众号 + +image + ## 免责申明 本书籍内容仅供学习和研究使用,所有资料均来源于公开的安全技术文献、开源项目及个人经验分享。对于任何由于本书内容产生的直接或间接损失,本书作者及发布方概不负责。请读者在实际操作中遵守法律法规,避免从事任何非法或不道德的行为。 diff --git a/book.toml b/book.toml index 96ed0e5..745e632 100644 --- a/book.toml +++ b/book.toml @@ -4,6 +4,19 @@ language = "zh-CN" multilingual = false src = "." title = "安卓系统定制:从入门到实践" +description = "这是一本开源的讲解安卓系统定制入门的电子书" +version = "1.0.0" [output.html] +git-repository-url = "https://github.com/feicong/rom-course" + [output.pdf] + +# 添加页眉页脚 +display-header-footer= true +header-template = "

https://github.com/feicong/rom-course

" +footer-template = "

/

" +prefer-css-page-size = true + +[output.pdf-outline] +like-wkhtmltopdf = true diff --git a/chapter-03/README.md b/chapter-03/README.md index 6b5a9a8..fe76eae 100644 --- a/chapter-03/README.md +++ b/chapter-03/README.md @@ -239,18 +239,17 @@ static int __ref kernel_init(void *unused) { int ret; ... - if (!try_to_run_init_process("/sbin/init") || - !try_to_run_init_process("/etc/init") || - !try_to_run_init_process("/bin/init") || - !try_to_run_init_process("/bin/sh")) - return 0; - - panic("No working init found. Try passing init= option to kernel. " - "See Linux Documentation/init.txt for guidance."); + if (ramdisk_execute_command) { + ret = run_init_process(ramdisk_execute_command); + if (!ret) + return 0; + pr_err("Failed to execute %s (error %d)\n", + ramdisk_execute_command, ret); + } } ``` -​ 在这里,看到了原来`init`进程是用`try_to_run_init_process`启动的,运行失败的情况下会依次执行上面的4个进程。继续看看这个函数是如何启动进程的。 +​ 在这里,看到了原来`init`进程是用`run_init_process`启动的,`ramdisk_execute_command`被初始化为了"/init"。 ```c static int try_to_run_init_process(const char *init_filename) diff --git a/chapter-12/README.md b/chapter-12/README.md index 7f2dbf0..06edaf6 100644 --- a/chapter-12/README.md +++ b/chapter-12/README.md @@ -1807,3 +1807,5 @@ jnitrace |- char* : newdemo 本章完整介绍了系统代码插桩方式来实现`Jnitrace`功能。该功能用于动态跟踪分析程序执行时的JNI调用参数与栈详情信息。对比python版本的`Jnitrace`工具,使用Frida代码编写的跟踪工具拥有着便捷与扩展性强等特点,但缺点是这种方式需要处理大量调用,对程序的并发处理能力要求极高,在一些JNI调用频繁的程序上执行分析,可能会出现并发崩溃的情况,使用系统代码插桩的优点是,在高并发调用下,跟踪代码仍然能正常的输出分析内容,具有较高的稳定性。 系统定制涉及到技术原理与代码解读的部分着实枯燥,很感谢读者朋友们能坚持看完本书。本书所有的内容到这里就要讲完了,然后,值得被扩展与定制的功能非常之多,限于篇幅限制,作者水平十分有限,很多功能没有在本书中涉及与讨论。有兴趣的朋友,可以关注微信公众号[软件安全与逆向分析],微信号:feicong_sec。作者会在上面讨论一些系统定制修改与安全技术相关的话题。 + +image