当前位置: 首页 > news >正文

Writeup:看雪AliCrackme_1

打开App

image-20260126114710062

需要输入密码,没加固直接看代码

//从图片中提取加密映射表
protected String getTableFromPic() throws IOException {InputStream is = null;String value = "";try {try {is = getResources().getAssets().open("logo.png");int lenght = is.available();byte[] b = new byte[lenght];is.read(b, 0, lenght);byte[] data = new byte[768];System.arraycopy(b, 89473, data, 0, 768);String value2 = new String(data, "utf-8");if (is != null) {try {is.close();value = value2;} catch (IOException e) {value = value2;}} else {value = value2;}} catch (Exception e2) {e2.printStackTrace();if (is != null) {try {is.close();} catch (IOException e3) {}}}return value;} catch (Throwable th) {if (is != null) {try {is.close();} catch (IOException e4) {}}throw th;}}
//从图片中提取预设密码
protected String getPwdFromPic() throws IOException {InputStream is = null;String value = "";try {try {is = getResources().getAssets().open("logo.png");int lenght = is.available();byte[] b = new byte[lenght];is.read(b, 0, lenght);byte[] data = new byte[18];System.arraycopy(b, 91265, data, 0, 18);String value2 = new String(data, "utf-8");if (is != null) {try {is.close();value = value2;} catch (IOException e) {value = value2;}} else {value = value2;}} catch (Exception e2) {e2.printStackTrace();if (is != null) {try {is.close();} catch (IOException e3) {}}}return value;} catch (Throwable th) {if (is != null) {try {is.close();} catch (IOException e4) {}}throw th;}}
//通过加密映射表进行加密
public static String bytesToAliSmsCode(String table, byte[] data) {StringBuilder sb = new StringBuilder();for (byte b : data) {sb.append(table.charAt(b & 255));}return sb.toString();}
//通过加密映射表反向解密
private static byte[] aliCodeToBytes(String codeTable, String strCmd) {byte[] cmdBuffer = new byte[strCmd.length()];for (int i = 0; i < strCmd.length(); i++) {char c = strCmd.charAt(i);int v = codeTable.indexOf(c);cmdBuffer[i] = (byte) v;}return cmdBuffer;}
public class MainActivity extends Activity {@Override // android.app.Activityprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(1);setContentView(R.layout.activity_main);final EditText edit = (EditText) findViewById(R.id.edit);Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() { // from class: com.example.simpleencryption.MainActivity.1@Override // android.view.View.OnClickListenerpublic void onClick(View v) throws IOException {String password = edit.getText().toString();//获取加密映射表String table = MainActivity.this.getTableFromPic();//获取预设密码String pw = MainActivity.this.getPwdFromPic();Log.i("lil", "table:" + table);Log.i("lil", "pw:" + pw);String enPassword = "";try {//对输入内容进行加密enPassword = MainActivity.bytesToAliSmsCode(table, password.getBytes("utf-8"));Log.i("lil", "enPassword:" + enPassword);} catch (UnsupportedEncodingException e) {e.printStackTrace();}//比较加密后的输入内容与预设密码if (pw == null || pw.equals("") || !pw.equals(enPassword)) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setMessage(R.string.dialog_error_tips);builder.setTitle(R.string.dialog_title);builder.setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() { // from class: com.example.simpleencryption.MainActivity.1.1@Override // android.content.DialogInterface.OnClickListenerpublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.show();return;}MainActivity.this.showDialog();}});}

hook代码

方法一:根据加密逻辑直接进行解密

Java.perform(function() {var mainActivity = Java.use("com.example.simpleencryption.MainActivity");var globalTable = ""; // 全局变量存储表//获取加密映射表mainActivity.getTableFromPic.implementation = function() {var table = this.getTableFromPic();globalTable = table; // 存储到全局变量console.log("[+] 表: " + table);return table;};//解密mainActivity.getPwdFromPic.implementation = function() {//获取预设密码var pwd = this.getPwdFromPic();console.log("[+] 加密密码: " + pwd);//根据加密逻辑直接进行解密var original = "";for(var i = 0; i < pwd.length; i++) {original += String.fromCharCode(globalTable.indexOf(pwd[i]));}console.log("[+] 原始密码: " + original);return pwd;};
});

image-20260126171710121

方法二:主动调用解密函数

Java.perform(function() {var mainActivity = Java.use("com.example.simpleencryption.MainActivity");var globalTable = ""; // 全局变量存储表var globalPwd = ""; // 全局变量预设密码//获取加密映射表mainActivity.getTableFromPic.implementation = function() {var table = this.getTableFromPic();globalTable = table; // 存储到全局变量console.log("[+] 表: " + table);return table;};//解密mainActivity.getPwdFromPic.implementation = function() {//获取预设密码var pwd = this.getPwdFromPic();globalPwd = pwd;console.log("[+] 加密密码: " + pwd);return pwd;};//主动调用aliCodeToBytessetTimeout(function() {try {// 构造Java字符串参数var tableStr = Java.use("java.lang.String").$new(globalTable);var pwdStr = Java.use("java.lang.String").$new(globalPwd);var result = mainActivity.aliCodeToBytes(tableStr, pwdStr);var resultStr = Java.use("java.lang.String").$new(result, 0, result.length);console.log("[*] 解密结果: " + resultStr);} catch(e) {console.error("[-] 解密失败: " + e);}}, 3000); // 延迟3秒确保初始化完成
});

image-20260126171823070

http://www.jsqmd.com/news/304053/

相关文章:

  • 从技术狂欢到价值兑现,AI大模型下半场怎么打?
  • 基于springboot的大学生志愿服务活动管理系统(源码+论文+部署+安装)
  • 毕设 stm32的火灾监控与可视化系统(源码+硬件+论文)
  • 做自媒体数据复盘工具,导入平台播放量,点赞量,评论量,涨粉数,按日/周统计数据变化,分析高赞作品共性,生成复盘报告。
  • 爆火的Clawdbot全解析:功能、适配人群与国内本地化配置指南
  • 毕业 10 年学长忠告:这两件事别盲目跟风,AI 时代选对路比努力更重要
  • 2026年重庆公办职高哪家值得选 这些优质院校值得关注 择校指南
  • 2026西南木基架空地板优质厂家推荐
  • centos7 使用rc-local.service 开机启动挂载
  • zabbix-监控swarm集群
  • [转载] THINKPAD P71电脑清灰拆机
  • 写入即定局:OTP存储的永久锁定特性与操作风险防范
  • 《新手必看:Amazon 日本站批量注册+养号工具攻略》
  • Node.js用process.chdir切换工作目录
  • SSM微博舆情监控可视化系统-计算机毕业设计源码26994
  • 【大数据毕设选题推荐】Python+Hadoop王者荣耀账号交易信息可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
  • 上海夜磨牙治疗器械测评?
  • 【AI应用开发工程师】-阿里百炼模型平台使用教程(保姆级)
  • 2026年单片机开发公司权威推荐:qt程序开发、单片机电路开发、单片机硬件开发、电路硬件开发、硬件定制开发、硬件电路开发选择指南
  • React Native 中 Styled Components 配置指南
  • 收藏备用!SLM与LLM深度对比:小模型为何成企业AI落地新选择
  • 2026年阜阳小红书代运营公司推荐:涵盖品牌与效果核心痛点
  • 收藏!非技术党也能玩转大模型:零代码落地指南,职场效率翻倍
  • 创客匠人赋能:AI智能体驱动IP变现的“价值深度“革命
  • 收藏!AI行业“起薪通胀”愈演愈烈,应届生5万起步,8万成标配,大模型技能竟是未来财富密码
  • 创客匠人AI智能体:解锁创始人IP打造的“价值倍增“新路径
  • 改图是噩梦?国产CAD能救你
  • 创客匠人赋能:AI智能体如何构建知识变现的“可持续“生态
  • 二维三维一体化,用国产CAD制图不用切换脑子
  • 3D软件还是国产的好,别让渲染速度拖了后腿