分析过程就不讲故事了,只说结论性的东西

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逆向分析总结相关推荐

  1. java 广告sdk开发_supersonicads广告sdk逆向分析以及无源码debug java

    0x00 背景 最近看到一个小游戏,但是它使用了supersonicads的sdk,广告极其多,非常烦,所以我就逆向了一下它,顺便分析了一下supersonicads的工作原理. 0x01 super ...

  2. Android软件安全与逆向分析下载电子书pdf下载

    Android软件安全与逆向分析下载链接: https://pan.baidu.com/s/1RB8tYECoGXwNh6_vlVV8sw 提取码获取方式:关注下面微信公众号,回复关键字: 1124

  3. 专访丰生强:Android软件安全与逆向分析

    [专家简介]   丰生强(@非虫)   Android软件安全专家:看雪论坛Android安全版版主,安卓巴士开发进阶板块版主.对Android软件与系统安全有狂热的爱好和独到的见解,对Android ...

  4. 百度android广告sdk下载,IS_Freedom

    美数广告 SDK 接入流程 1.嵌入广告SDK 将 sdk-android-demo/app/libs 中的 meishu-sdk_xxx_release.aar.open_ad_sdk_xxx.aa ...

  5. Android广告SDK聚合开发

    开发需求需要聚合多渠道广告SDK,并对外提供一套调用接口,中间控制层添加己方服务器交互以及控制逻辑(广告填充优先级等),初次开发sdk,整理遇到的问题希望可以帮到有缘人. 遇到的问题 aar嵌套引用C ...

  6. android广告SDK原理详解(附源码)

    广大的开发者吃糠咽菜开发了一两款APP,获取了一些流量后自然就会想到流量变现,一般情况下大家会选择到百度联盟或者Google Admob这些广告服务提供商注册开发者账号,在自己的APP里面加上几行广告 ...

  7. android app逆向分析,如何开始对Android应用的逆向分析?

    本文是我的关于如何开始Android逆向系列文章的第一部分.在文末提供了一个文档,你可以根据该文档说明部署同我一样的实验环境. 在了解android应用的逆向之前,你必须对android平台及其架构和 ...

  8. android逆向分析有什么用,如何开始对Android应用的逆向分析?

    本文是我的关于如何开始Android逆向系列文章的第一部分.在文末提供了一个文档,你可以根据该文档说明部署同我一样的实验环境. 在了解android应用的逆向之前,你必须对android平台及其架构和 ...

  9. Android软件安全与逆向分析笔记

    Dalvik虚拟机概述 Google于2007年年底正式发布了Android SDK,Dalvik虚拟机也第一次进入了人们的视野.它的作者是丹·伯恩斯坦(Dan Bornstein),名字来源于他的祖 ...

最新文章

  1. 推荐60+ Flex开发参考网站
  2. 使用vagrant基于官方的box制作自己的基础box
  3. java增强型for循环(三种遍历集合方式)
  4. mysql带IN关键字的查询
  5. 【时间序列】AR、MA、ARMA与ARIMA
  6. Debian Security Advisory(Debian安全报告) DSA-4411-1 firefox-esr security update
  7. %1$s %1$d Android string
  8. linux根目录9个g,linux根目录下5个主要的目录,及目录的功能
  9. 宁夏打造会思考更智能新型智慧城市
  10. c 语言编写个人所得税程序,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  11. Hexo 和博客园添加 Live 2D 模型
  12. 【参赛作品22】华为openGauss数据库行存储源代码解析
  13. 前端 几个好看的button
  14. Python安装库的常用方法
  15. NLP语义技术演进:从DP依存句法到SDP依存语义再到AMR抽象语义分析概述与开源实现...
  16. Spring Cloud Eureka整合 Seata 实现分布式事务
  17. 求向量a在向量b上的投影
  18. 服务器2012系统磁盘压缩,windows xp系统对硬盘进行压缩增加磁盘可用空间的方法...
  19. Terraria-新手常常忽略的小技巧,效率提升巨大
  20. 华为nova3e支持鸿蒙系统吗,华为nova 3e值不值得买?HUAWEI nova 3e深度体验评测

热门文章

  1. 【PBR系列一】PBR知识体系
  2. Cadence OrCAD Capture 打印图纸的某一个部分的方法
  3. 食品加工企业自营商城小程序开发,帮助企业增加销售渠道,提高销量
  4. 面试上海启明星辰+渗透测试工程师! 通过
  5. Linux搭建泰拉瑞亚(原版/模组/插件)服务器之1.4模组服务器
  6. 全球时间与北京时间、UTC时间关系表
  7. 阿里飞猪搜索技术的应用与创新(v2021-02-03)
  8. 浪涌、群脉冲、ESD等级标准
  9. 如何在windows上使用VMware安装macOS虚拟机
  10. 浏览器功能大比拼:谁更出彩?