随笔分类 -  android逆向

摘要:## 函数虚拟化 函数虚拟化保护和函数混淆保护整体思路差不多,将函数划分为若干个基本块。之前每一个基本块的代码是替换为等效花指令混淆,虚拟化的话就是将原有指令进行翻译,用自定义虚拟机去解释执行。 每次进入虚拟机执行前先保存寄存器环境 ![](https://img2023.cnblogs.com/b 阅读全文
posted @ 2023-08-30 21:56 怎么可以吃突突 阅读(307) 评论(0) 推荐(0) 编辑
摘要:## so加固分析 查看so文件加固前的`program header table`, ![](https://img2023.cnblogs.com/blog/2052882/202308/2052882-20230827192534836-2004579636.png) so文件被加固后`pro 阅读全文
posted @ 2023-08-27 21:24 怎么可以吃突突 阅读(577) 评论(0) 推荐(0) 编辑
摘要:UnCrackable-Level1 第一题是一个纯java层逆向,首先程序会进行root和debug检测。 root检测就是通过检测su等文件和Build.TAGS是否包含test-keys。因为我的机子是自己编译的userdebug版本,所以会被检测到root,frida直接hook检测函数并返 阅读全文
posted @ 2023-04-01 02:36 怎么可以吃突突 阅读(694) 评论(0) 推荐(0) 编辑
摘要:此app为猿人学2020年的赛题,需要得到0-99所有id值对应的返回结果之和。抓包查看到接口为/api/match/11/query,参数是id值以及sing值,返回数据就是id值对应的data值。 反编译apk得到发起请求的函数为query,其调用getSign1以id值为参数生成sign值,o 阅读全文
posted @ 2023-03-19 18:03 怎么可以吃突突 阅读(244) 评论(0) 推荐(0) 编辑
摘要:去混淆思路 先找到函数中所有的基本块 确定状态变量是保存在宿主寄存器中还是栈中(局部变量) 观察判断控制块的特点,将所有控制块剔除。剔除之后基本块中还包含真实块(如果不存在虚假控制流) 确定各个真实块的执行路径,即一个真实块能跳转到哪几个块(1/2个块),通常通过unicorn模拟执行或者angr符 阅读全文
posted @ 2023-02-19 17:17 怎么可以吃突突 阅读(1330) 评论(0) 推荐(0) 编辑
摘要:对于自定义linker加固so而言,为了防止整体dump并对修复重定位表的脱壳方式(upx的脱壳),可以将一些重要的结构信息在内存中进行抹去和移动。 抹去 ELF文件头在so文件加载后就不需要使用了,所以可以在加载完so文件后直接将其抹去。 .rel.plt/.rela.plt和.rel.dyn/. 阅读全文
posted @ 2023-02-12 13:49 怎么可以吃突突 阅读(1134) 评论(0) 推荐(1) 编辑
摘要:其实自实现linker加固so与之前研究windows平台的PE文件的加密壳原理很相似。主要就是自定义文件格式加密so,然后壳代码实现将加密的so文件加载,链接重定位并修正soinfo(三部曲)。 自定义文件格式 格式可以自己定义,只要在壳代码加载so时能够知道正确的格式就可以,下面是对标准的ELF 阅读全文
posted @ 2023-02-08 01:36 怎么可以吃突突 阅读(2154) 评论(1) 推荐(1) 编辑
摘要:自定义linker加固so是主流的加壳方式,通过实现linker程序来加载,链接加固后的so文件。最后为了让加固后的so中的代码能与其他模块交互,需要修正壳(自定义linker)的soinfo为加固so。我在编写自定义linker代码时,在将加固的后的so加载,链接和修复soinfo后尝试通过dlo 阅读全文
posted @ 2023-02-07 01:05 怎么可以吃突突 阅读(865) 评论(0) 推荐(0) 编辑
摘要:# ELF可执行文件脱壳 使用upx对ELF文件进行加壳,加壳后的文件不包含动态链接信息,也就是说加壳后的可执行文件是一个纯静态链接文件。对于纯静态链接的可执行文件而言,linux内核在将此elf文件加载到内存后会直接修改应用层入口为此elf文件的入口函数,不再需要动态链接器的参与。 ![](htt 阅读全文
posted @ 2023-02-01 17:50 怎么可以吃突突 阅读(1293) 评论(0) 推荐(0) 编辑
摘要:# 静态注册 对于静态注册的jni函数而言,jni函数签名名称要与java层对应的函数名称一一对应。当一个java类被加载时会调用LoadMethod将其所有的方法也都加载到虚拟机中,并调用LinkMethod设置函数的入口。 ``` static void LinkCode(ClassLinker 阅读全文
posted @ 2023-01-11 11:46 怎么可以吃突突 阅读(507) 评论(0) 推荐(0) 编辑
摘要:自google在android 7.0增加了链接器命名空间限制对私有系统so库的调用限制后,android 9.0又增加了非SDK API的调用限制。这样无论是native层还是framework层应用程序都无法访问系统私有的接口,有效防止应用在调用这些经常会变更的私有API后造成的崩溃现象。一般想 阅读全文
posted @ 2023-01-09 11:21 怎么可以吃突突 阅读(420) 评论(0) 推荐(0) 编辑
摘要:xposed适用的最高版本为android 8.0,针对高版本的ART HOOK框架可以使用比较有名的lsposed。它使用了lsplant ART HOOK框架(早期使用YAHFA)并提供了和xposed一样的接口API进行兼容,同时lsposed本身是一个基于magisk的riru/zygisk 阅读全文
posted @ 2023-01-08 13:04 怎么可以吃突突 阅读(5783) 评论(0) 推荐(0) 编辑
摘要:修改rom 通过修改android源码自定义脱壳机,选择合适的时机通过主动调用加载apk中的类,然后再挑选合适的时机对dex文件进行dump。 主动调用 当一个app启动的时候会调用handleBindApplication函数,此函数会调用Application的attachBaseContext 阅读全文
posted @ 2023-01-06 14:05 怎么可以吃突突 阅读(772) 评论(0) 推荐(0) 编辑
摘要:dalvik JIT(Just-In-Time) JIT即时编译,即在代码运行时进行编译。对于dalvik虚拟机而言其检测到执行频率较高的函数时就会进行jit编译将其编译为本地机器码,这样下次此函数执行的时候就会直接执行编译后的机器码,编译后的机器码只存在于内存中并不会以文件的形式保存,app重启后 阅读全文
posted @ 2023-01-05 16:50 怎么可以吃突突 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:dex文件的热修复方法有很多,例如通过类加载器或者偏底层的实现通过修改ArtMethod。这里只分析基于类加载器的dex热修复原理,实际dex插件化的原理和热修复的原理也有类似之处。 dex热修复原理 android虚拟机中每一个classloader类加载器都有一个对应的DexPathList类, 阅读全文
posted @ 2023-01-03 14:49 怎么可以吃突突 阅读(357) 评论(0) 推荐(0) 编辑
摘要:还是以通过dlopen获取libart.so句柄为出发点,由于android 7.0之后的链接器命名空间限制包括libart.so的一些私有库被限制访问。(源码分析基于android 10.0.0_r7) 应用进程类加载器的命名空间初始化 在应用程序对应的可执行文件app_process根据/sys 阅读全文
posted @ 2023-01-03 00:09 怎么可以吃突突 阅读(1333) 评论(0) 推荐(0) 编辑
摘要:二代壳加壳apk在实现函数抽取的时候需要选择合适的时机进行抽取代码的回填,一般选择在LoadMethod函数中即函数被加载前。所以需要通过inline hook libart.so的LoadMethod函数,前提是需要得到libart.so的模块基地址并得到LoadMethod函数的地址。如果直接在 阅读全文
posted @ 2023-01-02 04:12 怎么可以吃突突 阅读(1183) 评论(0) 推荐(0) 编辑
摘要:android 7.0加入了对私有系统so库API调用的限制(因为私有系统库会在任意时刻更新,使用这些系统库的应用有可能会在更新后崩溃),android 8.0引入了project Treble实现框架与供应商解耦合(解决系统碎片化,升级慢),这都需要依赖链接器命名空间机制。这里主要关注的重点是链接 阅读全文
posted @ 2023-01-02 00:41 怎么可以吃突突 阅读(1127) 评论(0) 推荐(0) 编辑
摘要:# xposed原理 * zygote进程是android系统第一个java进程,其他所有的apk进程都是通过zygote进程fork的。xposed是一个hook框架,其通过修改zygote进程的native层代码和java层代码在zygote进程启动时将xposed框架使用的jar包(Xpose 阅读全文
posted @ 2022-12-30 16:05 怎么可以吃突突 阅读(815) 评论(3) 推荐(1) 编辑
摘要:因为xposed已经停止更新,高版本的android可以使用他的改良版lsposed,开发环境和xposed一致, 首先需要安装magisk + zygisk + lsposed. xposed开发环境 导入xposed模块开发使用的jar包 通过设置jcenter (未成功) 设置app的buil 阅读全文
posted @ 2022-12-29 01:11 怎么可以吃突突 阅读(3391) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩