【实战】nike 版本更新绕过
今天在做一个unidbg模拟的实验,下载了大师傅提供的老版nike app在断网的情况下可以绕过版本检测,正常使用app如果联网的话就弹出更新的activity所以猜想进行绕过呢?定位1、搜索字符串没有数据2、activity记录窗口找到 com.nike.mynike.ui.UpdateAppRequiredActivityjadx定位分析:发现没啥东西,关键是引用hook发现被调用app直接闪
今天在做一个unidbg模拟的实验,下载了大师傅提供的老版nike app
在断网的情况下可以绕过版本检测,正常使用app
如果联网的话就弹出更新的activity
所以猜想进行绕过呢?
定位
1、搜索字符串
没有数据
2、activity记录窗口
找到 com.nike.mynike.ui.UpdateAppRequiredActivity
jadx定位分析:
发现没啥东西,关键是引用
function hook_navigate() {
Java.perform(function () {
let Companion = Java.use("com.nike.mynike.ui.UpdateAppRequiredActivity$Companion");
Companion["navigate"].implementation = function (activity) {
console.log(`Companion.navigate is called: activity=${activity}`);
// this["navigate"](activity);
};
});
}
setImmediate(hook_navigate);hook发现被调用
app直接闪退,说明了这个app到这个窗口的结果就是退出。
继续向上hook
直接nop看看
成功绕过,但是好像不能登录。
这样方法简单粗暴
关键还是这个函数
发现没什么用
继续分析
打印调用堆栈
分析发现
正常来说hook
nikeConfigurationData2.isAppVersionLowerThanMin("22.27.5", Build.VERSION.SDK_INT)
让其返回false就完成啦
但是这个app直接hook,发现没效果,没触发。
关键是if里面的东西hook就可以触发,离谱
后来我发现,这是个接口,应该hook其实现的,我Hook错地方了
终于找到了方法
完整代码:
function hook_navigate() {
Java.perform(function () {
let MainActivity = Java.use("com.nike.mynike.ui.MainActivity");
MainActivity["setupCurrentFragment"].implementation = function (isTabEnabled, fragmentToShow) {
console.log(`MainActivity.setupCurrentFragment is called: isTabEnabled=${isTabEnabled}, fragmentToShow=${fragmentToShow}`);
this["setupCurrentFragment"](true, fragmentToShow);
};
let NikeConfigurationDataImpl = Java.use("com.nike.mynike.configuration.NikeConfigurationDataImpl");
NikeConfigurationDataImpl["isAppVersionLowerThanMin"].implementation = function (currentVersion, currentAosSdkVersionCode) {
console.log(`NikeConfigurationDataImpl.isAppVersionLowerThanMin is called: currentVersion=${currentVersion}, currentAosSdkVersionCode=${currentAosSdkVersionCode}`);
let result = this["isAppVersionLowerThanMin"](currentVersion, currentAosSdkVersionCode);
console.log(`NikeConfigurationDataImpl.isAppVersionLowerThanMin result=${result}`);
return false;
};
});
}
setImmediate(hook_navigate);这个时候就成功了

强的,铁铁