Android逆向
文章平均质量分 71
justFWD
这个作者很懒,什么都没留下…
展开
-
360加固之libjiagu.so dump修复
一、elfheader修复dump出来的内存如下图所示,elf header结构有缺失下面是正常elf头的对比图下面是010editor对正常elf header的解析 由上图可知,dump出来的elf header除了e_phoff、e_phentsize、e_phum三个值,其它都为0。 不过这里缺失的,除了e_shoff, e_shnum, e_sh原创 2015-11-20 13:49:41 · 13877 阅读 · 0 评论 -
uleb128、sleb128和uleb128p1编码格式介绍
在程序中,一般使用32位比特位来表示一个整型的数值。不过,一般能够使用到的整数值都不会太大,使用32比特位来表示就有点太浪费了。对于普通计算机来说,这没什么问题,毕竟存储空间那么大。但是,对于移动设备来说,存储空间和内存空间都非常宝贵,不能浪费,能省就省。Android的Dalvik虚拟机中,就使用了uleb128(Unsigned Little Endian Base 128)、uleb转载 2016-03-08 14:17:32 · 1681 阅读 · 0 评论 -
如何无keystore获取apk的签名信息
由于分析破解需要获取使用testkey签名的apk的sha1,很多网上的教程都是从keystore来获取,虽然可以从pk8.pem转在keystore,但是比较麻烦,后来找到一个这样的方法可以实现 把apk用zip打开,把META-INF目录下的rsa后缀名的文件解压出来,命名为cert.rsa,这个文件其实就是签名的公钥,执行如下命令 keytool -print原创 2016-02-26 10:05:41 · 2098 阅读 · 0 评论 -
深入理解Android(二):Java虚拟机Dalvik
编者按:随着移动设备硬件能力的提升,Android系统开放的特质开始显现,各种开发的奇技淫巧、黑科技不断涌现,InfoQ特联合《深入理解Android》系列图书作者邓凡平,开设深入理解Android专栏,探索Android从框架到应用开发的奥秘。一、背景这个选题很大,但并不是一开始就有这么高大上的追求。最初之时,只是源于对Xposed的好奇。Xposed几乎是定制ROM的神器软件技转载 2016-03-23 19:30:33 · 2280 阅读 · 0 评论 -
某梆企业版加固脱壳及抽代码还原方法
某梆加固企业版还是会调用系统的dvmDexFileOpenPartial 接口,因此可以这里添加hook 51df6008-52cd50__unpackedDex.dmp即是dump出来的dex,拖到jeb里,可以看到这些函数都是空的 汇编显示,大片的指令都为nop,这些指令都被抽掉了,执行之前才会还原创 2016-04-15 19:59:39 · 20782 阅读 · 2 评论 -
12306 Android客户端的libcheckcode.so解密及修复
12306Android客户端每个请求包都会带个baseDTO.check_code(如下图)作为数据包安全及完整性校验码,这个校验码由libcheckcode.so生成 如果需要模拟购买火车票的过程,就要调用这个libcheckcode.so,不过这个SO使用dlopen无法加载。其ELF头,如下图所示,红框内表示ProgramHeader,里面的内容不符合elf原创 2015-04-23 11:58:45 · 7899 阅读 · 5 评论 -
12306 2.2版本SO的分析和修复
老早写的,现在已经2.3版本了,把这个放出来,这个方法要比之前的简单很多。 12306的so加载顺序是先libDexHelper.so后libcheckcode.so 一、修复libDexHelper.so 我们先把libDexHelper.so dump出来,并修复,修复后的IDA分析结果如下图:libDexHelper.so修复好后,备原创 2016-03-15 20:09:20 · 5790 阅读 · 3 评论 -
Android smail变量对照表
从别人的一篇文章里拿扣的,放这里备查原始类型V void (只能用于返回值类型) Z boolean B byte S short C char I int J long F float D Double 对象类型Lpackage/name/ObjectName; 相当于java中的package.name.ObjectName L 表示这是一个对象类型转载 2015-10-10 15:41:28 · 1907 阅读 · 0 评论 -
Android smalidea无源码调试
Android smalidea无源码调试已有功能语法高亮/错误提示字节码级别调试断点单步调试寄存器查看本地窗口 java 语法支持,debug 模式下同样支持支持跳转,方便追踪变量/函数/类.(Xref也支持)查找用法重命名从 java 代码引用 smali 类安装下载插件smalidea进入IntelliJ IDEA/Android Studio转载 2016-09-07 17:00:54 · 5445 阅读 · 0 评论 -
关于烧饼游戏修改器的分析
一、前言 烧饼游戏修改器是一款元老级的游戏修改器,提供了精确搜索、模糊搜索、联合搜索、数据过滤、存储搜索与读取搜索等功能。主要实现搜索手机进程的内存数据并做相应修改。 本文中分析的版本为2.0.2(34),SDK:8,TargetSDK:17,代码经过混淆,修改器基本使用方法为输入需要修改的数据进行查询,查询结果少则可直接修改,查询结果多则需要返回游戏,使想修改的数据发生变化后转载 2017-01-09 16:46:34 · 7575 阅读 · 3 评论 -
Unity3d DLL脚本通用解密方法
网上已经有很多文章讲解过Unity3d脚本DLL 解密,基本方法原理都差不多,就是通过HOOK或者调试下断mono_image_open_from_data_with_name这个函数拿到解密后的DLL。这些方法都需要比较专业的知识(Hook或者过反调试),另外对于使用了强度比较高的第三方保护,也无能为力。下面我们来探讨一下更为通用简便的U3D脚本DLL解密方法。原创 2017-02-26 21:05:25 · 17817 阅读 · 7 评论 -
对抗某讯手游保护解密U3D脚本DLL
上篇的Unity3d DLL通用解密方法分享后,有同学反馈说,某讯的手游使用烧饼修改器搜索内存会强制退出。去年看的时候还没有反修改器功能的,应该是后来有功能升级了。 针对这种反修改器搜索的情况,我们来研究个新的对抗方法。这个方法相比上一个稍微复杂一点,不过如果有一定逆向基础,也是比较浅显易懂的。 先思考一下他反修改器搜索的原理,必定是通过某个线程来检测修改器的,如果原创 2017-03-05 12:52:54 · 6991 阅读 · 0 评论 -
工具党如何干掉某讯手游的反修改器功能
游戏修改器(如GG修改器)可以实现很多变态功能,像无敌、倍攻、秒杀等,尤其是吃鸡类游戏,很多所谓的外挂其实就是使用修改器而已。本文介绍一种工具党干掉这种保护的方法。原创 2017-11-09 19:51:12 · 20988 阅读 · 9 评论 -
突破https——https抓包
加密阶段学习了https原理,现在开始尝试破解,工具主要是burp suite, fiddler/charles与之类似。一些概念性的东西中间人攻击在中间人攻击中,攻击主机通常截断客户端和服务器的加密通信。攻击机以自己的证书替代服务器发给客户端的证书。通常,客户端不会验证该证书,直接接受该证书,从而建立起和攻击机的安全连接。这样,客户端发送的数据,都会被攻击机获取和解密。转载 2017-12-10 20:48:57 · 39100 阅读 · 2 评论 -
android graphic(14)—EGL和OpenGL ES之间的关系
OpenGL是和编程语言、平台无关的一套interface ,主要是为了rendering 2D 和 3D图形等。一般这套接口是用来和GPU进行交互的,使用GPU进行rendering 硬件加速。 说白了OpenGL就是一组函数名,类似java中的interface,并不能直接用。转载 2017-12-04 15:14:41 · 1039 阅读 · 1 评论 -
Dex文件格式
Dex文件格式Google虽然借鉴了Java的上层设计,但是虚拟机使用的是自己设计的Dalvik,Dalvik虚拟机读取、解释的文件是DEX文件。虽然在Android 4.0开始,开始引入类似C#的二次编译技术(Android自称ART),Android 5.0已经完全放弃Dalvik虚拟机(所以源码里已经没有Dalvik设计文档了),但是,二次编译技术是安装apk时候的事,我们用转载 2016-03-08 11:29:05 · 1956 阅读 · 0 评论 -
Android安全–从defineClassNative看类的加载过程
前面一篇文章中讲到Dex的加载过程,其中涉及到的结构体有:struct DexOrJar { char* fileName; bool isDex; bool okayToFree; RawDexFile* pRawDexFile; JarFile*转载 2016-03-17 17:51:23 · 3941 阅读 · 0 评论 -
360加固之libjiagu.so脱壳及dex dump
360加固后的apk,在arm设备上首先会将assets目录下的libjiagu.so拷贝到files目录下,然后通过libjiagu.so动态加载原始dex libjiagu.so的init_proc和init_array都无实质功能,真正的解密放在JNI_OnLoad里面 JNI_OnLoad函数里有非常多的垃圾跳转指令干扰分析,后面还会原创 2015-11-17 13:57:07 · 29229 阅读 · 11 评论 -
fiddler Android下https抓包全攻略
fiddler Android下https抓包全攻略 fiddler的http、https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行、支付宝、陌陌这样的APP是抓不到包的,需要一些特殊的配置,本文把fiddler Android下https抓包的详细配置都罗列出来,供大家参考。一、普通https抓包设置先对Fiddler进行设置:原创 2015-02-28 18:39:14 · 11561 阅读 · 10 评论 -
改造 Cydia Substrate 框架用于函数内代码的HOOK
上一次分析了Cydia Substrate so hook 框架的实现,实际使用中,发现这样的框架并不能满足我的一些需求,比如我要知道一个函数内部某处代码的运行时的寄存器值,用原始的框架就无法做到。 想实现的功能是只要指定一个地址,就可以打印该处代码执行时的寄存器环境、HOOK的地址以及线程的TID,同时支持多个地址的添加。 先实现一个通用的消息打印函数原创 2014-12-24 13:36:59 · 4139 阅读 · 2 评论 -
Cydia Substrate框架Android so hook分析
最近需要用到Android so hook,于是分析了一下比较流行的Cydia Substrate框架 CydiaSubstrate框架的核心函数是MSHOOKFunction,官方使用说明如下: 现在Android 默认编译出来的都是thumb指令集的,就分析一下这个模式下的HOOK吧。 在使用MSHOOKFun原创 2014-12-21 17:13:57 · 4590 阅读 · 0 评论 -
Android签名与认证原理
一、Android签名概述我们已经知道的是:Android对每一个Apk文件都会进行签名,在Apk文件安装时,系统会对其签名信息进行比对,判断程序的完整性,从而决定该Apk文件是否可以安装,在一定程度上达到安全的目的。给定一个Apk文件,解压,可以看到一个META-INFO文件夹,在该文件夹下有三个文件:分别为MANIFEST.MF、CERT.SF和CERT.RSA。这三个文件分别转载 2015-12-22 11:17:02 · 3838 阅读 · 0 评论 -
从Android运行时出发,打造我们的脱壳神器
0x00 前言之前对Android的两个运行时的源码做了一些研究,又加上如火如荼的Android加固服务的兴起,便产生了打造一个用于脱壳的运行时,于是便有了DexHunter的诞生(源码:https://github.com/zyq8709/DexHunter/)。今天,我就通过这篇小文聊聊我的一些简单的思路,供大家参考和讨论。0x02 相关机制首先,先来看一看An转载 2015-11-30 13:56:32 · 2306 阅读 · 0 评论 -
APK加固之类抽取分析与修复
测试环境与工具手机系统: 华为U9508 android 4.2.2IDA Pro 6.8AndroidKiller 1.2高手不要见笑,仅供小菜玩乐,有不对或不足的地方还请多多指教,不胜感激!0x00 简单介绍 目前我己知的APK加固主要有以下两种方式(或有其它的方式有待发现)隐藏dex文件:通过对目标DEX文件进行整体加密或压缩方式把整个dex转换转载 2015-11-27 18:01:03 · 5459 阅读 · 0 评论 -
安卓 dex 通用脱壳技术研究
注:以下4篇博文中,部分图片引用自DexHunter作者zyqqyz在slide.pptx中的图片,版本归原作者所有;0x01 背景介绍安卓 APP 的保护一般分为下列几个方面:JAVA/C代码混淆dex文件加壳.so文件加壳反动态调试技术其中混淆和加壳是为了防止对应用的静态分析;代码混淆会增加攻击者的时间成本,转载 2015-11-27 17:57:11 · 4166 阅读 · 0 评论 -
010Editor的ELFTemplate 16进制改造
010Editor查看elf文件结构非常方便,但是官方提供的模板,很多值都以10进制来显示 对于二进制内容,还是16进制显示更方便。修改后如下图所示, 这样就直观多了。原创 2015-09-01 17:22:14 · 4285 阅读 · 0 评论 -
smali patch常用指令
数字常量const/4 vA,0xB 表示4bit数字,最大15const/16 vAA, 0xBBBB 表示16bit数字const vAA, 0xBBBBBBBB 表示32bit数字字符串常量const-string vAA, string@BBBBconst-string/jumbo vAA, string@BB原创 2015-05-13 09:57:57 · 3010 阅读 · 0 评论 -
APK一键快捷工具
apk分析常常需要使用安装、重新打包、解包等功能,如果每次都使用命令行来操作则非常繁琐,目前也有一些工具用来帮助实现这些功能,像apkToolGui、android逆向助手等。但是操作步骤比较多,并不足够快捷,有些功能也不全。于是想到写个更为便捷的工具。 windows下的IDA、Ollydbg等工具都可通过注册表一键使用,这种方式还是非常方便的。这里也把需要的功能单独出来放到右键菜单里来原创 2015-02-27 14:35:08 · 1751 阅读 · 0 评论 -
snapchat阅后即焚实现分析
最近主打阅后即焚的snapchat似乎又火了起来,估值已经达到100亿美元了。阅后即焚这个功能看上去挺神秘的样子,我们来分析一下它到底是怎么实现的吧。 通过wireshark抓包,发现全部都是SSL包,无法解密,但是至少可以确定这个app全程使用https进行通讯。另外APP还对HTTPS代码做了某些处理,使得fiddler的证书劫持功能也无法正常使用,那就只有再次祭上netbean原创 2014-12-21 17:12:56 · 9350 阅读 · 1 评论 -
Android端不通过登录SDK实现QQ登录验证
通常的APP如果要调用QQ登录验证,需要使用QQ提供的登录SDK,但是QQ的SDK使用需要申请APP KEY和APPID,还要向腾讯提交比较繁琐的其它申请,而且如果通过该方法,登录信息全部被QQ掌握。那么是否有方法可以不申请DIY使用QQ登录验证呢。 看了几个QQ移动产品,并未使用这种方式APP KEY的方式进行验证登录,大致确定QQ的产品并没有使用这种接口,而是使用自有的方法直接原创 2014-12-21 17:11:22 · 4462 阅读 · 7 评论 -
过陌陌APK签名校验
想分析下陌陌的一些功能,想不到陌陌还做了蛮多保护。分析使用的是5.2版本,这个版本进行了加壳,先要把壳脱掉,脱壳因为有万能的脱壳机,这里过程就略过了,主要讲下过签名校验吧。 过签名校验看雪上有同学之前有讲过,不过是2012年的,陌陌的文件名已经完全不一样了,不过他的签名获取代码还是跟以前类似,可以借用来定位一下代码位置。 用apk改之理对脱完壳的APK进行分析原创 2014-11-14 18:04:49 · 2266 阅读 · 0 评论 -
阿里系UTDID库生成唯一性ID分析
在重构某个apk的时候,偶然发现了友盟在使用一个叫utdid的库,感觉是生成UUID用的,刚好对UUID的生成逻辑比较感兴趣,就有了下文。 一、utdid实现过程分析 publicstatic String getUtdid(Context arg2)是utdid库对外调用的接口, 在com.ta.utdid2.device.UTDevice类里 具体代码原创 2016-01-20 17:42:31 · 42046 阅读 · 4 评论 -
手游性能测试指南
随着手游3D类型游戏增多,对机器资源占用越发高,但用户手中硬件的提升是一个不可控且缓慢的过程,为了保证在尽量广泛的机型上流畅运行,提高游戏本身的潜在用户群体,所以手游客户端性能审核工作就越发重要,如何做客户端性能审核,如何快速,专业,准确的做客户端性能审核是我们需要重点关注、且持续建设的内容。转载 2017-12-04 15:20:12 · 5231 阅读 · 0 评论