首页
社区
课程
招聘
[原创]Frida 入门小练习
发表于: 2020-7-7 12:08 11189

[原创]Frida 入门小练习

2020-7-7 12:08
11189

本文的3道Crackme来自Android高研2W班6月测试题。

这三题本身难度不大,flag的求解都是通过爆破长度为5位的字符串(只包含数字),求其hash1+salt的摘要与程序中硬编码的密文进行比较,非常适合Frida入门。

这三道题分别考察了:

静态分析可知,输入的用户名和密码的字符串拼接作为参数,然后传入vvvv方法。

进入vvvv方法后,input参数限制长度为5,经过eeeee方法得到的结果和p一致,就可以获得flag。

简单逆向分析可以看出,主要算法在eeeee方法中。

sssss方法在获取字符串的Sha-1值。

ccccc方法将sha-1的摘要转化成了16进制字符串的形式。

因为input的内容都是数字,并且只有5位,所以爆破空间只有10的5次方,直接爆破就可以了。

重新创建工程,可以看出eeeee的逻辑:将输入的字符串 逐字符插入到SALT的byte数组当中。然后再进行sha-1运算,获得其16进制的摘要字符串。

直接进行暴力破解,脚本以及结果如下:

得到结果:

flag:66888

对com.kanxue.pediy1.VVVV类中的方法eeeee进行主动调用。

最终得到flag也是66888。

输入检查一下。

本题在第一题的基础上加入了dex的动态加载以及Native函数的引入。

因为loadDexClass在OnclickListener中调用,所以当点击事件发生之后,要加载的DexClassLoader才会被创建。可以首先Java.choose主动调用loadDexClass方法;然后Java.enumerateClassLoaders枚举所有的类加载器,找到存在“com.kanxue.pediy1.VVVVV”的类加载器,通过Java.classFactory.loader=loader,对类加载器进行替换。

替换掉loader之后,和题目1一样进行暴力破解,得到下面的结果。

但是输入结果并不对。所以,还需要去看一看so文件,分析一下stringFromJNI函数。

静态分析,猜测可能是将字符串转成数字,然后对数字加一。于是我把so文件拿出来,重新创建工程进行加载,如下图所示,验证结果与静态分析一致。

因此,输入结果应该是66999 -1 = 66998。

输入结果,获得flag,66998就是最终结果。check结果没有问题~

本题在第二题的基础上加入了native层对Frida的反调试。

反调试逻辑:
通过一直循环创建Socket连接,遍历端口,检查端口是否被占用,收到“REJECT”时,说明frida-server正在运行,直接杀掉进程。

根据r0ysue老师的要求,下面从三种方法过掉反调试

反编译重打包

onCreate方法中的init方法就是具有反调试功能的native层函数。

思路:查看对应的smali代码,然后将对调用init方法的smali语句进行删除,就可以了。

使用apktool解包,删除对应的smali代码,然后重打包,最后再重签名一下。

so硬编码

思路:修改跳转地址,使程序无法进入kill(v1, 9LL)的代码段。

修改完之后,效果如下图:

这样进程就不会被杀掉了。

frida hook

思路:除了在strcmp的跳转处hook,还可以hook recvfrom方法,修改返回值为-1,从而无法kill掉进程。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-7-7 12:11 被ychangeol编辑 ,原因:
上传的附件:
收藏
免费 4
支持
分享
最新回复 (7)
雪    币: 4883
活跃值: (18890)
能力值: ( LV13,RANK:317 )
在线值:
发帖
回帖
粉丝
2
感谢分享~
2020-7-7 14:42
0
雪    币: 19950
活跃值: (4942)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢分享
2020-7-9 18:40
0
雪    币: 196
活跃值: (5906)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4

此题学员在hook和主动调用阶段处理的很好,我们都知道Frida逆向分三个阶段:1. 先hook、看参数和返回值 2. 再构造参数、主动调用  3. 最后配rpc导出结果,每一步搞完了没有任何疑问了,再进入下一步。尤其是第三题,采用了反编译重打包修改Smali、反汇编so修改arm、以及frida hook native修改libc中的recvfrom函数的返回值这样三种方法,思路很好。

最后于 2020-7-29 10:24 被看雪高研编辑 ,原因:
2020-7-29 10:24
0
雪    币: 360
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
谢谢分享
2020-8-12 20:47
0
雪    币: 1137
活跃值: (620)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢分享
2020-8-13 16:41
0
雪    币: 1137
活跃值: (620)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
frida 爆破过程中 ,我的mi9se 出现了这个问题
ABI: 'arm64'
Timestamp: 2020-08-13 17:54:28+0800
pid: 23365, tid: 23365, name: re-initialized>  >>> <pre-initialized> <<<
uid: 12246
signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
Abort message: 'JNI ERROR (app bug): global reference table overflow (max=51200)global reference table dump:
  Last 10 entries (of 51200):
    51199: 0x1303dc20 byte[] (40 elements)
    51198: 0x1303d768 java.lang.String "32b1a9a1d89f6c18... (40 chars)
    51197: 0x1303d6d0 byte[] (40 elements)
    51196: 0x1303d218 java.lang.String "3c75dd1868d09e95... (40 chars)
    51195: 0x1303d180 byte[] (40 elements)
    51194: 0x1303ccc8 java.lang.String "a9686f21abbbf3bd... (40 chars)
    51193: 0x1303cc30 byte[] (40 elements)
    51192: 0x1303c778 java.lang.String "7a98eb5528735975... (40 chars)
    51191: 0x1303c6e0 byte[] (40 elements)
    51190: 0x1303c228 java.lang.String "a454dd2854d47f75... (40 chars)
  Summary:
    25234 of java.lang.String (25234 unique instances)
    25232 of byte[] (40 elements) (25232 unique instances)
      359 of java.lang.Class (262 unique instances)
      355 of java.nio.DirectByteBuffer (355 unique instances)
        4 of dalvik.system.PathClassLoader (3 unique instances)
        3 of android.opengl.EGLDisplay (2 unique instances)
        3 of android.opengl.EGLSurface (2 unique instances)
        3 of android.opengl.EGLContext (2 unique instances)
        2 of java.lang.ThreadGroup (2 unique instances)
        1 of java.io.File
        1 of dalvik.system.VMRuntime
        1 of android.app.ActivityThread$ApplicationThread
        1 of android.os.PersistableBundle$1
        1 of android.app.LoadedApk
2020-8-13 17:57
0
雪    币: 482
活跃值: (1007)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
刚看完小白的,感觉你写的更详细些,哈哈
2020-8-19 17:07
0
游客
登录 | 注册 方可回帖
返回
//