疯人院的院长大人
喜欢学习研究。喜欢解各种疑难杂症,喜欢主动。研究领域:Android开发,性能优化,逆向开发,移动攻防。
展开
-
安卓应用加固大全(速查篇)
安卓加固技术是保护应用程序免受逆向工程、篡改和攻击的一系列策略和工具。通过对源码、运行环境和业务场景进行加固,可以显著提高应用程序的安全性。原创 2024-07-29 14:34:32 · 537 阅读 · 0 评论 -
Frida零基础入门教程
阅读这篇文章,不仅能了解frida是什么,还能知道如何搭建Frida运行换以及学会用frida进行简单的java/native hook实战。原创 2023-01-12 23:18:38 · 2512 阅读 · 0 评论 -
Magisk工具使用指南
对于一般玩机用户,Magisk官方提供的发布版本即可满足要求,但对于高级开发者来说这远远不够,我们不仅仅是满足于使用,更要学会定制面具,最好的能完全理解面具的核心架构以便于自己也能写出来一套和面具差不多的工具,这才是我们研究面具最根本的原因所在。因为做移动安全,就是要理解最深层最基础的安全知识,而不仅仅是用以两个工具那么简单,这是高级工程师和初级工程师最大的区别所在。本文介绍面具中提供的用于开发者直接调用的工具,我们可以通过这些工具整合到我们自己的系统中,以此实现更便捷的修改目的。原创 2023-01-30 21:03:07 · 7073 阅读 · 0 评论 -
IO 重定向的Hook和对抗
对于设备指纹来说,系统文件是用来标识设备比较稳定的特征码,特别是对于改设备机型,一般来说,一些关键文件信息可用来标识一台设备。典型的如mac地址文件,序列号文件,还有一些用来标识某个特定机型的,比如小米在framework下就有一些文件的文件大小,md5等信息可拿来和标准机型库比对,已识别设备是否被模拟。攻击方自然也知道这个道理,因此也会修改这些文件,对于非源码定制系统来说,这些文件只能通过hook来修改。在比较早的时期,直接通过hook java代码的类的open方法达到效果,原创 2023-04-24 19:45:39 · 519 阅读 · 0 评论 -
普通应用访问隐藏API的解决办法
众所周知,在Android9之后,Android系统限制了通过反射的方式访问隐藏Api,这对于系统应用来说或者你拥有系统签名的应用来说,并不是一件难事,但是更多的时候,我们的应用并不是系统应用,而现在通过反射的方式调用也会提示出错,那么这种情况下我们是否还有其他方法能够访问这些系统级API吗?答案是有的。在将方法之前,我们先了解一下,什么是隐藏API,以及为什么我们需要访问这些Api。如果你对这些都不感兴趣,可以直接拖到下面看解决方案。原创 2023-02-13 16:44:30 · 1860 阅读 · 0 评论 -
Android原生检测Selinux的三种方法
本文介绍 3 种检测 Android 设备 SELinux 状态的方法, Java 层检测Selinux已经没有太多意义,因为不是很靠谱,随便一个hook代码就能绕过,所以我要告诉你如何在 C 层完成检测。这几种方法在效率和抵抗mock SELinux State 的技术方面都不相同,因此在使用之前你需要知道每种方法的背景及其局限性。原创 2023-01-14 16:45:59 · 1784 阅读 · 0 评论 -
Android系统镜像备份与还原并转发数据
你拿到一台测试机,觉得系统不错挺好用,想要把里面的镜像拷贝出来,然后买一台新手机刷入进去。然后屏蔽原来系统的数据转发并把数据转发到自己的服务器上,有没有可能呢?答案是有的,这篇文章说的就是这方面的内容。原创 2022-11-02 11:51:25 · 2428 阅读 · 1 评论 -
Edify Script (Android Shell)定制Twrp刷机包
本文将通过三方面向大家介绍Edify Script,相信你看完了这篇文章会对安卓系统可刷写插件有一个比较完整的认识,并且能过通过阅读此文章实现使用twrp刷入自己写的插件zipi包。网上能搜到的大部分是旧的,新版本去掉了很多的edify函数,照着他们那个写多半会报错。原创 2023-01-06 22:31:44 · 2078 阅读 · 0 评论 -
Aosp系统编译定制系统签名
商业化产品,如果使用默认的签名,一是不安全,而是显得没啥技术。就连谷歌官方也说了,不建议使用testkey作为最终发布版的key,因此,定制系统签名就派上用场了。具体使用方法谷歌给了一个大致的说法,我们可以在aosp的自述文件中找到,位置位于,我们来看看光放原文:老实说一般人还真不一定看得懂,因此我决定自己实践一下,然后把实践的过程分享给大家,希望抛砖引玉,让大家少走一些弯路。由于利用系统签名生成keystore的方式网上一大把而且没有太多坑,这里不赘述,只说说如何定制系统的签名。原创 2022-12-20 12:43:26 · 1288 阅读 · 0 评论 -
Android系统属性文件浅析
Android的属性文件是Android系统攻防中重要的一环,属性中的一些只读字段(以ro开头)通常会被当作大厂的指纹而加入检测,于是如何mock和检测mock成了安全中举足轻重的知识。实际上,除了上述列出的方式以外,我们还能读取的地方有很多,为什么会有那么多。熟悉朋友就会发现,上述列出来得方案,基本是从代码调用侧跟踪,一步步往下跟踪调用,就能发现上述所有得调用方式。原创 2022-12-08 22:48:55 · 1482 阅读 · 0 评论 -
移动攻防-检测非标准调用和如何防止反射
反射一度被认为是java开发者得福音而被广泛应用,但是在Android9之后,Google系统对开发者通过反射进行非官方得api接口调用做了限制。也就是说,一些隐藏的接口开发者无法正常访问了。我们可以在Androi系统的源码中看到系统那些地方做了api隐藏,以Android10为例,位于,当然,谷歌此举旨在提升软件的用户体验,降低崩溃,但是对于攻防者来说,关注点却不太一样。原创 2022-11-01 19:57:43 · 645 阅读 · 0 评论 -
AOSP添加Google Apps(Open Gapps)构建并刷入Pixel
Google App是谷歌全家桶的简称,包含了所有的Google应用(不只是Google框架),我们按照中的介绍完成了系统编译后,刷入并开机我们看到的是很纯净的系统,甚至连浏览器都是跟Demo差不多,要想能正儿八经用,还是要加上Gapp。本文要讲的是第三个方案,这个最有技术含量,而且如果你按照openGapp的你还不一定能成功,而网上大部分的文章都是没办法成功的,这就是这篇文章的意义所在。原创 2022-10-13 19:40:45 · 4853 阅读 · 2 评论 -
面具Zygigk插件开发入门教程
Zygisk版本的模板,注释写的非常详细,特别方便大家理解Zygisk并编写自己的Zygisk模块。最核心的就两个文件,其中一个是magisk源码提供的头文件,剩下的就是我们自己写的插件源码。原创 2022-10-09 11:00:50 · 3816 阅读 · 1 评论 -
Aosp编译Pixel Rom并定制刷机包全解析
安卓源码编译刷机全教程下载安卓源码Repo工具的安装全部下载部分下载驱动下载文件系统编译刷机安卓源码编译刷机全教程作为一个标准的安卓程序猿,不会编译一个自己的安卓系统有点说不过去了,其中的好处不多说了,直接开搞吧! 首先我们得准备原材料:一台安装了linux系统的电脑一部nexus手机数据线有网络的网线下载安卓源码下载安卓源原创 2017-07-14 14:52:45 · 7359 阅读 · 2 评论 -
Android应用安全指南-反逆向
由于其开源性质,Android 拥有广泛的追随者。虽然很受欢迎,但 android 也有不利的一面,即漏洞。Android 为应用程序开发人员提供了大多数移动平台所没有的显着优势。由于它是开源的, 因此开发人员和逆向工程师可以有效地研究 Android 开源项目 (AOSP) 中的源代码,并根据他们的要求对其进行调整。简而言之,逆向工程是工程师用来重新获取源代码以重建程序、构建与之类似的东西、发现应用程序中的缺陷或提高其安全性的一种技术。这些是可以帮助您保护Android。原创 2022-10-02 17:29:34 · 1210 阅读 · 0 评论 -
Android App性能优化指南
在不同的 android 应用程序组件之间提供清晰的界限是至关重要的。当你需要添加、删除或测试对应用程序其他模块的修改时,它会派上用场。最后,值得注意的是,全球已经数字化,连接设备的数量正在以惊人的速度增长。与此同时,用户的注意力范围正在减少。保留它们的唯一方法是让你的移动应用程序高效运行。此博客描述了提高 Android 应用程序性能的方法。这些策略结合起来可以显着减少 CPU 执行的工作量和应用程序消耗的内存量。原创 2022-10-02 15:50:04 · 836 阅读 · 0 评论 -
Android init.rc语言全解析
读懂init语言并不难,难的是有人愿意去做这个事情然后分享出来,如果不是接触到这块的知识,没有谁会专门研究这个,这也是为什么我写第一篇initrc文章到现在过去了7年多了一直没更新的原因,经常有小伙伴私信我希望我写一篇关于init文件解读的文章,或者是想请教下如何在custom的rc文件中加入自己的服务,当然有心的人肯定自己已经整明白了,因为所有的知识都是现存的,用心的小伙伴都能在网上找到。还没整明白的小伙伴也没关系,看完这篇文章你也可以摸索着自己做实现了。原创 2022-09-28 13:31:01 · 859 阅读 · 0 评论 -
Android系统启动流程全解析--你知道Android系统启动都干了啥吗
只要是Android系统,运行的第一个程序一定是引导程序,可以这么说,所有的unix系统都有引导加载程序。这个引导加载程序的作用是在在加载 Linux 内核之前进行低级(底层)系统初始化。Android系统启动的第一阶段是将recovery镜像加载到系统flash里(就是我们的固定内存Rom),这也是引导程序的主要功能。原创 2022-09-27 18:54:33 · 5354 阅读 · 0 评论 -
互联网人提高效率必备软件合集
很多的时候我们解决不了问题,只是因为没有找到对的工具,实际上,很多好的工具就在那里,只是你不用而已。这点上,信息壁垒是一个很大的原因,因此我希望兄伙伴们多出去走走,不要只是局限在一个圈层;原创 2020-09-30 16:35:44 · 2666 阅读 · 0 评论 -
想定制Android系统实现改机?看完我也会了
众所周知,再谷歌一次又一次打的升级迭代下,应用厂商能获取的应用越来越优先,获取的方式也变得越来越麻烦。从一千大部分权限默认授予,到后来的动态授权,再到Android Q的禁止应用获取设备标识,获取设备信息的难度不断加大。当然,从用户角度来看,这无疑是一大进步,是提升体验的一大进步。但是作为广告投放商来说,要能实现精准投放,获取设备标识是很关键的。对于发放 license来盈利的人来说也需要获取设备id。本文详尽的列出了需要修改哪些具体项目,以及在源代码中的具体位置,方便读者更好更快的实现。原创 2022-09-02 18:21:03 · 3187 阅读 · 3 评论 -
Magisk如何针对性隐藏Root避免被检测
Magisk隐藏特征码有两种途径,一种是通过插件,一种是定制源码。插件的方式相对简单,但是使用范围也有限,好处是成本低好上手。定制源码难度大,成本高,好处是稳定,后续也好更新维护。原创 2022-09-01 16:52:22 · 12031 阅读 · 1 评论 -
编译定制magisk和Lsposed并刷入定制的hook框架(一)
玩Github不能局限与使用人家的api以及下载别人的开源库,更要学会如何定制修改大神的开源库,因为大神们的开源库里面能学到的东西很多,如果不去深入了解,会错失很多学习的机会,就像我们做安卓的,如果会看谷歌源码,成长速度也会比别人快很多。............原创 2022-08-11 17:54:12 · 2630 阅读 · 0 评论 -
手把手教你Magisk安装
Magisk 是一套用于定制 Android 的开源软件,支持高于 Android 5.0 的设备。也就是,用户通过MagiskBoot 重新打包Boot.img,然后通过fastboot刷入boot分区,这个时候就具有了Root权限(MagiskSU会协助管理SU),用户可以开发Magisk插件以实现只读分区的修改(因为有Root),同时能够把我们写的代码附着到任意App(在应用进程被fork出来的时候添加上去)。这篇文章就和大家来聊聊如何刷入Magisk。......原创 2022-08-11 17:40:48 · 8007 阅读 · 0 评论 -
Android安全专题-so逆向入门和使用ida动态调试
关于如何进行ida调试原创 2022-07-19 14:39:39 · 1543 阅读 · 0 评论 -
性能优化专题(二)安装包原理解析及瘦身指南
应用瘦身并不是安卓开发中很重要的一块,他不像线程和内存的优化,会严重影响用户体验。但是这并不是说他不重要,而是他有特定的需求场景,而这个是和产品开发阶段强相关的。应用开发早期,本身代码量和资源数量并不多,应用优化带来的效果也很轻微,这个阶段专注应用的优化并不会有多大收益。但是在应用发布阶段,应用体积变大,为了让交付更顺利(比如上架国内外市场或交付给客户),就会开始注重应用体积的优化,特别是对于应用市场的上架来说,更小的体积队获得自然流量以及提高用户的下载率更有帮助(主要是对于非wifi用户,特别是流量吃紧的原创 2022-04-18 18:10:37 · 333 阅读 · 0 评论 -
性能优化专题(一)无痕埋点-动态插桩原理解析和基本实现
标题只是为了大家更方便地找到我这个系列的文章,同时也方便我自己后续整理文章。无痕埋点也叫无埋点,这个和性能优化有多大关系呢?无埋点顾名思义就是不需要开发人员编写埋点代码,通常情况下,大部分公司并不会将埋点作为工时纳入开发计划,但是随着应用业务变复杂,用户行为的分析变得越来越重要,如果还是古老的挨个定义显得很死板,最主要的还是加重了开发人员的负担,所以我更愿意说,这个性能优化是基于开发的性能优化。那么,在学习无痕埋点前,我们需要知道无痕埋点能帮我们解决什么问题?通过代码手动埋点比较原始,出错概率较高。原创 2022-04-18 14:46:53 · 2555 阅读 · 0 评论 -
Android安全专题(一)Hook初探以及技术前世今生
Hook概念Hook是伴随操作系统的产生而出现的概念,原来是系统开发者提供给系统应用开发者方便管理系统而产生的概念。目的是在系统调用过程中,其他代码可以选择性的干预系统函数的处理逻辑,已达到更灵活的程度。其实不管是windows还是Linux,底层进行事件分发处理使用的都是消息机制,为什么要使用消息机制,这个和操作系统的演化有关。操作系统最开始出现的时候功能很单一,仅仅是用于计算,而且还不是并行计算(并行计算发生在中断概念提出之后)。就是一个单一的流程,大家可以类比一下流水线,从流水线的一端到另一端,操原创 2022-04-14 19:07:46 · 3407 阅读 · 0 评论 -
lineageOS编译aosp源码并刷入小米Mix2S
本篇文章教大家修改Android系统源码并刷入到自己的国产手机,这对于手上没有pixel手机的小伙伴来说是个好消息,本文以mix2为例,其他手机基本可以才考这篇文章的思路去做,定制属于自己的操作系统。LineageOS 是一个基于Android面向智能手机以及平板电脑的开放源代码操作系统,前身为Cyanogenmod。Cyanogenmod大家都不陌生,玩机时代定制ROM很多都是就这个定制。经过很多年的发展,LineageOS支持的设备越来越多,上手方式也越来越简单。在LineageOS官网,大家可以找原创 2022-02-07 15:06:01 · 3032 阅读 · 0 评论 -
Google App应用质量标准-手机篇
如果你不准备做出海应用,或者你得应用只是为了满足国内用户的需要,你可能都不知道Google 对于应用开发有一套挺严格的标准,当然这个和国内的安卓生态发展有很大关系,在国内,安卓手机厂商甚多且都有自己的一套标准,为了争夺开发者,他们不得不降低App的开发质量要求,而国内的应用厂商为了能获得更多的应用权限,在一些偏门的炉子上绞尽脑子,这种情况在谷歌系统慢慢把权限收回这个问题才有所缓解。国外的Android体验和国内的Android体验有很大区别的原因正是因为Google有一套相比国内应用严格得多的上架标准。这原创 2021-11-28 12:38:18 · 490 阅读 · 0 评论 -
安卓安全之应用加壳
移动安全越来越受到重视,常规的方法开始不适用,人们更希望有一个方法能够解决应用安全问题,这时候专门做应用加固的公司就出现了。首先咱们说下什么是加壳,为什么要加壳,加壳带来哪些好与不好?什么是加壳:是应用加固的一种手法对原始二进制原文进行加密/隐藏/混淆。为什么要加壳:开发过 Java 应用的一般都会了解 java 代码是非常容易被逆向分析的,即使有一些混淆技术出现但是相对C/C++的反编译后的汇编代码还是可读性高一些.当然随着 NDK 的需要变得更多后,现在 so 的加壳也随之发展起来。加壳的好处:转载 2021-11-23 17:57:42 · 1599 阅读 · 0 评论