首页
社区
课程
招聘
[原创]记一次frida实战——对某视频APP的脱壳、hook破解、模拟抓包、协议分析一条龙服务
2020-4-12 17:11 74649

[原创]记一次frida实战——对某视频APP的脱壳、hook破解、模拟抓包、协议分析一条龙服务

2020-4-12 17:11
74649
收藏
点赞83
打赏
分享
打赏 + 10.00雪花
打赏次数 1 雪花 + 10.00
 
赞赏  mb_pjstvlyw   +10.00 2021/09/29 星巴克app里有个二维码 抓出协议对接网站 在网站上显示星巴克app里的二维码 (二维码的功能是付款和使用优惠券) 预算5000 能做联系我qq205697368
最新回复 (119)
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
miniboom 2020-4-15 10:01
26
0
我下载了楼主分享的APP注册后,发现点击积分没有跳出东西出来,有人遇到这个过情况么?
雪    币: 3509
活跃值: (17974)
能力值: ( LV12,RANK:277 )
在线值:
发帖
回帖
粉丝
0x指纹 5 2020-4-15 12:13
27
0
endlif 很详细,学习到了。如果APP要防止内购破解,可以做什么操作呢?
自己的一些看法更新到帖子里面了,上面那条回错人了
雪    币: 77
活跃值: (1052)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
neocanable 2020-4-15 14:51
28
0
歪楼:
看个片儿可真耗精力啊,按照这个楼主提这些软件,我已经装到后半夜了
雪    币: 766
活跃值: (650)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rookie江 2020-4-15 17:41
29
0
也是出现这个是真机,红米6,你们用什么环境搞的 并且 OpenMemory的地址也变呢,不过还是找到呢
上传的附件:
雪    币: 2208
活跃值: (906)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
rushmaster 1 2020-4-15 20:56
30
3
皮皮的皮子 dex 导出目录为: /data/data/com.cz.babySister [*] error: [*] description: Error: access violation a ...
因为帖子里贴的js脚本有问题。我也是碰到你这个问题。折腾了一下午才发现问题所在,arg[1]不是dex的内存地址,是dex的大小。。
'use strict';

var exports = Module.enumerateExportsSync("libart.so");
for (var i = 0; i < exports.length; i++) {
    if (exports[i].name == "_ZN3art16ArtDexFileLoader10OpenCommonEPKhmS2_mRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPKNS_10OatDexFileEbbPS9_NS3_10unique_ptrINS_16DexFileContainerENS3_14default_deleteISH_EEEEPNS_13DexFileLoader12VerifyResultE") {
        var openMemory = new NativePointer(exports[i].address);
    }
}
console.log('openMemory 函数地址:' + openMemory)
Interceptor.attach(openMemory, {
    onEnter: function (args) {
      
        //dex起始位置   搞了下午才发现 args[0]才是dex的内存首地址 args[1]是大小 所以肯定会提示Error: access violation accessing 
        var begin = args[0] 
        console.log('args[0]:' + args[0] + '   args[1]' + args[1])

        //打印magic
        console.log("magic : " + Memory.readUtf8String(begin))

        //dex fileSize 地址
        var address = parseInt(begin,16) + 0x20
        console.log('address: ' + address)

        //dex 大小
        var dex_size = Memory.readInt(ptr(address))
        console.log("dex_size :" + dex_size)

        //dump dex 到/data/data/pkg/目录下  实测真机安卓9.0必须是这个目录 因为app只对他自己的这个目录有写入权限
        var file = new File("/data/data/com.cz.babySister/" + dex_size + ".dex", "ab+")
        file.write(Memory.readByteArray(begin, dex_size))
        file.flush()
        file.close()
    },
    onLeave: function (retval) {
        if (retval.toInt32() > 0) {
            /* do something */
        }
    }
});

雪    币: 3509
活跃值: (17974)
能力值: ( LV12,RANK:277 )
在线值:
发帖
回帖
粉丝
0x指纹 5 2020-4-15 22:03
31
0
rushmaster 因为帖子里贴的js脚本有问题。我也是碰到你这个问题。折腾了一下午才发现问题所在,arg[1]不是dex的内存地址,是dex的大小。。'use&nbsp;strict'; var& ...
你说的那里是frida-unpack项目里OpenMemory.js的代码,我使用时候并没有报错就没有动,没有注意到你说的情况,Interceptor.attach上面的几行代码是我改的。不太清楚Error: access violation accessing xxxxx 这种问题的出现,如果你这样能解决然后脱壳最好,给其他人一个参考..
雪    币: 260
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
王敬语w 2020-4-15 22:26
32
0
学习一下
雪    币: 3509
活跃值: (17974)
能力值: ( LV12,RANK:277 )
在线值:
发帖
回帖
粉丝
0x指纹 5 2020-4-15 22:40
33
0
rushmaster 因为帖子里贴的js脚本有问题。我也是碰到你这个问题。折腾了一下午才发现问题所在,arg[1]不是dex的内存地址,是dex的大小。。'use&nbsp;strict'; var& ...
目前我在这里找到一个比较合理的解释https://www.cnblogs.com/csnd/p/11800590.html,里面说到“......由于随着Android系统版本的升级,Art模式下libart.so库中OpenMemory函数的传入参数会有所不同......相应的修改frida-unpack中的frida脱壳脚本文件frida_unpack.py和OpenMemory.js中OpenMemory函数的导出系统符号......”,有空我看下源码仔细分析下,感谢你给其他相同报错的用户提供了一个解决方法
最后于 2020-4-15 22:40 被0x指纹编辑 ,原因:
雪    币: 766
活跃值: (650)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rookie江 2020-4-16 11:22
34
0
感谢@ 

rushmaster ok了


雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
miniboom 2020-4-16 13:04
36
0
我脱壳成功了,但是进行hook的时候出错。


代码是这样写的,也能找到这个类,是我哪里错了么?跪求楼主大大解答5555
雪    币: 1025
活跃值: (196)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
lynxtang 2020-4-16 13:53
37
0
必须要赞!顺便一步一步跟着帖子分析下这个APP
雪    币: 3509
活跃值: (17974)
能力值: ( LV12,RANK:277 )
在线值:
发帖
回帖
粉丝
0x指纹 5 2020-4-16 14:12
38
0
miniboom 我脱壳成功了,但是进行hook的时候出错。代码是这样写的,也能找到这个类,是我哪里错了么?跪求楼主大大解答5555
 frida 使用姿势问题吧,注入时候 APP 打开运行了吗,可以先找些 frida 使用的帖子练习下使用
雪    币: 229
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
flyocean 2020-4-16 16:05
39
0
学习了.拿样本走一次试试.
雪    币: 1934
活跃值: (427)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_sncvkvia 2020-4-16 20:44
40
0
楼主用心了
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_fuxyaplq 2020-4-17 01:23
41
0
学些了 谢谢楼主
雪    币: 17
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
循环不计次 2020-4-17 05:06
42
0
alphc 那个脱壳脚本,安卓版本不一样,对应的OpenMemory函数名会不同,你仔细看他俩有一点点细微的差别[em_78],按照自己的版本改一下就ok,还有版主大大快来加精啊[em_87]
昨天刚看了安卓9的,我找到别的脱壳点就可以了
雪    币: 35
活跃值: (365)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
leovim 2020-4-17 06:36
43
0
样本可以正常使用吗,怎么注册失败
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
git_14812everydaysayhello 2020-4-17 10:53
44
0
楼主,hook getjifen()函数的时候,com.cz.babySister.javabean.UserInfo类直接hook不到吧,需要动态加载?
雪    币: 3509
活跃值: (17974)
能力值: ( LV12,RANK:277 )
在线值:
发帖
回帖
粉丝
0x指纹 5 2020-4-17 11:07
45
0
git_14812everydaysayhello 楼主,hook getjifen()函数的时候,com.cz.babySister.javabean.UserInfo类直接hook不到吧,需要动态加载?
按理说打开 APP 运行登录后直接用 frida 进行 hook 是没问题的 ,如果不行的话可能要具体分析下啥情况了
雪    币: 0
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
皮皮的皮子 2020-4-20 01:45
47
0
rushmaster 因为帖子里贴的js脚本有问题。我也是碰到你这个问题。折腾了一下午才发现问题所在,arg[1]不是dex的内存地址,是dex的大小。。'use&nbsp;strict'; var& ...
啊原来是这样!谢谢~
雪    币: 79
活跃值: (373)
能力值: ( LV11,RANK:195 )
在线值:
发帖
回帖
粉丝
破解pj 1 2020-4-20 09:39
48
0
8.1 libart.so 没有这个导出函数怎么整openMemory
雪    币: 3509
活跃值: (17974)
能力值: ( LV12,RANK:277 )
在线值:
发帖
回帖
粉丝
0x指纹 5 2020-4-20 10:11
49
0
破解pj 8.1 libart.so 没有这个导出函数怎么整openMemory
8.1的话可以从OpenCommon入手,这篇帖子可以看下https://bbs.pediy.com/thread-257917.htm
雪    币: 148
活跃值: (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
苏打水 2020-4-24 15:57
50
0
膜拜
最后于 2020-4-24 15:57 被苏打水编辑 ,原因:
游客
登录 | 注册 方可回帖
返回