先反编译apk
其中apk上边button按钮绑定的方法是verifyClick,下边button绑定的方法是showPremium,所以就要hook这两个方法,通过观察发现verifyClick需要请求网页最终是会失败,所以只能通过hook showPremium方法来实现目的,查看showPremium方法,调用了getMac,getKey这两个方法,然后再分别观察getMac,getKey方法,其中getMac是获取本机的信息,而getKey是获取app中的key,但key是通过以下生成的
所以还需要hook MainActivity类中的xor方法,xor方法如图所示:
最后的hook代码
var launcherActivity = Java.use("de.fraunhofer.sit.premiumapp.LauncherActivity");
var mainActivity = Java.use('de.fraunhofer.sit.premiumapp.MainActivity');
launcherActivity.getKey.implementation = function(){
var act = mainActivity.$new();
var result = act.xor(stringToBytes("14:4F:8A:F6:E2:F8"),stringToBytes("LICENSEKEYOK"));
var key = bin2String(result);
console.log(key);
return key;
};
launcherActivity.verifyClick.implementation = function (v) {
this.showPremium(v);
};