jadx
1.下载jadx反编译工具,安装(解压即用)
# 下载地址:https://github.com/skylot/jadx/releases
2.打开jadx反编译工具:
3.抓包与代码定位
3.1 抓包
# 1.安装apk
# 2.打开chaarles,打开app,定位到登录请求
3.2.反编译定位代码的位置
# 抓包
# 想去反编译代码中的位置
# 搜素关键字
-优先考虑地址
- pwd不能直接搜,java中字符串是双引号引起来的
-(“pwd”)
hook 框架
1.hook介绍
2.下载与安装
注意:
-在电脑端(写hook函数----需要安装软件)----》需要有python的解释器环境(
需要安装两个模块
pip install frdia==16.0.19
pip install frida-tools==12.1.2
)
# 有可能安装会报错,需要下载whl,egg文件安装(用源码包安装)
# 需要根据:frdia+python版本+操作系统来选择对应的egg或whl文件
# htts://pypi.doubanio.com/simple/frdia/
# pip install xx.whl/egg
-在手机(执行某个App的某个函数----需要运行服务)(所以手机也需要安装16.0.9)
注意注意:在手机上的服务版本要和电脑端的版本一致,否则不行
手机端安装步骤
# 1.官网下载frida-server运行在手机上
# 2.下载后解压,把文件传入到手机上
命令: adb push xxxx /data/local/tmp/
# 3.给上传的文件加上执行权限
# 4.在手机端, 启动frdia-server(卡主就是已经启动了)
./frdia-server-16.0.9
hook启动
frida查看手机端所有的进程和前台进程
import frida
# 获取设备信息
rdev = frida.get_remote_device()
print(rdev)
# 枚举所有的进程
# processes = rdev.enumerate_processes()
# for process in processes:
# print(process)
# 获取在前台运行的APP
front_app = rdev.get_frontmost_application()
print(front_app)
###
2.hook脚本
import frida
import sys
# 1.连接手机设备
rdev = frida.get_remote_device()
# 2.hook手机中的哪个App,(app的包名字)
session = rdev.attach("车智赢+")
scr = """
Java.perform(function(){
//包,类 com.autohome.ahkit.utils.SecurityUtil
var UserModel = Java.use("com.che168.autotradercloud.user.model.UserModel");
var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");
//hook替换 encodeMD5
UserModel.loginByPassword.implementation = function(str,str2,str3,responseCallback){
console.log("-----------------------请求来了-----------------------");
console.log("用户名", str2);
console.log("密码", str3);
var res = this.loginByPassword(str,str2,str3,responseCallback);
return res;
};
SecurityUtil.encodeMD5.implementation = function(str){
console.log("=================请求来了....");
console.log("明文是:" ,str);
var res = this.encodeMD5(str);
console.log("密文是:",res);
return res;
}
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
sys.stdin.read()
3.python的hook方式
#spawn 方式:在目标和应用程序启动时直接注入 ,Frida的Agent 代码
#Attach方式: 在目标应用程序已经启动中动态注入
# spawn这种模式是在启动hook脚本的时候自动开启App
import frida
import sys
rdev = frida.get_remote_device()
pid = rdev.spawn(["com.hupu.shihuo"])
session = rdev.attach(pid)
scr = """
Java.perform(function(){
//包,类 com.azhon.appupdate.dialog.UpdateDialog
var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog")
//hook替换
UpdateDialog.show.implementation = function(){
console.log("++++++++show来啦++++++++++++++");
//this.show();
}
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
rdev.resume(pid)
sys.stdin.read()
js的hook方式
############################################################
Java.perform(function(){
//包,类 com.azhon.appupdate.dialog.UpdateDialog
var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog")
//hook替换
UpdateDialog.show.implementation = function(){
console.log("++++++++show来啦++++++++++++++");
//this.show();
}
});
##################################################################
执行js的hook代码
//运行命令
//attach,先启动app,然后再在终端运行
//
// >>> frida -UF -l xxxx.js
//
// spwan 脚本自动重启app并进行hook
//
// >>> frida -U -f com.che168.autotradercloud -l xxx.js
// 注意:输入q+再点击回车则退出
标签:rdev,hook,jadx,frida,message,UpdateDialog,com
From: https://www.cnblogs.com/pdxt666/p/17574238.html