0%

pixel XL体验

先刷个机

整了个低于市场价的pixel XL,到手一看是个安卓8,还不如雷电模拟器安卓版本高,真是废,整个升级先(理论上来说如果是安卓10就不用刷机,直接恢复出厂设置不就行了)

点击7次版本号,进入开发者模式,在开发者选项中,打开USB调试

刷机包:https://developers.google.com/android/ota?hl=zh-cn#marlin

阅读全文 »

这个软件Amarok经常取证的大佬故意已经了如指掌了,一个可以伪装成极简日历的隐藏文件夹和软件的软件,密码绕过可能用处不大,因为他的equals比较简单,就是将你输入的东西计算MD5然后和设定好的密码的MD5进行比较,hook一下equals方法就差不多了,但是这个方法比较邪门,就写个博客记录一下。

image-20241216213615163image-20241216203438934image-20241216203629429

阅读全文 »

SO入门

先自己测一下这个案例

抓个包

1
2
3
4
5
6
7
8
9
10
11
POST /user/api/v1/login/app/mobile HTTP/1.1
pa: MTczMjAxNzY1MzAzMyxhMTZhM2ZmOWVmYzU0M2IxYjlkMTBiMGI3NjY3NTk4MiwzZjg3MjNlMWNiMzBhYzYwM2RiYjY1ZGQ4N2QxMTA3Miw=
appInfo: {"IMEI":"bf1821d5634d0ec8","appBuild":"21070602","appVersion":"6.2.0","deviceId":"bf1821d5634d0ec8","deviceName":"NX627J","osType":"android","osVersion":"9","phoneName":"NX627J","phoneSystemVersion":"9","vendor":"nubia"}
User-Agent: PocketFans201807/6.2.0_21070602 (NX627J:Android 9;nubia PQ3B.190801.03191204 release-keys)
Content-Type: application/json; charset=UTF-8
Content-Length: 43
Host: pocketapi.48.cn
Connection: Keep-Alive
Accept-Encoding: gzip

{"mobile":"13112345678","pwd":"a123123123"}
阅读全文 »

密码学

概要:

在逆向中,非常有必要了解一下密码学,在逆向过程中,有些参数不知道来源,可能是随机生成、标准算法、自写算法加密

在安卓中,标准算法加密通常会 出现在Java、so(C\C++)、JS中

对于标准算法,Java中有现成的API调用,如果要使用这些API就需要使用指定的方法,就有了hook的机会,这些前面已经操作过了

阅读全文 »

JSEncrypt添加NOPadding填充

JSEncrypt是一个加密库,支持RSA加密,但是只有PKCS1的填充模式

之前了解到NOPadding的填充是在明文前面填充字节0,如果我想实现的话就可以进行手动填充

打个断点进去

image-20241118201358518

阅读全文 »

frida.exe的详细使用

有一坨,好多都不怎么用,先整点经常用的

选项 介绍
-U, –usb 连接USB设备,这个时候是不需要端口转发的,直接连上
-R, –remote 连接远程设备
-H HOST, –host HOST 连接网络设备,连接指定IP地址和端口的frida-server
-f TARGET, –file TARGET 后面跟包名,启动软件,启动时开始hook
-F, –attach-frontmost 注入正在打开的最前端的进程
-n NAME, –attach-name NAME 也是加包名,但是 -n 可以省略
-p PID, –attach-pid PID 根据进程的PID注入; ps -A 打印进程; -p 也是可以省略的
-l SCRIPT, –load SCRIPT 脚本代码的路径
-o LOGFILE, –output LOGFILE 指定内容输出位置
–runtime {qjs,v8} 指定解析脚本的引擎

-p 一般是遇到软件双进程时使用,app有两个进程,包名还是一样的,就需要指定PID

阅读全文 »

API

现在介绍的只是Java层的API

注意frida代码需要写在 Java.perform(function() {}); 函数体中,下面省略不写了

静态方法和实例方法的hook

阅读全文 »

关键代码快速定位

1
2
3
4
5
搜索不太靠谱,需要更精准更通用的方式来定位关键代码
Java:hook系统函数、沙盒
C:hook系统函数

通过hook一些底层的方法来定位
阅读全文 »

app逆向示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1、抓包分析是否有需要逆向的加密字段
2、查壳分析是否加固
3、查看界面元素,看是否是原生开发的app,因为不同形式app分析方法不一样
4、传统关键代码定位方法
通过控件绑定的事件代码,来一步步定位
控件id、setOnClickListener
人肉搜索字符串
搜索链接
搜索加密的参数名:当有多个可以关键处,如何确定是哪一个?动态调试、Hook
搜索同一个数据包中,没有加密的参数名

5、关键代码快速定位
跑一下自吐算法
hook常用系统函数,如果app有调用就打印函数栈
在自制的沙盒中运行,打印app运行过程中的指令、函数调用关系等

6、逆向分析不是完全静态分析明白了才去hook,实际上是边分析边hook
阅读全文 »