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

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

2020-4-12 17:11
77928
收藏
免费 84
支持
分享
打赏 + 10.00雪花
打赏次数 1 雪花 + 10.00
 
赞赏  mb_pjstvlyw   +10.00 2021/09/29 星巴克app里有个二维码 抓出协议对接网站 在网站上显示星巴克app里的二维码 (二维码的功能是付款和使用优惠券) 预算5000 能做联系我qq205697368
最新回复 (120)
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
26
我下载了楼主分享的APP注册后,发现点击积分没有跳出东西出来,有人遇到这个过情况么?
2020-4-15 10:01
0
雪    币: 4883
活跃值: (18890)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
27
endlif 很详细,学习到了。如果APP要防止内购破解,可以做什么操作呢?
自己的一些看法更新到帖子里面了,上面那条回错人了
2020-4-15 12:13
0
雪    币: 112
活跃值: (1227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
歪楼:
看个片儿可真耗精力啊,按照这个楼主提这些软件,我已经装到后半夜了
2020-4-15 14:51
0
雪    币: 768
活跃值: (690)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
也是出现这个是真机,红米6,你们用什么环境搞的 并且 OpenMemory的地址也变呢,不过还是找到呢
上传的附件:
2020-4-15 17:41
0
雪    币: 2373
活跃值: (1046)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
30
皮皮的皮子 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 */
        }
    }
});

2020-4-15 20:56
3
雪    币: 4883
活跃值: (18890)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
31
rushmaster 因为帖子里贴的js脚本有问题。我也是碰到你这个问题。折腾了一下午才发现问题所在,arg[1]不是dex的内存地址,是dex的大小。。'use&nbsp;strict'; var& ...
你说的那里是frida-unpack项目里OpenMemory.js的代码,我使用时候并没有报错就没有动,没有注意到你说的情况,Interceptor.attach上面的几行代码是我改的。不太清楚Error: access violation accessing xxxxx 这种问题的出现,如果你这样能解决然后脱壳最好,给其他人一个参考..
2020-4-15 22:03
0
雪    币: 260
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
学习一下
2020-4-15 22:26
0
雪    币: 4883
活跃值: (18890)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
33
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指纹编辑 ,原因:
2020-4-15 22:40
0
雪    币: 768
活跃值: (690)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
感谢@ 

rushmaster ok了


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


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