|
|
发表于
2025-12-27 14:49:31
来自手机
|
显示全部楼层
| 阅读模式
来自 江西
本帖最后由 0咕咕鸡 于 2025-12-31 19:23 编辑
最新版本小学生计算器,有720/2企业级加固,脱壳修复极难
但可以通过邪修解锁功能
展示:
步骤1:首先去应用商店下载小学生计算器(部分应用商店没有)
原理:往私有目录注入假数据,再通过禁止联网与服务器断开连接,就获得了本地会员
进行脱壳操作
在常量里搜索会员
就会发现有一个您已是永久会员
点击进去查看,就会发现一个方法
- public void updateUser() {
- if (MyApplication.getContext().isLogin()) {
- UserModel userModel = MyApplication.getContext().mUserModel;
- Glide.with(activity).load(userModel.getAvatar()).apply(RequestOptions.circleCropTransform().error(0x7f0e01a9)).into(userImg);
- userName.setText(userModel.getNickname());
- userNotVip.setVisibility(0);
- userVip.setVisibility(8);
- this.worldVip.setText("立即加入");
- vipImg.setVisibility(8);
- if (MyApplication.getContext().isVip()) {
- userNotVip.setVisibility(8);
- userVip.setVisibility(0);
- Date date = null;
- try {
- date = DateUtils.yyyy_MM_dd.parse(userModel.getVip_expire_date());
- } catch (ParseException e) {
- e.printStackTrace();
- }
- Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(date.getTime());
- Calendar calendar2 = Calendar.getInstance();
- userVipTime.setText("会员到期" + userModel.getVip_expire_date());
- this.worldVip.setText("立即续费");
- vipImg.setVisibility(0);
- if (calendar.get(1) - calendar2.get(1) > 50) {
- this.worldVip.setText("查看权益");
- userVipTime.setText("您已是永久会员");
- }
- this.vipTitle.setText("查看会员功能");
- this.vipExp.setText("更多会员权益等你探索");
- return;
- }
- return;
- }
- Glide.with(activity).load(0x7f0e01a9).apply(RequestOptions.circleCropTransform().error(0x7f0e01a9)).into(userImg);
- userName.setText("点击登录");
- userNotVip.setVisibility(0);
- userVip.setVisibility(8);
- this.worldVip.setText("立即加入");
- vipImg.setVisibility(8);
- }
- }
复制代码
根据上述代码,知道,要让islogin(),isvip(),这两个方法同时返回true才能是会员
那就看一下islogin 什么情况下才是返回true
- public boolean isLogin() {
- UserModel userModel = new UserModel();
- userModel.getObject();
- if (TextUtils.isEmpty((String) SPUtils.get(this, "user_id", "")) || TextUtils.isEmpty((String) SPUtils.get(this, "token", ""))) {
- userModel.clearObject();
- this.mUserModel = null;
- return false;
- }
- this.mUserModel = userModel;
- return !"skip".equals(userModel.getLogin_type());
- }
- }
复制代码
要user_id,还有 token也不是空,其次检查getLogin_type是不是skip,如果是的话,则认为没有登录,所以只需要往私有目录里面写上数据就可以了
再看一下isvip的方法实现
- public boolean isVip() {
- UserModel userModel;
- return isLogin() && (userModel = this.mUserModel) != null && "2".equals(userModel.getStatus());
- }
- }
复制代码
同时要满足islogin(),和私有目录的getstatus是2才是会员
此时isvip就已返回true了
写入数据后
断网打开,高级功能已经可以正常使用,但是一点击我的,app直接闪退
崩溃日志UserModel.vip_expire_date,解析字符串失败
只要往私有目录写上- <string name="UserModel.vip_expire_date">2099-12-31</string>
复制代码
就不会闪退了
步骤2:将小学生计算器进行禁止WiFi和数据访问,这一步的目的是防止从服务器更新数据(如果没有root,步骤2需要在完成步骤8后做)
- 小米:长按小学生计算器的图标-应用信息-月流量消耗-WiFi与数据进行关闭
- vivo:打开i管家-流量管理-联网管理-数据-小学生计算器进行关闭和WiFi-小学生计算器进行关闭
- 其他品牌手机可能是不同的操作方法,也可以进行关WiFi和关数据操作,不过一旦联网,就会失效,就需要重新操作
复制代码
接下来的步骤:
有root权限的操作方法:
步骤3:
将- <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
- <map>
- <string name="UserModel.nickname">在这里填写用户名</string>
- <string name="UserModel.status">2</string>
- <string name="UserModel.user_id">123456</string>
- <string name="token">123456</string>
- <string name="UserModel.login_type">wx</string>
- <string name="user_id">123456</string>
- <string name="h5_user_id">123456</string>
- <string name="UserModel.token">123456</string>
- <string name="contact_user_id">123456</string>
- <string name="UserModel.vip_expire_date">2099-12-31</string>
- </map>
复制代码
保存到- /data/user/0/com.nanjingcl.computer/shared_prefs/fanghe_data.xml
复制代码
打开后就是会员
没有root的操作方法:
步骤3:下载APK(123盘):点击下载计算器辅助.apk
步骤4:使用自己的签名对计算器辅助.apk进行重新签名
步骤5:到MT管理器提取安装包,对小学生计算器.apk重新进行同一签名进行签名,只签名,不要去除签名校验
步骤6:卸载小学生计算器,安装计算器辅助_sign.apk
步骤7:直接打开,然后显示保存成功
步骤8:再直接安装(更新)小学生计算器_sign.apk
点击下载计算器辅助(123盘).apk
计算器辅助java源码:- package com.nanjingcl.computer;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- saveData();
- }
- private void saveData() {
- SharedPreferences sp = getSharedPreferences("fanghe_data", MODE_PRIVATE);
- // 检查是否已存在
- if (sp.contains("UserModel.nickname")) {
- new AlertDialog.Builder(this)
- .setTitle("数据已存在")
- .setMessage("是否替换现有数据?")
- .setPositiveButton("替换", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- saveToPrefs();
- }
- })
- .setNegativeButton("取消", null)
- .show();
- } else {
- saveToPrefs();
- }
- }
- private void saveToPrefs() {
- SharedPreferences.Editor editor = getSharedPreferences("fanghe_data", MODE_PRIVATE).edit();
- editor.putString("UserModel.nickname", "用户123456");
- editor.putString("UserModel.status", "2");
- editor.putString("UserModel.user_id", "123456");
- editor.putString("token", "123456");
- editor.putString("UserModel.login_type", "wx");
- editor.putString("user_id", "123456");
- editor.putString("h5_user_id", "123456");
- editor.putString("UserModel.token", "123456");
- editor.putString("contact_user_id", "123456");
- editor.putString("UserModel.vip_expire_date", "2099-12-31");
- boolean saved = editor.commit();
- String message = saved ? "保存成功" : "保存失败";
- new AlertDialog.Builder(this)
- .setTitle(message)
- .setPositiveButton("确定", null)
- .show();
- }
- }
复制代码
无root视频教程(123盘&小飞机网盘):
- https://www.123684.com/s/Nh3NTd-QSa7d
- https://share.feijipan.com/s/MiV8VnIG
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:好评 +1
金币 +2
|