Post List

# 抖音 app # 抓包 ​ 抖音 app 采取了 quic 的协议,常规的方法无法抓到包,本质上是使用了开源的 boringssl,走了一个叫 quic 的协议,直接 hook 掉 so 里面的内容,即可。 # 接口分析 ​ 这里抓取的是搜索接口 url = "https://search100-search-quic-lf.amemv.com/aweme/v1/general/search/stream/"params = { "iid": "1368207845240094", // 设备相关?...

# 部署 docker run --restart=always --name sekiro-server -p 5600:5600 -p 5601:5601 -p 5602:5602 -p 5603:5603 -d registry.cn-beijing.aliyuncs.com/virjar/sekiro-server:latest linux 服务器 已经部署过 docker # 调用 ​ 在 gradle 中加入如下命令 implementation 'com.virjar.sekiro.business:sekiro-business-api:1.4' 补充:...

参数定位​ 对于一个app来讲,我们往往要获得的是其加密参数,一般来讲,都是通过对网络请求抓包,然后分析参数逻辑,确定加密位置,但是,这样有一个弊端,假使存在了针对抓包的对抗(sslping等),就会增加定位参数的逻辑成本,基于此,本文提供了另一种思路用于定位参数逻辑。 Intent​ 一般来讲,页面跳转都存在序列化->反序列化的逻辑。 btnTwo.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent...

# 补环境 # 运行流程 对于 unidbg 来讲,整体的运行流程如下: 构造方法: 构建模拟器实例 创建虚拟机 加载 so 调用 jni_onload (针对构造方法) mian: 初始化类实例 调用方法,计算参数 这样一来,主要的逻辑就在所编写的对应方法中,这样一来,我们只需要针对不同的 native 方法编写对应的逻辑,调用即可。但随之而来了一些问题,比如,依赖了其他的 so 文件,对于使用了 java 层的方法,在 unidbg 中没有实现,在 native 类中调用了其他的静态方法等等。 对于这些问题,我们就需要手动的补出对应的环境,解决对应的问题。 # 类型介绍 #...

以下内容均为个人理解 # 编译原理 ​ 以我们现在常使用的编程语言来讲 (python,java 等) 都隶属于高级语言,要让计算机理解,必须要转化为二进制,毕竟,计算机的本质其实是集成电路,对于电路来讲,通路只有开和关两种区别。 ​ 一般来讲,程序往往会先被翻译为汇编语言,然后在转化为二进制数据,汇编语言的产生,主要是为了解决二进制数据艰涩难懂的问题,以及编程的困难性。同时,汇编语言作为一个桥梁,所有的高级语言都是基于此演变而来的,所以,各种语言在本质上都是一样的。 # 编译过程 ​ 这个过程其实就是,先对代码遍历,然后句法分析,词法分析,语义分析转化为一个语法树...

# 微博国际版 app 逆向 登录参数 # 抓包 直接用 charles 抓包,可以看到,登录接口主要是 i,s,p 这三个参数携带了加密信息, # 静态分析 直接用 jadx 打开,直接在 loginmainactivity 中找,最终可以定位到 WeiboSecurityUtils ,这里的 caculateS 就是计算 S 参数的 native 方法。 接下来直接用 ida 打开 搜 java 找得到,明显是静态注册 大致看一下,除了 sub_1C60 这个函数通过 Content 校验了签名外,貌似也没哈特别的逻辑了 #...

# 美图秀秀 直接用 charles 抓包,加密参数就应该是这个 sig 直接搜 sig 返回太多参数,不利于分析,搜 sigVersion 看到这里有 generator 的字段,猜测跟生成有关,进一步点进去看,发现最后调用了个 native 方法 hook 一下,看里面都是些什么东西 /* hook java frida -U -l hook.js com.mt.mtxx.mtxx*/function hookso () { Java.perform(function(){ console.log('hook start'); var...

# 第二题 简单 so 还是直接搜索找到如下位置 编写 frida 脚本,hook 一下这个 encodeToString 是啥 Java.perform(function(){ console.log("so start:") var ByteString = Java.use("com.android.okhttp.okio.ByteString"); var NativeLib = Java.use('com.yuanrenxue.challenge.two.NativeLib'); var Base64 =...

# 第一题 java 层加密 packagename: com.yuanrenxue.challenge 搜索题目一,定位到如下位置 使用 r0capture 抓包 # attach 模式python r0capture.py -U com.yuanrenxue.challenge -v -p iqiyi.pcap# spawn 模式python r0capture.py -U -f com.yuanrenxue.challenge -v抓完后用 wireshark 打开 pcap 文件,发现,这里就是发送数据的地方, source 为 192.168.0.100 发送的了请求,携带了...