免责声明:本套教程旨在促进移动安全发展,提高移动安全意识,教程中所有涉及的样本、知识和内容都是以技术交流和教育教学为目地,任何人不得用于商业用途和违法行为,否则责任与作者无关。 前言: 移动安全日益火爆,在安卓逆向分析流行的同时,对于服务器和客户端的协议算法分析也同样走俏。几乎已经达到“一法难求”,很多人学无门路。在教学市场上,鱼龙混杂,却无论在书籍还是教程上,都没有一套完整的可以真正让人系统化学习安卓协议算法分析的课程,大部分要不就是断章取义,要不就是缺乏框架思路,无法将该知识模块纳为一个独立完整的体系。 本套教程由七少月继上次大型安卓逆向基础公开课之后,再次以数年的逆向经验和实际IT教学经验用心录制,为公开课部分。通过7课的先导课,和5课的正式课,使零基础的朋友们不但掌握安卓协议算法分析基础性知识,更能够通过一个个典型主流APP典型实例,学会安卓协议算法分析的关键性技术:如安卓逆向smali静态分析,IDEA动态调试smali,IDA静态分析和动态调试so,协议构造类查找,协议各字段尤其是sign段计算过程,加密算法程序流程分析,so层加密算法代码还原等等,几乎都是不可能融合成体系公开的核心技术。 对于基础较薄弱的朋友,可以以0基础看先导课,详细介绍了安卓协议算法分析需要的基础性系统知识,对于基础较好的朋友,可以略过: 在正式课部分,每个样本都是极具代表性的主流APP,每节课均有分析、调式、算法还原三大场景,分段教学,在节省时间的同时,也让知识点更加明确和易学。不但如此,每节课都附送大量算法还原源码,同时代码又具有良好的复用性和拓展性,代码更是涵盖了c#,c++,c,java(安卓),e等主流编程语言,满足各种朋友需要。 正式课目录: 第二课课程目录: 每课教学课件: 1. 格xx与java层MD5算法 场景一:抓包与反编译 1.fiddler抓包; 2.fiddler上图片类型灰色原因; 3.同一接口不同功能的协议 场景二:协议大致分析 1.一个具体协议数据的字段理解; 2.协议字段大体查找; 3.协议构造关键类的查找与分析 场景三:协议sign的MD5算法 1.sign是什么意思; 2.动态出sign之前的协议明文; 3.sign值计算 2.43xx与openssl库的Descbc+Md5+Base64算法+盐 场景一、抓包反编译 1.抓登录包2次; 2.反编译:multidex技术,插件 场景二、协议分析 1.锁定重要字段:sign,password,captchaId(验证码) 2.搜索“user-login”,搜索方法: 搜字段:最慢 从界面入手 搜POST网址等相关信息 主要就是抓住协议的功能去搜索 3.协议关键类分析 jr.smali,signdataprovider.smali,Request.smali 场景三、IDEA动态调试 1.得到dateline段、captchaId段; 2.得到password段加密前后值; 3.得到sign前封包、sign段值、model值 场景四、so层分析 1.jni_onload分析; 动态注册函数 2.password段计算分析; 下断,查看寄存器窗口 R0:123456 R2:u!~#7@w0 3. sign段计算分析。 3.Yxx与openssl库的Sha1算法 场景一、抓包反编译 1.抓登录包2次; 2.反编译 场景二、协议分析 1.锁定重要字段:sign,pawd(验证码) 2.搜索“userlogin” 3.协议关键类分析 场景三、IDEA动态调试 1.得到pawd段加密前后值; 2.得到sign前封包; 3.得到真正进入so层计算sign的字段和sign值 场景四、so层分析 1.jni_onload分析; 动态加载jni库 2.sign段计算分析 盐+循环字段拼接的openssl sha1 在generate_key_by_value动态下断开头,可以看到进来的参数是四个字段 在sha1update函数下断,跟着走,会看到一个盐+循环字段读取拼接的sha1加密过程 4.京xx与TEA16轮变形算法 场景一、抓包反编译 1.抓登录包; 封包加密 2.反编译 java层重度混淆 场景二、java与so层接口分析 1.util包 场景三、IDEA动态调试 1.DDMS的方法跟踪; 2.下断java层与so层接口处; 3.获得部分明文; 场景四、so层分析 1.确定不同平台真正加载的so; 2.确定最关键的加密函数; 3.分析关键性加密函数 5.火xxU3D游戏与简易服务端实现+socket协议 场景一、Unity3d游戏源码mono级动态调试 场景二、游戏玩家数据与服务器socket协议交互 场景三、游戏购买与服务器socket协议交互 大型安卓安全协议算法分析公开课: http://pan.baidu.com/s/1bpmd1in
|