cocos2d-LUA逆向之解密app资源
还是以大神apk为例,通过前面 分析app解密lua脚本,我们能够解密大神apk的lua脚本,现在我们来解密其资源(配置文件和图片等)。我们以比较重要的配置文件为例,未解密之前:
文件头部也有签名值:fuckyou!。看到这,我们首先就想到是不是也是用xxtea加密的,我们用上面的方法,先xxtea解密,再解压,发现依旧是乱码,在操作的过程中就出现了错误,显然,要否定我们刚才的猜想。我们继续按部就班的解密配置文件。
稍微思考一下,文件头部是:fuckyou!如果想对文件进行解密,那么不可避免的需要处理字符串:fuckyou!,所以,我们应该能在idaPro中搜到fuckyou字符串,然后以fuckyou字符串所在代码段处的函数分析调试解密即可。验证一下我们的猜想,打开idaPro,打开string视图,搜索fuckyou:
居然啥也没有!猜测应该是做过优化,在某个地方把字符串优化掉了。
线索断了,但是好奇心还是让我们继续,这时候,我们可以浏览cocos2d框架源码,结合网上一些资料,发现cocos2d对文件的处理封装到了CCFileUtils类中:
函数有些多,不一一贴了,从网上也找到了前辈的经验:
好了,我们现在回到idaPro,在export窗口,搜索getData:
进这两个函数,反编译看下,长得不大像,略过,但是先记下,在动态调式时,我们可以在此下个断。
我们再来看getFileData:
由于app运行在Android平台上,我们看Android平台的CCFileUtilsAndroid::getFileData:
我们接着跟踪:
代码很长,就不全贴了,贴此函数关键的部分:
看到上图,感觉就是它了,呵呵!但是我们还是需要继续分析验证。函数处理文件头部sign时,并不是直接与字符比较而是与其ASCII值一个一个比较,所以我们在字符串窗口是搜不到fuckyou!的。接着往下看,当函数判断完是符合加密格式的文本时,会移除前8个字节(fuckyou!),然后与异或表中的值进行异或操作,每256个字节循环操作。
我们可以看下byte_A1C55F:
至此,我们已基本可以确定文件解密函数及过程了,我们可以动态调试,再确认一下,当app调用完这个函数后,内存中应该是明文内容了。当我们调试时,分别在getData、CCFileUtilsAndroid:doGetFileData函数开始和结束时下断,GetData函数下断:
doGetFileData函数下断:
虽然两个函数都下断了,但是只在doGetFileData断点出暂停,说明解密过程中是走的doGetFileData函数,符合我们的预期,看下寄存器及内存:
我们看到内容在doGetFileData之前是密文,函数返回之前已经解密成明文了,这说明我们之前的分析是对的。
好了,现在,我们可以将异或表byte_A1C55F拷贝出来,然后模仿app的解密过程(可从GitHub上找个xor解码脚本,稍作修改即可)写一个小工具,对大神.apk的所有资源进行解密了:
原文链接:http://www.freebuf.com/column/173234.html
cocos2d-LUA逆向之解密app资源相关推荐
- python123 app下载_Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- python爬取app、返回的是加密数据_Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- 【爬虫逆向案例】某道翻译js逆向—— sign解密
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! [爬虫逆向案例]某道翻译js逆向-- sign解密 1.前言 2.步骤 3.源码 4.号外 1.前言 相信各位小伙 ...
- android+eclipse工程,#Cocos2d+lua#android+Eclipse工程编译设置
用Elicpse编译cocos2d+lua的工程几点注意点记录: 1.设置工程属性Windows->Preferences->NDK目录 2.右键Android Tools->Add ...
- Teams App 资源中心种草指南
备受企业关注的 Teams App 资源中心 IT 管理员.企业管理者的必备效率软件 今日种草者免费安装 人工录音 + AI 配音,高效创建企业资源,管理员随时下载内容数据 资源中心作为一款提高企业生 ...
- Android app资源监控
我们在做app测试的过程中,都会对app内存,cpu这些做一个简单的测试,今天简单的写下如何通过python监控app这些资源变化 实现原理 1.通过adb命令查看app资源内存 2.通过python ...
- cocos2d lua 环境搭建
标题貌似起的有点不好... 编辑器用sublime text 2 调试用decoda 弄这个sublimetext 2的lua环境和绑定cocos2d-x花了几天时间,郁闷的很... 记录一下吧,也希 ...
- 逆向某视频app(一)
本文为纯技术分享,文章内容不涉黄,适合对xposed有兴趣的读者 逆向某视频app(一) 逆向某视频app(二) 目录 前言 xposed破解 1.反编译apk 2.分析代码 前言 有一段时间没写博客 ...
最新文章
- php找不到phpmyadmin,nginx下找不到phpmyadmin文件
- Web性能压力测试工具——Siege详解
- 开发日记-20190429 关键词 患病 NDK
- 浏览器访问solr报错:HTTP Status 500 - {msg=SolrCore 'collection1' is not available due to init failure
- [POJ 3155] Hard Life
- spark ui的访问地址_Spark篇之HA集群搭建
- 那些年,登山徒步记录,立贴
- eclipse启动tomcat 404
- 信息学奥赛一本通 1147:最高分数的学生姓名 | OpenJudge NOI 1.9 02:输出最高分数的学生姓名
- mysql索引下推原理_MySQL:好好的索引,为什么要下推?
- Subversion under Linux [Reprint]
- java 将bean转化为map,将javabean转化为map对象
- acrobat xi pro 简体中文语言支持包_在朋友圈收表情包收到手软?预感下一个好玩的功能会是它...
- 字符串转数组和数组转字符串
- python多次判断_python - 怎么判断函数或方法多次使用是否需要定义临时变量?
- Import REC修复的时候找不到被调试程序进程
- 探索性因子分析和验证性因子分析有什么区别?
- PDF怎么转换成Word?来看这两个方法
- CPAN下载安装pm包方法
- 阿里云虚拟主机项目根目录指向public目录下
热门文章
- Autodesk CAD帮助文档总结三 DXF 组码
- Android Studio 开发app 实现支付宝授权登录,获取支付宝账号头像昵称等信息
- slickedit Code page not installed
- VC++操作Excel 2007
- Activiti6自学之路(六)——Activiti中用户与用户组
- 前端HTML+CSS面试题汇总一
- 计算机CQ,什么是Cq(Ct)值?
- R-概率统计与模拟(三)变换均匀分布对特定分布进行抽样
- 成都百词斩2018web前端秋招笔试题
- 一文尽览 | 基于点云、多模态的3D目标检测算法综述!(Point/Voxel/Point-Voxel)