letMyApp = Java.use("com.gdufs.xman.MyApp");
MyApp["saveSN"].implementation = function (str) {
console.log(`MyApp.saveSN is called: str=${str}`);
this["saveSN"](str);
};
let prc = Java.use("android.os.Process");
prc["killProcess"].implementation = function (str) {
console.log(`MyApp.saveSN is called: str=${str}`);
//this["saveSN"](str); hook不执行
};
let n2=Module.findExportByName("libmyjni.so","n2");
console.log("n2地址:",n2)
function decrypt(encryptedStr) {
// 密钥表 v21
const v21 = Array.from("W3_arE_whO_we_ARE").map(c => c.charCodeAt(0));
// 初始化 v13
let v13 = 2016;
// 将加密字符串转换为字符数组
const encryptedArr = Array.from(encryptedStr);
// 遍历每个字符
for (let v15 = 0; v15 < encryptedArr.length; v15++) {
let v19;
// 根据 v15 % 3 的值更新 v13 并获取 v19
if (v15 % 3 === 1) {
v13 = (v13 + 5) % 16;
v19 = v21[v13 + 1];
} else if (v15 % 3 === 2) {
v13 = (v13 + 7) % 15;
v19 = v21[v13 + 2];
} else {
v13 = (v13 + 3) % 13;
v19 = v21[v13 + 3];
}
// 异或操作解密
encryptedArr[v15] = String.fromCharCode(encryptedArr[v15].charCodeAt(0) ^ v19);
}
// 返回解密后的字符串
return encryptedArr.join("");
}
const encryptedStr = "EoPAoY62@ElRD";
const decryptedStr = decrypt(encryptedStr);
console.log("解密后的字符串:", decryptedStr);
201608Am!2333
欢 迎 关 注
更多精彩内容关注下方公众号:逆向有你
个人微信:ivu123ivu
每日自动更新各类学习教程及工具下载合集
https://pan.quark.cn/s/8c91ccb5a474
原文始发于微信公众号(逆向有你):安卓逆向2025 -- Frida学习之native层hook案例
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论