安卓逆向 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("未找到程序");
}
    }

    
}

 

posted @ 2022-11-24 10:59  逆向狗  阅读(86)  评论(0)    收藏  举报