某视频APP的脱壳、hook逆向
前言
这看似是一个比较正常的视频软件,
也都可以看得到,但是出现了不太和谐的东西,点开之后都是需要花钱才能观看的内容。
脱壳
查壳,是某数字的,就不单独说了。
这里使用frida-unpack进行脱壳。
用法在READM.md中说的很清楚了,这里不做过多叙述了。
这里有两个注意点:
- 一、看OpenMemory函数点
看代码。
'use strict';
/*** 此脚本在以下环境测试通过* android os: 7.1.2 32bit (64位可能要改OpenMemory的签名)* legu: libshella-2.8.so* 360:libjiagu.so*/
Interceptor.attach(Module.findExportByName("libart.so", "_ZN3art7DexFile10OpenMemoryEPKhjRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPNS_6MemMapEPKNS_10OatDexFileEPS9_"), {onEnter: function (args) {//dex起始位置var begin = args[1]//打印magicconsole.log("magic : " + Memory.readUtf8String(begin))//dex fileSize 地址var address = parseInt(begin,16) + 0x20//dex 大小var dex_size = Memory.readInt(ptr(address))console.log("dex_size :" + dex_size)//dump dex 到/data/data/pkg/目录下var file = new File("/data/data/dupdex/" + dex_size + ".dex", "wb")file.write(Memory.readByteArray(begin, dex_size))file.flush()file.close()},onLeave: function (retval) {if (retval.toInt32() > 0) {/* do something */}}
});
在/system/lib/libart.so
中存在OpenMemory
函数,注意上面脚本中的_ZN3art7DexFile10OpenMemoryEPKhjRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPNS_6MemMapEPKNS_10OatDexFileEPS9_
这段字符串,不一定是你模拟器或者Android手机对应的OpenMemory函数对应的地方,所以如果脚本提示找不到对应的OpenMemory函数位置,最好按照流程来,把自己的函数位置替换掉脚本里的。
adb pull /system/lib/libart.so
nm libart.so| grep OpenMemory
- 要注意版本问题。我们看脚本,在Android7.x之后,脱壳点就不再是OpenMemory了,8.x的基本都是OpenCommon,可以用同样的方法找到OpenCommon函数位然后把OpenMemory替换掉即可。
还有要修改这段22行的代码:
这是脱壳后dex存放文件的地方,你可以自己命名,并给予目录读写权限,例如我的就是/data/data/dupdex/
执行脱壳流程。可以看到我们的目录多了dex文件。
hook成土豪
逻辑主要在5619552.dex中,这里我们破解积分的问题。
一般可以查看有没有UserInfo的内容,这里找到后发现,有
那我们就可以hook这个方法了,主要思路是当APP调用getJifen方法时直接返回我们想要的数字就可以了。
var userinfo = Java.use("com.cz.babySister.javabean.UserInfo");
userinfo.getJifen.implementation = function(){ return "100000";
}
我也是这样执行了,但是发现总是报错。
后来发现hook加固的函数时不能这么直接hook。
分为三步:
- 第一步是拿到加载应用本身dex的classloader;
- 第二步是通过这个classloader去找到被加固的类;
- 第三步是通过这个类去hook需要hook的方法
具体原理见这里。不在多说了。
这里直接贴上脚本。
'use strict'
//frida -U -f com.cz.babySister -l jifen.js --no-pause
if(Java.available){Java.perform(function(){var application = Java.use("android.app.Application");var reflectClass = Java.use("java.lang.Class");console.log("application: " + application);application.attach.overload('android.content.Context').implementation = function(context){var result = this.attach(context); // 先执行原来的attach方法var classloader = context.getClassLoader(); // 获取classloaderJava.classFactory.loader = classloader;var userinfo = Java.classFactory.use("com.cz.babySister.javabean.UserInfo"); //这里能直接使用Java.use,因为java.use会检查在不在perform里面,不在就会失败console.log("UserInfo: " + userinfo);userinfo.getJifen.implementation = function(){ return "100000";}return result;}});
}
frida -U -f com.cz.babySister -l jifen.js --no-pause
这里就能看到效果了。
这时你就是拥有100000积分的土豪了,想怎么看就怎么看。
但是我这里破解VIP就出现了点问题,后面再继续说吧~今天就到这。
某视频APP的脱壳、hook逆向相关推荐
- 某bobo在线视频APP下载暴力流逆向
最近朋友抱怨某软件的下载很慢,想在电脑上面直接下载观看. 众所周知此领域竞争激烈,所以安全意识普遍较高,分析起来较为困难,颇具挑战性. 目标以尽量以最快速度解决战斗,下面分享我的分析过程: 静态分析 ...
- 逆向某视频app(一)
本文为纯技术分享,文章内容不涉黄,适合对xposed有兴趣的读者 逆向某视频app(一) 逆向某视频app(二) 目录 前言 xposed破解 1.反编译apk 2.分析代码 前言 有一段时间没写博客 ...
- 逆向某视频app(二)
本文为纯技术分享,适合对xposed有兴趣的读者 逆向某视频app(一) 逆向某视频app(二) 目录 前言 步骤 工具 1.反编译apk 2.获取smali源码 3.修改smali文件 4.修复An ...
- 某音短视频APP 最新版(21.8)SSL PINNING 绕过
本文主要讲解在短视频APP上逆向抓包遇到的坑,通过本文方法可以顺利使用抓包工具抓到数据包,也可以通过文中介绍的获取proto文件的方法,使用编程语言解析数据包中的内容. 文末还会提供编译好的proto ...
- Android中静态方式破解某App实现所有视频app去除广告功能
转: Android中静态方式破解某App实现所有视频app去除广告功能 作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频 ...
- 华数软件测试岗位,重磅:字节跳动与华数共同研发的电视原创视频app已正式测试上线...
华数鲜时光tv版是西瓜视频的电视版本,由字节跳动与华数共同研发的电视原创视频app,上线的内容一应俱全,且内容覆盖年龄更广,汇集了生活窍门.美食做法.亲子时光.游戏解说.搞笑集锦.旅游看世界.影视看点 ...
- android电视视频app下载,央视频APP智能电视版下载-央视频电视版客户端 1.9.0.53139 安卓版-玩友游戏网...
Tags:影视娱乐 央视频电视版客户端是央视旗下权威直播工具,社会新闻.最新资讯.国际信息.前沿科技.民生工程.政策法规,你都可以在这里通过短视频查看,涵盖央视旗下多个电视台,支持多个品牌的智能电视, ...
- 进行短视频app开发工作时,可以加入它来保护青少年...
未成年人迷恋手机的现状一直令广大家长朋友们的忧心,王者.抖音.吃鸡.快手--精彩纷呈的世界在短视频app和无数手游软件中展现出来,凸显了现实世界的无聊,也占用了未成年人们的大幅精力,为了防止未成年人对 ...
- 短视频SDK架构设计,短视频APP开发目标首选
短视频 SDK 实践中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家 ...
最新文章
- 自主互助四环节之计算机教案,自主互助学习型课堂的实施方案
- 全面、经典视频教程(php、java、jsp、ajax、linux...)
- Spark任务提交后是如何完成提交过程的?源码解析!
- [原]windbg调试系列——崩溃在ComFriendlyWaitMtaThreadProc
- java 转换url中文参数
- php变量原格式输出,PHP格式化输出打印变量
- var s=+newDate();的用法,表示对应的时间截
- CURL POST PHP
- hibernate入门二之单表操作
- 实现元素拖拽放大缩小_G6 3.6:放大每一处细节
- 微信小程序之 ----组件
- c++ 关于指针以及(amp;)使用的一些小问题
- MonkeyTest——简单无脑的移动端自动化测试(初级篇)
- 《Metasploit魔鬼训练营》 第二、三章
- 知识对话2021《Augmenting Knowledge-grounded Conversations with Sequential Knowledge Transition》论文解读
- python -m spacy dowmload en失败
- Ubuntu18.04下的音频录制和编辑软件Ardour及QjackCtl(jackd gui)
- AutoJs学习-录制手指动作
- 绿米Aqara、飞利浦等设备,如何与智汀使用同一个APP实现跨品牌互联?
- 利用Numpy+PIL读取图像实现手绘效果