国内apk加固的破解方法

国内apk加固的破解方法

By Bob Pan

国内的apk加固技术都使用了将原有的dex隐藏, 在运行时解压, 并且通过修改app的类加载器的方式实现加固. 参考: AndoridAPK反逆向解决方案:bb加固原理探寻

然而, 不管如何隐藏dex, 最终在运行时都必须释放到内存, 所以本文的思路是从内存中找到解密后的dex文件, 进而得到加固前的apk.

注意: 这个方法截止2014-07-29有效, 后续版本未测试. 由于dalvik的执行机制要求dex在内存中是连续的, 所以想办法拿到内存的coredump总是不错的选择.

更新: 某公司会对名字为gdb的程序进行检测, 请将gdb重命名, 比如hello.

注意: 如果gdb连不上对应的pid, 请尝试连接/proc/[pid]/task/目录下的tid

某公司

某公司加固的app并没有做反调试的保护. 打开app之后直接使用gdb连接, 然后用gcore, 产生core dump.

使用ps查看pid

使用gdb连接pid

使用gcore产生core dump

将产生的core.1033复制回电脑, 并使用编辑器打开, 通过类名找到dex中string-data段, 然后通过查找’dex.035’可以找到多离string-data最近的个dex头. dex文件头偏移32的整形值就是dex的文件长度. 使用dd命令可以从内存中抠出dex.

更新: 拿到的事实上是一个odex文件, 里面会包含odex的指令.  通过一个修改过的baksmali处理后可以恢复原始的dex.

更新: 修复odex的方法,

1. 将系统的/system/framework目录复制到本地的framework目录

2. 运行baksmali -x -d framework  abc.odex   //将输出smali文件到out目录, 请尽量使用linux

3. 运行smali out -o classes.dex  //重新制作dex

通过类名找string-data段

找到最近的dex文件头(0x4f87a08)和dex文件大小0x07c0

使用dd抠出dex

这个文件是个完整的dex文件, 并且可以被dexdump直接打印

[注意: 部分内容已丢失]

总结

通过隐藏dex确实可以让大部分静态分析工具找不到执行代码, 但是在动态运行的时候无可避免的需要将dex在内存中还原. 通过本文的方法分析其内存然后恢复dex, 更进一步可以完全恢复原始apk.

国内apk加固的破解方法

时间: 2024-11-02 00:44:41

国内apk加固的破解方法的相关文章

Android程序apk反编译破解方法

简短不割了,我们直接奔主题吧. 把apktool-install-windows-r05-ibot文件里的两个文件剪切到apktool1.5.1目录. 新建一个文件夹把需要破解的apk应用程序放进去. 在此文件夹下打开cmd 输入apktool 显示如下信息方可使用. apktool d 应用程序路径 解压路径 反编译后代码如下. Res是一些图片文件可以修改,程序代码修改在smali 文件里,接下来需要提取classes.dex文件出来,直接用360压缩打开提取出来破解源代码. 接下里打开de

手游Apk破解疯狂,爱加密apk加固保护开发人员

2013年手游行业的规模与收入均实现了大幅增长,发展势头强劲.权威数据显示, 我国移动游戏市场实际销售收入从2012年的32.4亿猛增到2013年的112.4亿元,同比增长了246.9%,手游用户从2012年的8900万迅 速增长到2013年的3.1亿,增长幅度高达248.5%.来源!www.ijiami.cn 可是,在移动手游快速发展的同一时候,暴露出的手游破解问题也日益严重,手机游戏软件被破解后注入恶意代码.盗取用户財产.窃取用户设备信息的现象屡见不鲜.2014年1月,台湾易游网络有限公司旗

Android APK加固技术方案调研

@author ASCE1885的 Github 简书 微博 CSDN 最近项目中需要实现自己的APK加固方案,因此就有了这一篇调研报告. 软件安全领域的攻防向来是道高一尺魔高一丈,攻防双方都处于不断的演变和进化过程中,因此软件加固技术需要长期持续的研究与投入. 目前成熟的第三方解决方案 1. 娜迦 针对Android平台下的APP被逆向分析,破解,植入木马病毒后,用户敏感信息泄露或者被钓鱼网站劫持,NAGA Android保护采用防止静态分析与防止动态调试全面防护的思路,在未保护程序运行的不同

Android中apk加固完善篇之内存加载dex方案实现原理(不落地方式加载)

一.前言 时隔半年,困扰的问题始终是需要解决的,之前也算是没时间弄,今天因为有人在此提起这个问题,那么就不能不解决了,这里写一篇文章记录一下吧.那么是什么问题呢? 就是关于之前的一个话题:Android中apk加固技术实现 关于这个问题,之前的一篇文章已经说过了,没有了解的同学可以点击这里:Android中apk加固技术实现 请务必仔细的看完这篇文章,不然今天说的内容会感觉很蛋疼的,因为今天的文章就是为了解决当初的加固技术遗留的问题,这里先大致来说一下加固apk的原理吧,先来看一张图: 看到这张

单片机破解方法(摘录)

单片机芯片的破解方法如下   单片机芯片的破解方法如下,其实,一般的人也还是破解不开的,能破解的都是小芯片/小程序(直接说就是模仿其功能而新开发新程序)或破解成本比开发还高,只要用以下几种方法来设计产品: 1:让原芯片厂家将芯片的封装脚位全部调换: 2:将HTXXXX的印字印为MDTXXXX的,将PICXXX的印为ATXXXX........ 3:使用四层板(故意多走一些线); 4:用环氧树脂+酶(xxx酶:可增加硬度,如将其弄开后芯片就报废了)将测试好的线路板密封上: 5:将芯片的程序里加入芯

MyEclipse 10官网下载地址以及破解方法

刚刚公布了MyEclipse 10,我如今用的还是6.5的版本号,6.5的版本号是我认为最好用的一个版本号. 我装上了,还没感受到有哪些好用,就是感觉体积庞大,和IBM 的WID一样,是个多面手,啥事都能干,事实上常常能使用的也就当中那么几个功能,要是能像插件一样,即插即用就好了. MyEclipse 10使用最高级的桌面和Web开发技术,包含 HTML5 和 Java EE 6,支持 JPA 2.0.JSF 2.0 .Eclipselink 2.1 以及 OpenJPA 2.0. 而对 IBM

APK加固之类抽取分析与修复

0x00 简单介绍   目前我己知的APK加固主要有以下两种方式(或有其它的方式有待发现) 隐藏dex文件:通过对目标DEX文件进行整体加密或压缩方式把整个dex转换为另外一个文件存放在assets文件夹中或者其它地方,然后利用类加载器技术进行内存解密并加载运行. 修改dex结构:抽取DexCode中的字节码指令后用零去填充,或者修改方法属性等操作,运行时在内存中做修正.修复等处理工作. 0x01 APK加固前后对比   整体来看一下原始APK包和加固后的APK包结构相关变化 图1 图1所示加固

【安全牛学习笔记】思路、身份认证方法、密码破解方法、字典

思路 目标系统实施了强安全措施 - 安装了所有补丁 - 无任何已知漏洞 - 无应用层漏洞 - 攻击面最小化 社会工程学 获取目标系统用户身份 - 非授权用户不守信,认证用户可以访问守信资源 - 已有用户账号权限受限,需要提权 - 不会触发系统报警 身份认证方法 证明你是声称你是的那个人 - 你知道什么(账号密码.pin.passphrase) - 你有什么(令牌.token.key.证书.密保.手机) - 你是谁(指纹.视网膜.虹膜.掌纹.声纹.面部识别) - 以上方法结合适用(多因素身份认证)

Lua游戏逆向及破解方法介绍

Lua游戏逆向及破解方法介绍 背景介绍 随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台.Lua脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹暖暖.疾风猎人.万万没想到等手游.随着Lua手游的增加,其安全性更值得关注,在此归纳一些常用的分析方法,同时介绍一些辅助工具. 识别Lua游戏 Android平台的apk包可以直接解压,找到./lib目录下的so逻辑模块,一个个分析其so,寻找是否内嵌lua引擎(一般情况下,最大的so最有可能内嵌lua