请注意:我并未正式测试此代码 它被设计为一种教育工具
它能做什么? android-dirtycow-replacer 使用 CVE-2016-5195 dirtycow 漏洞来修补超过 1000 个文件的列表。 你可以将它编辑为 10000,但 1000 应该足够了。 它首先检查文件是否不同,如果不同则尝试替换,如果出错则停止。 你需要通过编辑文件、修补 selinux 或任何其他方式提供这些文件。 dirtycow 只能替换它可以读取的内容,这就是为什么这个工具不是最终工具的原因。
抱歉如果我重复说了某些话,我有程序员脑袋 这段代码在 Note 5 上测试过,似乎功能正常。但是…… 这段代码基本上未经测试,也不是最终项目。我正在设计一个 toolbox.c dirtycow 漏洞利用程序, 它可以覆盖通常不可读的文件,例如 init。 为什么用 toolbox?因为我可以获得 root 和所需的上下文,然后读取所有我想要的文件的权限。
需要 Linux,例如最新版本的 Ubuntu(免费),以及 Android SDK 和 Android NDK(也是免费的)。
使用说明 创建一个名为 files.txt 的文件,包含你想要替换的文件路径,左边是原路径,右边是替换路径。 /system/build.prop /data/local/tmp/replace/build.prop 确保文件在等式两边都存在,我希望这是相当简单的事情! 我建议在将文件添加到列表之前先尝试 cat 它。例如:adb shell cat /init 左侧路径是被替换的文件(注意空格)右侧路径是用来替换它的文件
包含示例 此示例附带了一个示例 files.txt。它指向测试文件(编辑它以查看) 还有两个包含测试文件的目录:replace/ 和 replacewith/ 在 replace/ 目录中有 4 个文件:beingpatched1, beingpatched2,..3,..4 beingpatched# 文本 == unpatched001 --- unpatched004 replacedwith/ 目录中的文件包含文本 patchingdon1 到 patchingdon4 当你输入 'make push' 时,它会编译,并且这些目录、files.txt 和 replacer 会被推送到 /data/local/tmp/ ……还在跟着我吗? 示例的实际使用说明 解压到一个文件夹,右键单击并在该文件夹中打开两个终端 ……提示:如果你单击一个终端窗口,然后再单击另一个,两个终端窗口都保持可见
在一个终端窗口中输入:make log
在另一个终端窗口中输入:make push <===没有错误,对吧?
adb shell 然后 cd data/local/tmp 然后 ./replacer
主项目概览——不是本项目 比较函数被设计为 toolbox.c 的触发器 比较函数逐字节比较文件以确定它们是否不同。这将是 toolbox.c 尝试重新加载 /init 的触发器。 接下来 toolbox.c 会写入一个日志文件(也是下一个触发器键) toolbox.c 会在尝试后将结果记录到另一个日志文件(最终触发器),让我们知道所有尝试过的函数。 这将使我们能够在失败时为每个阶段尝试多个上下文,这可能是需要的。
android-dirtycow-replacer 我的目标是设计一个自动化的 dirtycow.c 替换工具,用作 toolbox.c 或 dumpstat.c 中的漏洞利用程序。 android-dirtycow-replacer 从文本文件中读取要修补的文件,然后测试文件是否不同,并且 仅当它们确实不同时,android-dirtycow-replacer 才会使用 dirtycow.c 修补文件。 再次说明,这段代码被设计为合并到 toolbox.c / dumpstate.c 中,作为修补不可修补文件的一种手段! 我的最终代码很可能与 UID 和上下文处理代码交织在一起。这是我自有代码的一个分支。
此应用程序可能还有其他用途 但我目前不打算为其他用途设计它。 我能想到的最可行的用法是在启动后替换常量文件列表,例如字体或删除 应用程序在屏幕关闭时访问互联网的权限。或者 /etc 下的许多其他设置, 这些设置会在每次启动后被修复。
要求
此软件目前未更新。此软件作为示例代码列出 我个人认为,该工具本身可以在范围内实现任何设备的 root 权限。我也认为它是一个强大的 组织工具,可以精确地实现该目标。对我来说的问题是,我目前没有兴趣在我的个人手机上获取 root 权限。 我搞坏的东西足够多,以至于我的 Note 5 非常棒,而且重新设置起来很困难。 请注意,我从未在任何地方测试过此代码!它被设计为一种教育工具
如果你遇到问题 请列出问题,我会在可以安全地在我的测试设备上解决时尽快修正它。