摘要:
1、对于逆向工作而言,最重要的工作内容之一就是trace了! 目前trace分两种场景: (1)dex-VMP壳、java层关键(比如加密)代码定位:这时需要trace函数的调用关系,目前已有android studio自带的method profiling工具可以干这事! (2)so层代码定位: 阅读全文
摘要:
1、从kanxue上拿到了一个VMP样本,用GDA打开,发现是数字壳;从androidMainfest可以找到原入口,但是已经被壳抽取了,如下: 这种情况我也不知道加壳后的apk从哪开始执行(之前分析的壳都是从壳自定义的MainActivity开始,这里还是保留了原入口,但从包结构看原入口已经没了) 阅读全文
摘要:
为了保护代码、干扰静态分析,android客户端可以通过OLLVM干扰整个so层代码执行的控制流,但不会改变函数调用的关系,所以抓住这点并不难破解OLLVM;另一个大家耳熟能详的代码保护方式就是VMP了!我之前介绍了windos下VMP代码混淆的原理,其实在android下也类似:对原来的smail 阅读全文
摘要:
做脱机协议,首先要找到关键的加密代码,然而这些代码一般都在so里面,因为逆向c/c++的难度远比java大多了!找到关键代码后,一般情况下是逐行分析,然后自己写代码复现整个加密过程。但是,有些非标准的加密算法是由一个团队实现的,整个过程非常复杂。逆向人员再去逐行分析和复现,有点“不划算”!怎么才能直 阅读全文
摘要:
搞android逆向,肯定听说过OLLVM是啥(不知道的肯定就是没搞过android逆向的)!想要破解OLLVM,首先要了解OLLVM的原理。要了解OLLVM的原理,就要先了解LLVM的原理! 1、LLVM原理介绍 大家平日里在编译器里写代码,写完后点击编译或运行按钮,都发生了什么了? 可执行的PE 阅读全文
摘要:
逆向分析X东时,遇到了狠角色,通过fidderl抓包如下:登陆的包和返回包的body全都不是明文!这是我分析了这么多app以来头一次遇到这种情况! 以前抓包分析,遇到最多的情况就是某些字段加密,x东时我遇到第一个数据包的body都加密的app;以前可以根据字段名称在java层或so层查找加密的方法, 阅读全文
摘要:
上文通过fiddler抓到了点赞的包,并通过对比不同包的差异确定了需要逆向4个关键字段的算法:X-Ladon、X-Gorgon、X-Tyhon、X-Argus; 本文尝试逆向分析这些字段的实现算法! 既然要逆向分析字段的生算法,第一件事就是要找到算法的生成代码。这里再重复一句真理: 逆向都是从数据开 阅读全文
摘要:
这次同样以T厂的x固加壳为例:为了方便理解,减少不必要的干扰,这里只写了一个简单的apk,在界面静态展示一些字符串,如下: 用x固加壳后,用jadx打开后,先看看AndroidMainfest这个全apk的配置文件:入口是“MyWrapperProxyApplication”; <applicati 阅读全文
摘要:
自己写了个简单的helloword.apk,用x固(二代)的版本加壳后,在模拟器能正常运行,今天来试试手动dump脱壳;用jadx打开加壳后的apk,发现结构我没加壳的比变化较大。该从哪入手分析了?整个apk中,AndroidMainfest是大而全的配置文件,标明了apk的四大组件、包明、入口点等 阅读全文
摘要:
日常业务中,经常会生成随机数,这里以C++为例,常见的随机数生成方法如下:原理很简单,先生成一个随机数生成器,指定种子,然后生成随机数; #include <iostream> #include <windows.h> int main() { printf("time(0)=%d",time(0) 阅读全文