Android Studio配置ollvm编译so
背景在项目中有使用jni实现功能,编译最终包是时候ollvm混淆so中逻辑。在macOS中编译出混淆的so。
环境:
1234macOS 12.6 Intel x86_64ndkVersion "21.4.7075529"cmake version 3.18.0Android Studio Chipmunk | 2021.2.1 Patch 2
编译ollvm默认ndk中clang-ollvm是没有带混淆的,需要我们自己编译一次。
仓库地址:https://github.com/heroims/obfuscator
选择分支llvm-9.0.1
完整命令:
1https://github.com/heroims/obfuscator.git -b llvm-9.0.1
找一个目录下载,大概500m这样。
12~/android/hook/llvmobfuscator
在llvm目录中创建一个build目录
12345678~/android/hook/llvmmkdir buildcd build# 执行初始化配置cmake -DCMAKE_BUILD_T ...
AOSP Android 10内置FridaGadget实践02
背景内置frida-gadget前篇:AOSP Android 10内置FridaGadget实践01
上一篇内置完成脚本管理app后复制脚本到/data/system/xsettings目录下无权限。
现在开始给文件夹配置权限。
环境:
vm Ubuntu 18.04
AOSP 10_r41
Pixel 3
as
文件夹权限配置位置和文件:
0x1:android-10.0.0_r41/system/sepolicy/public/file.te
末尾增加一行这里和文件夹有关是xxxxx_file。这个目录名字就是当时在rc文件配置的xsettings/xxxxx目录
1type xiaojianbang_file, file_type, data_file_type, core_data_file_type, mlstrustedobject;
0x1:android-10.0.0_r41/system/sepolicy/private/file_contextandroid-10.0.0 ...
AOSP Android 10内置FridaGadget实践01
背景想做frida持久化hook,通过搜索资料发现gadget可以。
这是官方的资料:https://frida.re/docs/gadget/
这里有详细的使用方法,比如反编译apk插入so文件,如果这个app没有so库,就需要自己在application自己加代码load so,但是这些都不是我现在需要的操作。
我既然修改的是AOSP,在app加载的时候加载so就行了。
经过搜索资料发现了这个博客:http://zhuoyue360.com/crack/78.html
这里面应该学习了某个大佬的课程然后分享出来的,经过分析和实践验证了博客中的一部分内容是可行的,有一些重要的部分是没有的,但是主干思路有了之后剩下的部分有盼头了。
实践与验证环境:
AOSP 10 r41
pixel 3
Ubuntu 18.04
修改app的启动流程,在启动期间去加载so。在frameworks/base/core/java/android/app/ActivityThread.java中的handleBindApplication
方法中,找到Application创建之前的位置,经过我的测试 ...
AOSP Android 10内核编译刷入Pixel3
背景下载Android10的内核源码编译并刷入Pixel3中,为后面的过反调试做准备。
环境mv Ubuntu 18.04
已经成功编译的AOSP 10_r41环境,编译内核需要源码交叉编译环境。
Pixel3
下载内核代码Ubuntu中找个非中文路径的位置
123456mkdir ~/binecho "PATH=~/bin:\$PATH" >> ~/.bashrcsource ~/.bashrccurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo## 或者使用 curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repochmod a+x ~/bin/repo
repo是用来下载代码的,如果你已经安装了就进入下一步。
12345678910## 创建一个目录mkdir k## 例如我的目录是/home/aosp/kcd krepo init -u https://android.googl ...
AOSP Android 10导入BurpSuite CA证书抓包
证书准备从burp中导出证书,一般是der文件。
使用openssl将der格式转为pem格式,再转.0文件导入系统。
1234# 转为pem格式openssl x509 -inform DER -in cacert.der -out cacert.pem# 重命名为<hash值>.0mv cacert.pem `openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1`'.0'
查看哈希可以这样。
12//哈希openssl x509 -subject_hash_old -in <certificate.pem>
导入Android10系统证书存放目录
12// 证书位置,我们要放证书到这里/system/etc/security/cacerts
重启手机查看结果。
查看是否导入手机重启完成之后打开设置。AOSP Android10.0设置:安全:加密与凭证:信任的凭证
可以看到用户证书这里是没有的。
PortSwigger就是我们导入的了 ...
AOSP Android 10.0无源码内置apk到系统
背景环境 AOSP 10
当我们经常编译AOSP后有可能需要全量更新我们的修改,全量更新就意味着之前我们手机上面安装的软件都清空了,等同于回复出厂设置,那么我们可不可以提前放入一些我们自己需要用的APP呢,刷机之后APP就不用重复安装了。
无源码内置apk到系统这一次我们先做一个无源码无so库的APP到系统中。
有so库的下一篇实践。
准备工作准备好apk安装包,这个包也可以是自己的,也有可能是客户给的,只给成品不给源码。这是前提。
比如我现在就编写了一个简单的无so的apk。
App名字就是内置App。编译成功之后先安装到手机看看运行情况,是否会崩溃等等检查。
能看到我们的log正常输入,且App没有崩溃。我们把这个apk复制到这里:在源码目录下packages/apps下创建一个目录,这个目录就是我们存放apk的目录。创建MyApp目录,保存上面打包出来的apk文件,命名MyApp.apk。
创建Android.mk文件,文件内容是这样的。
123456789LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOC ...
AOSP Android 10.0单编替换framework.jar刷入手机
背景修改framework的部分代码,做一些特殊的事。基于AOSP 10.0
公众号地址:https://mp.weixin.qq.com/s/eNbePpJ-LU7D_Gt7YVKjrw
编译framework代码当我们修改完成framework模块的代码之后,需要编译模块,我之前不知道可以直接单独编译和刷入手机的,导致浪费了很多时间。
修改完成代码保存之后,进入framework/base目录执行mm
前提是注入了aosp的环境变量。
1234source build/envsetup.shlunch xxcd framework/basemm
编译完成之后。
刷入手机验证编译完成之后的产物目录
android-10.0.0_r41\out\target\product\blueline\system\framework\framework.jar
目录下有一个framework.jar(这个jar就是框架的代码)里面都是dex,如果想看代码,可以去这个目录下看,就好像平时看第三方jar一样,导入as即可。
android-10.0.0_r41\out\soong ...
Ubuntu 18.04编译AOSP 10.0r41刷入pixel3
背景已经在AOSP 7.1.1 nexus 5x上面实现了修改位置打卡,现在是想在pixel3中继续尝试。
如何选择代码要选择有对应驱动版本的代码分支,如果没有标明,强行用其他版本的驱动来编译刷机不知道是否可行。
比如我选择的情况是这样的。
https://developers.google.com/android/drivers#bluelinepd1a.180720.030
https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn
这里是查代码分支和驱动版本的网站。
为什么呢?因为我的网盘中的Android10代码有这个分支,如果通过repo的方式下载,我网络太差了,容易失败,相信很多人放弃都会卡在这一步,下个代码都下不了。
我们之间下载某个分支的代码就行了,前提是这个分支刚好有驱动。
复制代号:QQ3A.200805.001
去驱动的网页上面搜索:
在这里找到你的手机和对应代号的驱动。
android-10.0.0_r41 -> QQ3A.200805.001 > Pixel 3 bin ...
Ubuntu 18.04编译AOSP 7.1.1
背景前面一篇文章编译6.0本来是想给nexus5x刷的,结果Google没有提供驱动,那就给我的nexus5刷了。现在找到了5x需要的驱动和代码版本号,今天继续刷。
刷机和代码对应比如我需要给5x刷,就需要对应的驱动,驱动下载地址在这里。
https://developers.google.com/android/drivers#bullhead
需要具备留学资格访问。
在这个地方找到了自己设备的驱动之后,看版本号。然后到这里找对应的代码分支。
https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn
找到分支后,后面会显示支持的手机的,下载代码的时候就可以下对应的分支了。
编译环境和上一篇文章一样,https://mp.weixin.qq.com/s?__biz=MzU1NjYyNjA3MQ==&mid=2247484175&idx=1&sn=451bace9965a369a0f85f71fda61f509&chksm=fbc37af7ccb4f3e1a0d9f0308834 ...
Ubuntu 18.04编译AOSP 6.0.1
背景编译6.0.1版本自己刷机到nexus 5x中
代码下载这一步忽略,方法很多,我们直接开始编译遇到的问题。
遇到问题和解决方法编译6.0系统需要openjdk 7
编译5.1系统需要jdk7,如果需要编译5.1的后面再出文章吧。
编译前提删除源码目录下所有git
1234find ./ -name ".git" | xargs rm -rf//大小du -sh -BG
下载openjdk7
链接:https://pan.baidu.com/s/1u_GcyI-nrrQPLv_NQ2CwRg提取码:0jt0
信不过网盘的可以去这里下https://jdk.java.net/java-se-ri/7
1234567891011121314sudo tar zxvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C /opt# 修改profile文件sudo gedit /etc/profile# 加入下面的配置export JAVA_HOME=/opt/java-se-7u75-riexport JRE_HO ...