360加固逆向脱壳之过反调试
写在最前,本来是想把360加固全部脱壳后,写一篇教程。不过在我过了360加固调试后,最后卡在了native void onCreate函数的提取。最后就无结果了。但又发现许多人卡在了360加固的反调试,为了帮助其他人能成功(其实我没有这么伟大,只是发现写这篇文章对我没有害处,就决定放出来),而且希望,如果有人把native void onCreate函数dump下来的话,请觅我,我真的很想知道360加固的原理与逆向方法(这才是重点)。哦,对了,360加固版本是1.3,如果用的Android的 art 模式,在网上有一篇文章是修改系统的,可直接dump出源码,不过我没有亲测,而我用的是dalvik模式,主要是为了弄清360加固的加固原理与反调试原理。
我的360加固1.3样本下载地址: http://pan.baidu.com/s/1pKSP22n
好了,让我们开始吧。
一、使用系统上,我用android4.4编译了一个自己的android系统,并且运行在虚拟机上运行,(由此不用把APK改为什么Debug模式了,因为我用的系统就是Debug模式)修改的地方是在Native.cpp 文件中的dvmLoadNativeCode函数中 version =(*func)(gDvmJni.jniVm, NULL); 之前加入sleep(20); 之后IDA会自动断点在sleep之后,是不是很神奇?
二、启动虚拟机,并使用编译好的android 系统包(具体怎么编译,是另外的一篇教程了,可以网上搜索到,很多的。),不过也可以直接是用jdb作为桥接。
写在第三步之前,其实这里面还有一个可有可无的东西,需要把apk用apktool可解压,但是直接用现有的apktool解压会失败,解决方法是直接去获取apktool的源码,并且修改一个地方就OK了,至于修改哪里,有兴趣的朋友可以自己查找。应该都能过的。
三、虚拟机启动后,打开一个cmd,在其中输入adb forward tcp:23946 tcp:23946
再打开一个cmd,在之中运行adb shell, 然后在运行/data/local/tmp/android_server(是用IDA里面的android_server,放入到虚拟机的,并且修改了权限,网上有很多教程,可搜索)
然后在虚拟机中运行Test360_2(也就是我制作的一个360加固的hello_world样本,已经签名好了的)
四、然后就开始用IDA attach Test360_2进程了。关键性的东西来了。
一开始,IDA会自动断点在这里
经过4,5步F7后,来到libdvm.so
红色圆圈是我在系统源码中打的调试信息,然后在BLX R10处F7,也就是进入函数jni_onload()然后来到并在红色进入F7
来到,红色出 F7
来到,并在红色处 F7
进入上面第一个红色后,鼠标滚轮往下找到switch 函数,并在case 25下断点,如下图
然后F9(好像是按了2次F9,呵呵),反正是来到case 25,然后在 case 14 下断点如图
F7进入
多次单步F7后,来到
把R3寄存器的6000010改为A000010 (这里的反调试检测,可能是检测rtld_db_dlactivity 函数,不过不太确定,因为没有看见源代码)
然后单步,把case 14与case 25的断点给取消掉,并在case 29下断点,并且进入,当BLX LR调用 strtol 的时候,需要单步出来修改一些值,来到MOV R7,R0的时候
修改R0的之后0,
并且把 R1的hex处改为0,如下图中的红色出,需要修改为0
这里以上是检测 TracePID
然后继续F9,在多次 case 29 多次下断点后,来到
在CMP处,把R0的值修改为0(这里是检测调试端口),然后F9
还是来到
在MOV R7,R0处下端点,并修改R0与R2的值,
修改为堆栈中的值(可能你的这个值不一样,因为这个值是之前调试的时候的一个时间。这里是时间检测)
然后就没有反调试的代码了,多次F9后,就来到了
来到了全新的世界。可是我最后没有dump出native void onCreate,遗憾。
原文地址: http://blog.csdn.net/chen249191508/article/details/52779264
360加固逆向脱壳之过反调试相关推荐
- 360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”
0x00 寻找突破口 打开首页,emm 就一个登录页面,没了 随便写点东西提交看看 天生手欠的我一不小心就多输了一个单引号 WDNMD,除了数字和字母其他都不行? 这叫我怎么测? 刚刚要放弃,就在这时 ...
- Android APK脱壳--腾讯乐固、360加固一键脱壳 亲测可用
日期:2019年8月28日 设备:win木木模拟器2.2.16 脱壳教程:https://www.jianshu.com/p/138c9de2c987 adb连接木木模拟器教程:https://www ...
- 360加固保的dex脱壳方法
博客地址:http://blog.csdn.net/qq1084283172/article/details/53149214 360整体加固classes.dex后的apk程序的特点,以超信1.1. ...
- Android逆向与安全——360 dex加固与脱壳
前言 现在市面上对APP的安全合规管控越来越严格了,也就要求了APP在上架之前一定要做合规检测和加固处理.对APP就是加固的好处,可以提高APP的安全性,提高APP被逆向分析破解的门槛,同时通过加固保 ...
- 分享一个360加固脱壳模拟器
前段时间由于工作需要,需要对一个360加固后的APK进行脱壳,网上查了一些相关资料,发现一篇看雪论坛里前辈写的帖子<360加固成功脱壳>. 结合自己对ART机制的了解,dex文件在ART上 ...
- android的反调试方法,Android平台融合多特征的APP反调试方法与流程
本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域. 背景技术: 应用程序本身并不具备反调试的功能,但是动态调试是动态分析应用逻辑.动态脱壳等攻击方式所采取的必要手 ...
- [Android 分享] 使用xposed来hook使用360加固的应用
0x00 原理 使用360加固之后的应用的classloader会被换成360的,所以只需要在hook的时候把classloader换成360的就可以了. 0x01 反编译 被360加固的应用是可以反 ...
- 【安卓逆向】360加固-脱壳修复
最近花了一些时间学习逆向脱壳,这方面一直投入的时间比较少.样本经过某加固宝进行加固,这里简单记录一下脱壳过程和思路,感谢某数字公司对安全加固的无私贡献,让我有机会小小的提高一下这方面的技能. *安卓逆 ...
- python 工程结构加固_【安卓逆向】360加固-脱壳修复
360加固-脱壳修复 最近花了一些时间学习逆向脱壳,这方面一直投入的时间比较少.样本经过某加固宝进行加固,这里简单记录一下脱壳过程和思路,感谢某数字公司对安全加固的无私贡献,让我有机会小小的提高一下这 ...
最新文章
- 【11平台天梯】【原理分析】11平台天梯原理分析
- memcached简介(转)
- 使用nmap扫描提示utf-8编码错误_Web漏洞扫描神器Nikto使用指南
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答...
- TLS总结(上)——我们为啥需要TLS
- 计算机原理考研题库,东北大学计算机组成原理题库(9)
- UML大作业【小型超市管理系统】
- 游程编码详解(C语言)
- 087 定积分求面积应用习题
- 交叉熵、KL散度、Jeffery分歧、JS散度
- 沙加在沙罗双树下临死前的一段对白
- 感谢ZhangYu dalao回关
- 王道数据结构P40第一题,为什么直接去掉结点不会造成断链?
- 第一个完整页面来啦~小米官网
- 提高订单成交率的九大技巧,你还不知道吗?
- XGBoost的目标函数推导和分裂增益计算
- 魂断“中国百慕大”?GIS斩祸根!
- 物联网通信协议(接入协议)
- 在小程序里如何让用户快速选择到所在的小区
- Acala 团队入选 UC Berkeley 2020 春季孵化加速器
热门文章
- 高性能jdbc封装工具 Apache Commons DbUtils 1.6(转载)
- Sharepoint 2007 用代码聚合所有子网站文章 (populating data sources in code)
- 事件相关去同步 (ERD) 和事件相关同步化 (ERS)在脑电信号研究中的应用
- 平稳随机序列的自相关函数和功率谱密度
- Go 语言web 框架 Gin 练习 7
- 编程方法学21:监听器和迭代器回顾
- Python进阶_wxpy学习:聊天对象
- 众核多计算模式系统的构建 - 全文
- 原:开辟内存时,可以以结构体为单位,这样测试,是对的吧?
- [云炬创业管理笔记]第四章把握创业机会测试2