Smart Input 插件之 ja-netfilter 激活

直奔主题

看了一篇大佬用注册机方式激活的文章,奈何我已经清空了试用授权,激活码不好找,多少有点局限性

https://linux.do/t/topic/64175

那就用 ja 写个插件吧

/**
 * @author yelochick
 */
public class SmartInputTransformer implements MyTransformer {
    
    @Override
    public String getHookClassName() {
        return "com/xxxtai/smartinputintellij/model/LicenseInfo";
    }

    @Override
    public byte[] transform(String className, byte[] classBytes, int order) throws Exception {
        ClassReader reader = new ClassReader(classBytes);
        ClassNode node = new ClassNode(ASM5);
        reader.accept(node, 0);
        for (MethodNode m : node.methods) {
            if ("enableLicense".equals(m.name)) {
                InsnList list = new InsnList();
                list.add(new LdcInsnNode(""));
                list.add(new VarInsnNode(ALOAD, 1));
                list.add(new MethodInsnNode(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false));
                LabelNode labelNode = new LabelNode();
                list.add(new JumpInsnNode(IFNE, labelNode));
                list.add(new VarInsnNode(ALOAD, 0));
                list.add(new VarInsnNode(ALOAD, 1));
                list.add(new FieldInsnNode(PUTFIELD, "com/xxxtai/smartinputintellij/model/LicenseInfo", "license", "Ljava/lang/String;"));
                list.add(new VarInsnNode(ALOAD, 0));
                list.add(new LdcInsnNode(4102415999000L));
                list.add(new MethodInsnNode(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false));
                list.add(new FieldInsnNode(PUTFIELD, "com/xxxtai/smartinputintellij/model/LicenseInfo", "expireTimestamp", "Ljava/lang/Long;"));
                list.add(new InsnNode(ICONST_1));
                list.add(new InsnNode(IRETURN));
                list.add(labelNode);
                m.instructions.insert(list);
            } else if ("isOffline".equals(m.name)) {
                m.instructions.clear();
                InsnList list = new InsnList();
                list.add(new InsnNode(ICONST_1));
                list.add(new InsnNode(IRETURN));
                m.instructions.insert(list);
            }
        }
        SafeClassWriter writer = new SafeClassWriter(null, null, ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
        node.accept(writer);
        return writer.toByteArray();
    }
}
  • 任意激活码激活

image

  • 屏蔽了在线激活(跳浏览器让扫码付款)

写到最后

思考一下,你的 ctrl + 空格 值不值 59.9(一台PC哦)?

20240427 更新

经过一天的反编译DLL,得知License是有签名的,切换输入法都会验证License签名,但由于没有私钥,所以无法自行生成License,这也是意料之中,目前没有更好的办法。

目前官方开放免费了,能用则用吧。


19 个赞

这是啥插件

1 个赞

中英文输入法自动切换的插件

1 个赞

这么厉害,那明天得试下

3 个赞

牛的牛的

3 个赞

感谢感谢,现在就去试试去

2 个赞

感谢分享,试试

2 个赞

牛头

2 个赞

问一下,这玩意儿免费版有什么限制
我目前用着感觉好像没啥限制

2 个赞

昨天收费被骂了,紧急调整回免费了,可以在jb插件中看这个插件的评论有说

3 个赞

哦,是昨天突然收费了啊
我就说我怎么一直不知道
(去年有一次显示要激活,但是只需要关注公众号即可)

2 个赞

他这种不是在jb平台上付费,并且一台pc60,昨天被骂惨了

2 个赞

感谢分享,
有个小建议: pom里改下<finalName>${project.build.finalName}</finalName>,不然会打出来两个jar

2 个赞

肯定骂死,他这玩意和某括号插件都没啥使用的必要性,可用可可不用,真觉得自己的插件无敌了,有脸收费

3 个赞

问题不大哈,不拘小节 :grinning:

1 个赞

插件官网回复: 非常抱歉,我们对定价及授权方案设置不合理给大家带来了不好的体验,我们深刻反省,现暂停收费,重新打开IDE即可自动使用。我们花了很多精力优化插件、帮助用户解决问题,如果没有不能平衡付出,我们很难继续走下去,所以收费是为了更好的持续性提供服务,收费方案我们会参考大家给的建议。感谢大家的鞭策。

1 个赞

这玩意儿之前一直在用,觉得挺好用的,直到他突然收费。。。我觉得被骂原因还是,价格和提供的功能给大家的感觉性价比过低了,像MyBatisCodeHelperPro这种功能强劲的插件收费也没它这么离谱,而且人家是可以绑定3台机器,还可以换绑

1 个赞

还走第三方平台的?

如果走jb平台的话是不是就是一个账号一个授权

1 个赞

而且这种功能很简单的插件只要敢收费市面上分分钟有平替插件替代,之前没有是因为程序员们觉得没必要重复造轮子

1 个赞

其实不是不想支持国产软件,但受不了太急功近利