AI+ Smali 等于 破解插件

news/2025/11/5 17:24:32/文章来源:https://www.cnblogs.com/zzzz-yh/p/19194258

升级完idea 之后 发现插件不对劲了 .
重新下载mybatis类插件 就下载了 MybatisCodeHelperPro
免费功能够用 但是每次提示激活
于是 tg中搜了下 发现居然没有..
简单的试下破解

插件位置

由于我是mac 电脑 在jetbrains toolbox的帮助下找到了idea的日志image
根据日志拿到了插件的目录.

激活方式

插件界面如下image
简单分析了插件激活页面之后 目标离线激活
image

寻找机会

在此之前 利用 jadx 和 recaf-gui 进行反编译和编译工作

输入任意编码提示错误信息.

在jadx中查到定位类
第一次 找到了公钥 解密的地方 经过一顿研究 发现私钥加密了原始数据 base64编码了密文 .
第二次 找到了解密后的数据格式 (感谢52破解的一个帖子 构建了成功的载荷格式)
{ "paidKey": "88888888-8888-8888-8888-888888888888", "valid": true, "userMac": "唯一码", "validTo": 4100688000000 }

破解逻辑绕过解密动作

image

这个时候用jadx 定位到类 在recaf-gui 中 用Smali 编辑class .

  .inner public static {name: Decoder,inner: java/util/Base64$Decoder,outer: java/util/Base64
}
.inner public static final {name: Lookup,inner: java/lang/invoke/MethodHandles$Lookup,outer: java/lang/invoke/MethodHandles
}
.sourcefile "SourceFile"
.super java/lang/Object
.class public super com/ccnode/codegenerator/ag/f/e {.field private static a Lcom/google/gson/Gson; .method public <init> ()V {parameters: { this },code: {A: line 11aload thisinvokespecial java/lang/Object.<init> ()Vreturn B: }}.method public static a (Ljava/lang/String;)Lcom/ccnode/codegenerator/ag/d/f; {parameters: { v0 },exceptions: { { B, C, D, Lcom/ccnode/codegenerator/ag/f/b; }, { G, H, I, Ljava/io/UnsupportedEncodingException; }, { K, L, M, Ljava/lang/Exception; }},code: {A: line 15aconst_null astore v1B: // try-start:   range=[B-C] handler=D:com/ccnode/codegenerator/ag/f/b line 17new java/lang/Stringdup invokestatic java/util/Base64.getDecoder ()Ljava/util/Base64$Decoder;ldc "TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FDZzUyUjExV0h1MysvNUV2WnhkS0l2a3ovekpnS2VNUUhNLytMVkxSZS9zWUpFQlUxbUUrODc3MmJJckk4UThscldqSHc5cmVjQ1RWVVhXUnhWYXBndk1HYTZ3KzU4STZwYXdSaFhwZDBrRkhUY2xxeUZGWFpoS3ZiQUtoblphRGNuZkJtSkhObTQwR0JFTGpCTmx5MXpha2FIblFmUzF0QlhaSGQwOUV0c2VRSURBUUFC"invokevirtual java/util/Base64$Decoder.decode (Ljava/lang/String;)[Bgetstatic kotlin/text/Charsets.UTF_8 Ljava/nio/charset/Charset;invokespecial java/lang/String.<init> ([BLjava/nio/charset/Charset;)Vinvokestatic com/ccnode/codegenerator/ag/f/d.a (Ljava/lang/String;)Ljava/security/interfaces/RSAPublicKey;invokestatic java/util/Base64.getDecoder ()Ljava/util/Base64$Decoder;aload v0invokevirtual java/util/Base64$Decoder.decode (Ljava/lang/String;)[Binvokestatic com/ccnode/codegenerator/ag/f/d.b (Ljava/security/interfaces/RSAPublicKey;[B)[Bastore v1C: // try-end:     range=[B-C] handler=D:com/ccnode/codegenerator/ag/f/b line 20goto FD: // try-handler: range=[B-C] handler=D:com/ccnode/codegenerator/ag/f/b line 18astore v2E: line 19new com/ccnode/codegenerator/ag/f/cdup invokespecial com/ccnode/codegenerator/ag/f/c.<init> ()Vinvokestatic java/util/Base64.getDecoder ()Ljava/util/Base64$Decoder;aload v0invokevirtual java/util/Base64$Decoder.decode (Ljava/lang/String;)[Binvokestatic com/ccnode/codegenerator/ag/f/d.b (Ljava/security/interfaces/RSAPublicKey;[B)[Bastore v1F: line 21aconst_null astore v2G: // try-start:   range=[G-H] handler=I:java/io/UnsupportedEncodingException line 24new java/lang/Stringdup aload v1ldc "UTF-8"invokespecial java/lang/String.<init> ([BLjava/lang/String;)Vastore v3H: // try-end:     range=[G-H] handler=I:java/io/UnsupportedEncodingException line 27goto KI: // try-handler: range=[G-H] handler=I:java/io/UnsupportedEncodingException line 25astore v4J: line 26new java/lang/RuntimeExceptiondup aload v4invokespecial java/lang/RuntimeException.<init> (Ljava/lang/Throwable;)Vathrow K: // try-start:   range=[K-L] handler=M:java/lang/Exception line 29getstatic com/ccnode/codegenerator/ag/f/e.a Lcom/google/gson/Gson;aload v3ldc Lcom/ccnode/codegenerator/ag/d/f;invokevirtual com/google/gson/Gson.fromJson (Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;checkcast com/ccnode/codegenerator/ag/d/fastore v2L: // try-end:     range=[K-L] handler=M:java/lang/Exception line 32goto OM: // try-handler: range=[K-L] handler=M:java/lang/Exception line 30astore v4N: line 31new java/lang/RuntimeExceptiondup aload v3invokedynamic makeConcatWithConstants (Ljava/lang/String;)Ljava/lang/String; { invokestatic, java/lang/invoke/StringConcatFactory.makeConcatWithConstants, (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; } { "gson catch exception, the json string is\u0001" }aload v4invokespecial java/lang/RuntimeException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)Vathrow O: line 33aload v2areturn P: }}.method static <clinit> ()V {code: {A: line 12new com/google/gson/Gsondup invokespecial com/google/gson/Gson.<init> ()Vputstatic com/ccnode/codegenerator/ag/f/e.a Lcom/google/gson/Gson;return B: }}}

直接将输入的字符串作为json传递给gson 反序列化

image

 .inner public static {name: Decoder,inner: java/util/Base64$Decoder,outer: java/util/Base64
}
.inner public static final {name: Lookup,inner: java/lang/invoke/MethodHandles$Lookup,outer: java/lang/invoke/MethodHandles
}
.sourcefile "SourceFile"
.super java/lang/Object
.class public super com/ccnode/codegenerator/ag/f/e {.field private static a Lcom/google/gson/Gson; .method public <init> ()V {parameters: { this },code: {A: line 11aload thisinvokespecial java/lang/Object.<init> ()Vreturn B: }}.method public static a (Ljava/lang/String;)Lcom/ccnode/codegenerator/ag/d/f; {parameters: { v0 },exceptions: { { A, B, C, Ljava/lang/Exception; }},code: {A: // try-start:   range=[A-B] handler=C:java/lang/Exception line 29getstatic com/ccnode/codegenerator/ag/f/e.a Lcom/google/gson/Gson;aload v0ldc Lcom/ccnode/codegenerator/ag/d/f;invokevirtual com/google/gson/Gson.fromJson (Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;checkcast com/ccnode/codegenerator/ag/d/fastore v2B: // try-end:     range=[A-B] handler=C:java/lang/Exception line 32goto EC: // try-handler: range=[A-B] handler=C:java/lang/Exception line 30astore v4D: line 31new java/lang/RuntimeExceptiondup aload v0invokedynamic makeConcatWithConstants (Ljava/lang/String;)Ljava/lang/String; { invokestatic, java/lang/invoke/StringConcatFactory.makeConcatWithConstants, (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; } { "gson catch exception, the json string is\u0001" }aload v4invokespecial java/lang/RuntimeException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)Vathrow E: line 33aload v2areturn F: }}.method static <clinit> ()V {code: {A: line 12new com/google/gson/Gsondup invokespecial com/google/gson/Gson.<init> ()Vputstatic com/ccnode/codegenerator/ag/f/e.a Lcom/google/gson/Gson;return B: }}}

重复N+1次询问ai 语法

编译成功 导出工程
image

替换之后 重启idea 显示激活成功

唯一码计算代码

    package com.free.api.oshitest;import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;public class Mac {private static final byte[][] VIRTUAL_MAC_PREFIXES = {{0, 5, 105}, {0, 28, 20}, {0, 12, 41}, {0, 80, 86}, {8, 0, 39}, {10, 0, 39}, {0, 3, -1}, {0, 21, 93}};public static void main(String[] args) {final String mac = getNetworkInfo("mac").getFirst();System.out.println(mac);}public static String mac() {return getNetworkInfo("mac").getFirst();}public static List<String> getNetworkInfo(String type) {List<String> result = new ArrayList<>();try {Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();while (networkInterfaces.hasMoreElements()) {NetworkInterface networkInterface = networkInterfaces.nextElement();if (!isValidNetworkInterface(networkInterface)) {continue;}Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();while (inetAddresses.hasMoreElements()) {InetAddress inetAddress = inetAddresses.nextElement();if (isLocalIPv4Address(inetAddress)) {processNetworkAddress(inetAddress, type, result);}}}} catch (SocketException e) {System.err.println("Error getting network interfaces: " + e.getMessage());} catch (UnknownHostException e) {System.err.println("Error resolving host: " + e.getMessage());}return result;}private static boolean isValidNetworkInterface(NetworkInterface networkInterface) throws SocketException {byte[] hardwareAddress = networkInterface.getHardwareAddress();return hardwareAddress != null && hardwareAddress.length > 0 && !isVirtualMacAddress(hardwareAddress);}private static boolean isLocalIPv4Address(InetAddress inetAddress) {return inetAddress instanceof Inet4Address && inetAddress.isSiteLocalAddress();}private static void processNetworkAddress(InetAddress inetAddress, String type, List<String> result) throws UnknownHostException {InetAddress address = InetAddress.getByName(inetAddress.getHostAddress());if (address == null) {return;}if ("ip".equals(type)) {String ip = address.toString().replaceAll("^/+", "");result.add(ip);} else if ("mac".equals(type)) {String mac = formatMacAddress(address);if (mac != null) {result.add(mac);}}}private static String formatMacAddress(InetAddress inetAddress) {try {byte[] hardwareAddress = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress();if (hardwareAddress == null) {return null;}StringBuilder sb = new StringBuilder();for (int i = 0; i < hardwareAddress.length; i++) {sb.append(String.format("%02X", hardwareAddress[i]));if (i < hardwareAddress.length - 1) {sb.append("-");}}return sb.toString();} catch (SocketException e) {System.err.println("Error getting MAC address: " + e.getMessage());return null;}}private static boolean isVirtualMacAddress(byte[] macAddress) {if (macAddress == null || macAddress.length < 3) {return false;}for (byte[] prefix : VIRTUAL_MAC_PREFIXES) {if (macAddress[0] == prefix[0] && macAddress[1] == prefix[1] && macAddress[2] == prefix[2]) {return true;}}return false;}
}

激活码构建程序

package com.free.api.oshitest;import com.google.gson.annotations.SerializedName;public class f {@SerializedName(value = "paidKey")private String a;@SerializedName(value = "valid")private Boolean a2;@SerializedName(value = "userMac")private String b3;@SerializedName(value = "validTo")private Long a4;public String getA() {return a;}public void setA(String a) {this.a = a;}public Boolean getA2() {return a2;}public void setA2(Boolean a2) {this.a2 = a2;}public String getB3() {return b3;}public void setB3(String b3) {this.b3 = b3;}public Long getA4() {return a4;}public void setA4(Long a4) {this.a4 = a4;}@Overridepublic String toString() {final StringBuffer sb = new StringBuffer("f{");sb.append("a='").append(a).append('\'');sb.append(", a2=").append(a2);sb.append(", b3='").append(b3).append('\'');sb.append(", a4=").append(a4);sb.append('}');return sb.toString();}
}
package com.free.api.oshitest;import com.google.gson.Gson;import java.util.Base64;/*** @author: Yh* @date: 2025-10月-30 17:35:00 17:35*/
public class GetKey {public static void main(String[] args) {f f = new f();f.setA("88888888-8888-8888-8888-888888888888");f.setA2(true);f.setA4(4100688000000L);f.setB3(Mac.mac());Gson gson = new Gson();final String json = gson.toJson(f);System.out.println(json);final String s = Base64.getEncoder().encodeToString(json.getBytes());System.out.println(s);}
}

kimi的协和之旅

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/956993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle性能优化:latch free-SQL memory manager latch等待

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。Oracle性能优…

2025 年 11 月电能质量分析仪厂家权威推荐榜:A类/B类/动态/三相电能质量监测仪、在线监测装置及系统精选

一、电能质量分析仪行业背景与发展趋势随着现代电力系统的复杂化程度不断提高,电能质量问题日益成为影响供电可靠性和用电设备安全的关键因素。在工业自动化、数据中心、新能源并网等关键领域,电压暂降、谐波污染、频…

2025 年 11 月电气防火保护器厂家推荐排行榜,电弧故障保护器/断路器,防火限流保护器,故障电弧探测器,单相/三相保护装置专业选购指南

行业背景与发展趋势电气防火保护领域作为现代建筑安全体系的重要组成部分,正经历着技术革新与标准升级的双重驱动。随着智能电网建设和电气安全法规的完善,电弧故障保护器、防火限流保护器及故障电弧探测器等设备在预…

如何将一个html以host方式运行跑起来

直接贴代码npx http-server . -p 8084 随后你浏览器直接访问 http://127.0.0.1:8084/test.html 就可以了

2025年pc耐力板定制厂家权威推荐榜单:采光耐力板/pc实心板/pc阻燃板源头厂家精选

随着建筑、装饰及工业领域对高性能材料需求的持续增长,PC耐力板以其优异的抗冲击性、良好的透光性及安全环保特性,在采光顶棚、广告灯箱、安全防护及绿色建筑等场景中的应用日益广泛。本文将基于企业技术实力、生产能…

原型污染攻击工具揭秘:Prototype Pollution Gadgets Finder

本文深入探讨了JavaScript原型污染漏洞的检测与利用方法,重点介绍了Doyensec团队开发的Burpsuite插件,该插件能够自动发现和利用服务器端原型污染gadgets,包含对Axios和Nodemailer等流行库的具体攻击向量分析。引言…

2025 年 11 月箱包五金电镀加工,链条电镀加工,饰品电镀加工厂家最新推荐,产能、专利、环保三维数据透视!

引言 当前箱包五金、链条、饰品电镀加工领域需求持续增长,但行业内厂家实力差异显著,为帮助企业精准筛选优质合作伙伴,专业协会联合检测机构开展了专项测评。测评从产能规模、专利技术、环保合规三大核心维度入手,…

IBM 3650M

IMM2.1 interface You can connect to the IMM2.1 interface via a 10/100Mbps Ethernet port located at the rear of the servers. By default the IMM2.1 web interface is configured with a static IP address. T…

如何在Jmeter中测试接口查询天气

如何在Jmeter中测试接口查询天气原理:向服务器发送数据包,以获取相应地区的天气 准备工作: 1.在测试计划中添加线程组;在线程组中添加HTTP请求;在HTTP请求中添加结果树。 2.在http请求中填写各项信息 如图即为所示…

2025 年胰岛素泵厂家排行榜权威发布,实力厂家技术与口碑全景解析及选购指南软针植入 / 平衡式留置针 / 无异物感胰岛素泵公司推荐

引言 在糖尿病治疗领域,胰岛素泵作为精准控糖关键设备,其性能、舒适性与安全性直接影响患者治疗效果与生活质量。为给患者筛选优质产品,本次发布的 2025 年最新胰岛素泵品牌排行榜,依托专业医疗设备协会近一年测评…

2025年型材机加工生产厂家权威推荐榜单:硅溶胶精密铸造/砂铸件/五金铸件精加工源头厂家精选

在装备制造与工业零部件领域,型材机加工作为产品成型的关键环节,其加工精度与质量稳定性直接影响终端产品的性能表现。根据行业统计数据显示,2025年我国精密机加工市场规模预计突破8000亿元,其中型材加工占比约25%…

2025 年 11 月五金电镀加工,电子产品电镀加工,东莞电镀加工厂家最新推荐,产能、专利、环保三维数据透视!

引言 为助力企业精准筛选优质电镀加工合作伙伴,行业协会联合专业测评机构开展了 2025 年度电镀加工厂家专项测评。本次测评覆盖产能、专利、环保三大核心维度,采用数据量化分析与实地考察结合的方式,对近百家厂家的…

我用 Docker 部署 RabbitMQ 踩了 3 个大坑,10 分钟搞定的记录

上周帮公司新同事搭RabbitMQ环境,他手动装Erlang、配依赖,折腾2小时还没跑起来。我当时就说“用Docker啊!”——结果自己上手也踩了3个坑,卡了快1小时才搞定。后来发现轩辕镜像的RabbitMQ文档写得巨清楚,连标签和…

Ubuntu 24.04.2 LTS 中修改远程桌面(xrdp)的默认端口

要在 Ubuntu 24.04.2 LTS 中修改远程桌面(xrdp)的默认端口 3389 为 53389,可按以下步骤操作: 1. 修改 xrdp 配置文件 sudo nano /etc/xrdp/xrdp.ini 在文件中找到包含port=3389的行(通常在[Globals]部分),将其修…

在远程 Ubuntu 24.04.2 LTS 上安装并运行图形界面

1. 安装桌面环境 首先更新系统并安装一个轻量级桌面环境(推荐 Xfce,资源占用低,适合远程使用): # 更新系统包 sudo apt update && sudo apt upgrade -y# 安装Xfce桌面环境 sudo apt install -y xfce4 xfc…

2025年安全检测检验公司排行榜单前十名推荐

摘要 随着矿山安全生产要求的不断提高,安全检测检验行业在2025年迎来快速发展,行业内公司竞争激烈。本榜单基于市场调研、用户评价和技术实力综合排名,旨在为矿山企业提供可靠参考。表单数据来源于行业报告和用户反…

2025年安全检测检验公司排行榜单权威发布

摘要 随着矿业安全生产要求的不断提高,安全检测检验行业在2025年迎来快速发展,市场规模预计年增长10%以上(引用自《中国矿业安全发展报告2025》)。本排名基于市场调研、客户评价和技术实力综合评估,为矿山企业选择…

常见的命名规范

程序开发中的命名规范是确保代码可读性、可维护性和一致性的重要因素。虽然没有一个“最终方案”适用于所有项目,但有一些广泛接受的命名规范和最佳实践。以下是常见的命名规范和一些工具支持: 常见的命名规范命名风…

2025年边坡防护网优质厂家权威推荐榜单:主动防护网/被动防护网/绞索网源头厂家精选

随着基础设施建设与地质灾害防治需求的持续增长,边坡防护网作为边坡稳定的关键材料,其市场需求显著上升。边坡防护网以其柔性承载、高防腐蚀与便于安装的特性,在公路边坡、矿山复绿及工程建设等场景中发挥重要作用。…

2025年冷链食品冷库供货厂家权威推荐榜单:食品级冷库/食品速冻冷库/保鲜食品冷库源头厂家精选

在食品安全与冷链物流标准不断提升的背景下,冷链食品冷库作为保障食品品质的关键环节,其温控精度与能效水平直接影响食品保鲜效果与运营成本。根据冷链行业数据显示,2025年我国冷链物流市场规模预计突破7000亿元,其…