随笔分类 -  爬虫之App逆向

摘要:简介:当我们使用unidbg调用so文件时,如果so中的c语言调用了java代码,则我们需要补充完整 1.如,在某vip app中,我们在逆向时,找到了gsNav方法,它是在so文件实现的。我们正常按照unidbg操作 package com.nb.demo; import com.github.u 阅读全文
posted @ 2025-05-16 21:12 Tony_xiao 阅读(70) 评论(0) 推荐(0)
摘要:前言:当我们在寻找逆向入口时,碰到native方法,就说明加密在C语言中实现,一般来说,native方法附近会有loadlibrary告诉你,加密函数在哪个so文件中实现,但是也有比较特殊的,如下: 1.碰到这种情况,我们该如何处理勒?分为两种情况,一种是静态注册,一种是动态注册 1.1,如果是静态 阅读全文
posted @ 2025-04-18 19:33 Tony_xiao 阅读(31) 评论(0) 推荐(0)
摘要:1.需求 当我们逆向某APP时,找打加密在so文件中,如图所示 2.目录结构 3.基本流程 3.1:创建类 3.2:根据unidbg规则设备+so初始化 package com.nb.demo; import com.github.unidbg.AndroidEmulator; import com 阅读全文
posted @ 2025-04-08 20:56 Tony_xiao 阅读(51) 评论(0) 推荐(0)
摘要:1.简介 unidbg是一个Java项目,可以帮助我们去模拟一个安卓或IOS设备,用于去执行so文件中的算法,从而不需要再去逆向他内部的算法。 so文件加密的解决方法: 硬核分析+调试+破解 frida-rpc unidbg 2.下载 在github上开源的项目:https://github.com 阅读全文
posted @ 2025-04-07 22:23 Tony_xiao 阅读(265) 评论(0) 推荐(0)
摘要:当我们在逆向时,有的登录界面,需要滑块或者点选之类的图片验证 这篇我们主要了解使用opencv识别滑块 1.获取滑块图片并且保存在本地 import base64 import requests res = requests.post( url='https://m.captcha.qq.com/' 阅读全文
posted @ 2025-03-10 22:08 Tony_xiao 阅读(44) 评论(0) 推荐(0)
摘要:现象 使用attach方式hook,frida -UF -l hook.js 原因 unable to access process with pid 17124 due to system restrictions; try `sudo sysctl kernel.yama.ptrace_scop 阅读全文
posted @ 2025-03-04 21:30 Tony_xiao 阅读(47) 评论(0) 推荐(0)
摘要:脱壳本质 未加壳的app:安卓开发 -> Java+安卓 -> APK -> dex文件 -> 运行 加壳的app:安卓开发 -> Java+安卓 -> APK -> 360/腾讯等(SO算法) -> 内存 -> 运行 脱壳本质:在内存中获取,让APP运行在手机中,内存中加载文件内容写回到dex文件 阅读全文
posted @ 2025-02-24 22:26 Tony_xiao 阅读(385) 评论(0) 推荐(0)
摘要:前言:有些app运行时会监测frida的相关特征,监测到之后就会直接闪退 示例: 解决方法:可以尝试使用strongR-frida-android来绕过监测 1.下载frida-server(加强版) 下载地址:https://github.com/hzzheyang/strongR-frida-a 阅读全文
posted @ 2025-02-24 22:15 Tony_xiao 阅读(141) 评论(0) 推荐(0)
摘要:前言:我们在逆向过程中,如果加密的核心算法在so文件中,如果我们不想硬核破解,除了之前介绍过的rpc调用外,还可以创建安卓应用去调用so文件获取结果 1.创建空项目 2.拷贝so文件到指定目录 3.修改build.gradle sourceSets { main { jniLibs.srcDirs 阅读全文
posted @ 2025-02-19 21:34 Tony_xiao 阅读(54) 评论(0) 推荐(0)
摘要:前言:有些App在root过的手机上运行不了,会弹出安全提示,我们在逆向时必须跳过才能进行下一步操作,root监测主要有两种方式, 1.JAVA层(hook跳过) 2.so层(需要定制安卓系统,AOSP) 1.下面我们来看一个root监测在JAVA层的,现象 2.反编译后,查找关键字 3.hook跳 阅读全文
posted @ 2025-02-15 17:37 Tony_xiao 阅读(53) 评论(0) 推荐(0)
摘要:1.在执行frida-rpc时,会涉及到相关参数类型的处理和转换 1.1:Python程序调用时,传入参数 1.2:Frida的JavaScript脚本如何获取参数 1.3:JavaScript的参数如何转换到 Java中所需的类型 2.python传参 2.1:字符串/整型/浮点型等直接传递 im 阅读全文
posted @ 2025-02-15 17:00 Tony_xiao 阅读(19) 评论(0) 推荐(0)
摘要:前言:逆向算法 Java层,Python去还原。 so层 硬核分析 frida-rpc,代码注入到手机,主动调用脚本 -> 主动调用so中的方法(APP运行+frida运行)【手机】 安卓程序调用so,调用并获取结果【手机】 unidbg调用so,代码创建设备,再用设备调用so文件 -> jar - 阅读全文
posted @ 2025-02-14 17:14 Tony_xiao 阅读(28) 评论(0) 推荐(0)
摘要:1.python处理Treemap排序问题 data_dict = { "_appid": "atc.android", "appversion": "3.4.0", "channelid": "csy", "pwd": 'dasdasdas', "udid": "sadasd", "usernam 阅读全文
posted @ 2024-12-24 20:03 Tony_xiao 阅读(27) 评论(0) 推荐(0)
摘要:1.前置:在抓包某货app时,基于关键字搜索,我们发现抓不到返回商品信息的接口,这是怎么回事呢?这是因为在安卓开发时,OkHttp发送请求,设置 Proxy.NO_PROXY,基于系统代理都是抓不到包。 OkHttpClient client = new OkHttpClient(); FormBo 阅读全文
posted @ 2024-02-28 22:41 Tony_xiao 阅读(850) 评论(0) 推荐(0)
摘要:前言:当我们需要逆向某款app的特定版本,并且不是最新版本时,而app又有强制更新机制,该怎么办呢? 1.如下图所示 2.解决这种更新一般有两个版本 2.1:关闭手机网络,打开app后,再次开启网络(low,并且在使用过程中可能再次出现更新弹框) 2.2:通过hook机制,跳过弹框触发的请求 3.以 阅读全文
posted @ 2024-02-28 21:50 Tony_xiao 阅读(2205) 评论(0) 推荐(0)
摘要:1.当我们对莫个app进行frida hook的时候,如果已启动hook脚本,app就自动退出了。这个时候可能就是app对frida进行了反调试。 2.如何解决这种问题呢? 反调试一般在so中实现,如果有frida使用,就给关闭 app启动过程中,都有加载so文件 下面的问题是如何找到反调试的so文 阅读全文
posted @ 2024-02-27 23:27 Tony_xiao 阅读(1661) 评论(0) 推荐(0)
摘要:逆向过程中,当手机上安装对应的apk后,我们需要反编译该apk。但是pc端下载的apk版本又与手机上不一致。这个时候就需要将手机上的apk文件导出到pc进行反编译分析了。 1.通过frida获取包名 2.根据包名找到apk文件的存放路径,通过命令adb shell pm path 应用包名来获取其a 阅读全文
posted @ 2024-02-21 22:53 Tony_xiao 阅读(971) 评论(0) 推荐(0)
摘要:简介:上一篇我们讲到了java调用C,今天继续聊C调用java 1.C调用java的静态方法 1.1:入口,java调用C的代码 package com.nb.s4; class EncryptUtils { static { System.loadLibrary("enc"); } public 阅读全文
posted @ 2024-02-05 22:06 Tony_xiao 阅读(52) 评论(0) 推荐(0)
摘要:简介:在一些不一般的APP中,核心算法不是直接写在java代码中,如果直接写在java中,逆向人员只需要简单的反编译就能找到;如是就出现了JNI:java native interface ,Java本地开发接口,实现JAVA和C语言之间的相互调用。将核心算法写在C语言中。 1.正向开发流程 1.1 阅读全文
posted @ 2024-02-05 21:29 Tony_xiao 阅读(105) 评论(0) 推荐(0)
摘要:1.字符串相关 C语言中没有字符串,用 字符数组 创造出字符串出来。 # include <stdio.h> # include <string.h> int main(int argc, char const *argv[]) { // 字符类型,用1个字节来存储。 char v1 = 'w'; 阅读全文
posted @ 2024-02-04 21:51 Tony_xiao 阅读(70) 评论(0) 推荐(0)