首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
android
订阅
潇涧
更多收藏集
微信扫码分享
微信
新浪微博
QQ
204篇文章 · 0订阅
某汽车资讯App 返回数据解密
一、目标 为了防止数据被截获,有些App把返回数据做了加密,比如下面这个: content 部分就是密文。我们今天就来搞搞它。 二、步骤 jadx搜索 content" 返回值是个json,那么它一定
性能优化之matrix学习-Apk Canary
目的:判断apk是否执行了资源混淆。 目的:检测lib文件夹中是否有多文件夹存在。 目的:比对apk压缩包里每一个entry的压缩后大小、压缩前大小;若大小一样,则表示文件未压缩。 目的:统计R文件数量。 目的:通过计算md5,判断apk中是否存在完全一样的文件。 目的:判断s…
抱歉,Xposed真的可以为所欲为——终 · 庖丁解码
两年前接触的 Xposed,动机是:公司年会上抢不到红包,影响了吃饭的心情,想写一个自动抢红包的外挂。 Xposed的使用不难,API也就那些,难点是: 逆向弄清楚Hook APP的方法调用流程,怎么调,参数都是干嘛的等。 啃源码,查资料,弄懂流程,写清楚,是一件费时费力且具有…
Shadow对插件包管理的设计
在Shadow开源的代码中,首先分为core层和dynamic层。core层就完成了插件框架的全部功能,dynamic层又将插件框架动态化起来了。然后core层本身主要也分为两部分,一部分是loader相关的,一部分是manager相关的。其中loader就是解决插件框架核心功…
Shadow对PackageManager的处理方法
在Android开发中免不了使用PackageManager获取当前应用的一些信息。 从官方文档上能确定PackageManager一般都是通过Context的getPackageManager方法获得的,实际上我们平常开发中也只有这个途径。 显然,如果插件框架什么都不做,插件…
Shadow的跨进程设计与插件Service原理
这篇文章介绍一下Shadow的跨进程设计和插件Service的原理。一同讲这两部分是因为它们是相关的。这篇文章假设读者对于Android的Service、Binder通信没有那么了解,因此会提及一些可能对你来说有些简单的内容。 在Android系统中,应用可以是多进程的。这在移…
kotlin-android-extensions插件也被废弃了?扶我起来
kotlin-android-extensions插件可能算得上是我最喜欢的一个Kotlin在Android上的特性了。 这么说并不夸张,因为以前在使用Java开发Android程序时,我们总是要写一大堆的findViewById,枯燥又没什么意义。 虽然也有一些诸如Butte…
Shadow解决Activity等组件生命周期的方法解析
每个Android插件框架要解决的首要问题都是Activity的生命周期问题。Activity代表了Service等其他需要注册的组件。不同是插件框架解决这个问题的前提也不完全一样。而我们的业务要求比较苛刻,再加上Android 9.0的非公开API限制,所以由这些前提要求: …
Shadow为什么要求插件和宿主包名一致
我们过去也用过基于各种反射实现的插件框架,用了3年左右时间,也维护了3年左右时间。在过去维护的经验中,我们就发现了插件使用单独包名(ApplicationId,下同)带来的问题。 ApplicationId一般是在build.gradle中设置的,在编译时这个字符串会被记录在2…