安卓逆向 HOOK 第二课 普通方法的HOOK

先分析关键代码
静态分析结果
这是一个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("未找到程序"); } } }
本文来自博客园,作者:逆向狗,转载请注明原文链接:https://www.cnblogs.com/Agtw/p/16921177.html