某android广告SDK逆向分析总结
分析过程就不讲故事了,只说结论性的东西
0. 一张图胜过千言万语
1. 核心代码加密隐藏
该广告SDK即图中A.jar,使用时import进来即可。A.jar基本都是proxyfunction,核心代码在B.jar中实现,所以B.jar是不会轻易让cracker拿到的, 如图所示
B.jar文件采用DES加密并base64编码,8字节的秘钥跟在最后面, 以StringBuffer变量形式存放在A.jar的某class中
StringBuffer jarFileContent = newStringBuffer().append("6kVkS1Ny/KKlJKs+fT9kTF--这里就是DEX密文啦--mtkc2WNXTCerh1JHGXS.....密钥)
2. DEX动态加载框架
调用接口基本类型
Object invokeObjectMethod(string 类名, string 方法名, class[] 参数类型数组,object[] 参数数组)
调用示例:
(String)invokeObjectMethod(newString("com.abc.classA"), "methodName", new Class[] {Integer.TYPE }, new Object[] { Integer.valueOf(resid) });
接口具体实现三步走
1) 获取Class
2) 获取Class对应的Object
3)reflect invoke
使用2个HashMap分别缓存Class和Class对应的Object,方便后续调用
流程如下
3. B.jar制作
按正常java开发流程编导出jar,然后使用AndroidSDK所带dx工具将jar转换成包含Dalvik byte code的jar文件,如图所示
普通jar包只是一堆class文件的集合,但经过dx优化过后的jar只包含classes.dex
4. 截获B.jar
根据图1我们知道B.jar在load完之后会被删除,那么将删除文件的代码注释掉即可(这里涉及到修改A.jar,不具体展开,请参考如何修改第三方jar自行搜索)
使用修改过的A.jar编写一个app并按照广告SDK的调用流程调用一次,B.jar会产生并留在app的数据目录,然后使用adb或者devicemonitor将B.jar pull出来
最后使用dex2jar工具将B.jar转换成普通的jar包,这样就可以使用java反编译工具进行分析了
5. DEX交叉调用出现ClassNotFound错误的解决
我在修改B.jar时遇到了这个错误,原因是SlaveDex调用了在Main Dex实现的class方法,我们知道ClassLoader的一大特点就是树状结构,每个ClassLoader都有一个父ClassLoader,这个在构建DexClassLoader时会指定,指定父ClassLoader是一件要慎重考虑的事情,ClassNotFound症结就在于此,解决办法如下图
Classloader请参考
Android系统下的动态Dex加载 http://www.cnblogs.com/xitang/p/3534777.html
6. 防篡改与抗静态分析
敏感类方法以reflect形式调用
字符串常量转换成byte数组存储new String(new byte[] { 99, 111, 109, 46, 112, 50, 48, 49, 54, 48,49, 46 })
7. 刷他家广告
我们私下聊
某android广告SDK逆向分析总结相关推荐
- java 广告sdk开发_supersonicads广告sdk逆向分析以及无源码debug java
0x00 背景 最近看到一个小游戏,但是它使用了supersonicads的sdk,广告极其多,非常烦,所以我就逆向了一下它,顺便分析了一下supersonicads的工作原理. 0x01 super ...
- Android软件安全与逆向分析下载电子书pdf下载
Android软件安全与逆向分析下载链接: https://pan.baidu.com/s/1RB8tYECoGXwNh6_vlVV8sw 提取码获取方式:关注下面微信公众号,回复关键字: 1124
- 专访丰生强:Android软件安全与逆向分析
[专家简介] 丰生强(@非虫) Android软件安全专家:看雪论坛Android安全版版主,安卓巴士开发进阶板块版主.对Android软件与系统安全有狂热的爱好和独到的见解,对Android ...
- 百度android广告sdk下载,IS_Freedom
美数广告 SDK 接入流程 1.嵌入广告SDK 将 sdk-android-demo/app/libs 中的 meishu-sdk_xxx_release.aar.open_ad_sdk_xxx.aa ...
- Android广告SDK聚合开发
开发需求需要聚合多渠道广告SDK,并对外提供一套调用接口,中间控制层添加己方服务器交互以及控制逻辑(广告填充优先级等),初次开发sdk,整理遇到的问题希望可以帮到有缘人. 遇到的问题 aar嵌套引用C ...
- android广告SDK原理详解(附源码)
广大的开发者吃糠咽菜开发了一两款APP,获取了一些流量后自然就会想到流量变现,一般情况下大家会选择到百度联盟或者Google Admob这些广告服务提供商注册开发者账号,在自己的APP里面加上几行广告 ...
- android app逆向分析,如何开始对Android应用的逆向分析?
本文是我的关于如何开始Android逆向系列文章的第一部分.在文末提供了一个文档,你可以根据该文档说明部署同我一样的实验环境. 在了解android应用的逆向之前,你必须对android平台及其架构和 ...
- android逆向分析有什么用,如何开始对Android应用的逆向分析?
本文是我的关于如何开始Android逆向系列文章的第一部分.在文末提供了一个文档,你可以根据该文档说明部署同我一样的实验环境. 在了解android应用的逆向之前,你必须对android平台及其架构和 ...
- Android软件安全与逆向分析笔记
Dalvik虚拟机概述 Google于2007年年底正式发布了Android SDK,Dalvik虚拟机也第一次进入了人们的视野.它的作者是丹·伯恩斯坦(Dan Bornstein),名字来源于他的祖 ...
最新文章
- 推荐60+ Flex开发参考网站
- 使用vagrant基于官方的box制作自己的基础box
- java增强型for循环(三种遍历集合方式)
- mysql带IN关键字的查询
- 【时间序列】AR、MA、ARMA与ARIMA
- Debian Security Advisory(Debian安全报告) DSA-4411-1 firefox-esr security update
- %1$s %1$d Android string
- linux根目录9个g,linux根目录下5个主要的目录,及目录的功能
- 宁夏打造会思考更智能新型智慧城市
- c 语言编写个人所得税程序,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
- Hexo 和博客园添加 Live 2D 模型
- 【参赛作品22】华为openGauss数据库行存储源代码解析
- 前端 几个好看的button
- Python安装库的常用方法
- NLP语义技术演进:从DP依存句法到SDP依存语义再到AMR抽象语义分析概述与开源实现...
- Spring Cloud Eureka整合 Seata 实现分布式事务
- 求向量a在向量b上的投影
- 服务器2012系统磁盘压缩,windows xp系统对硬盘进行压缩增加磁盘可用空间的方法...
- Terraria-新手常常忽略的小技巧,效率提升巨大
- 华为nova3e支持鸿蒙系统吗,华为nova 3e值不值得买?HUAWEI nova 3e深度体验评测