安卓逆向 HOOK 第二课 普通方法的HOOK
2024-10-21 03:17:16
先分析关键代码
静态分析结果
这是一个boolean返回值的方法,该将用户名和注册码作为参数传进来,默认返回false。
当用户名为空时,直接返回false。
如果用户名长度不等于0且注册码不等于空且注册码长度为16位,则计算MD5。当md5值跟传进来的注册码一致时,将返回true。
我们要得到它的值,就是我们的注册码。
我们通过HOOK方法 暴力的进行注册
package da;
import android.R.string;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
///导入类
public class a implements IXposedHookLoadPackage{
///XP框架入口点
if(pparam.packageName.equals("com.qianyu.zhuceji"))
{
XposedBridge.log("已经获取程序");
XposedHelpers.findAndHookMethod(
"com.qianyu.zhuceji.MainActivity", ///包名
pparam.classLoader, //加载
"checkSN",//HOOK的方法名
String.class,//参数 普通参数直接用默认的
String.class,
new XC_MethodHook()//写入 {
@Override
///参数重写
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
super.beforeHookedMethod(param);
XposedBridge.log("参数1"+param.args[0]);
XposedBridge.log("参数1"+param.args[1]);
param.args[0]="111111";
param.args[1]="551104357";
XposedBridge.log("参数1"+param.args[0]);
XposedBridge.log("参数1"+param.args[1]);
}
返回值重写
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
super.afterHookedMethod(param);
XposedBridge.log("返回值"+param.getResult());
param.setResult(true);
}
}
); }else {
XposedBridge.log("未找到程序");
}
} }
最新文章
- petapoco sql语句参数化 插入邮箱地址
- jenkins+ant+jmeter搭建持续集成的接口测试平台
- A trip through the Graphics Pipeline 2011_09_Pixel processing – “join phase”
- openfire
- 展讯NAND Flash高级教程【转】
- sequence 作为序列插入值不是第一个
- linux命令之ps命令
- MarkDown思考
- IQKeyboardManager使用方法
- Delaunay三角化算法
- ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门
- JS(总结)
- RabbitMQ的Java API编程
- 【1】HTTP协议和Socket接口区别
- socket基础编程-2
- Xcode真机调试失败:The identity used to sign the executable is no longer valid
- 卷积神经网络 CNN 笔记
- Kafka安装及使用
- CentOS7配置ssh证书登录无效
- Java从零开始学七(选择结构)