ajm3 发表于 2016-8-7 20:09

jar格式文件破解分析思路

本帖最后由 ajm3 于 2016-8-7 20:29 编辑

楼主发现jar在某些领域用到还是挺多的
比如,网页版的程序可以把授权放入jar文件里,这样的话 就算别人能看到html代码也破解不了,大多数人都想不到关键点在jar里面
楼主就遇到了几个,搞定了,分享一下思路给大家,就不点名是什么软件了

一个网页版的erp打开需要注册的,经过楼主各种分析,发现关键点在jar里面
方法
1.用rar解压jar,同时用jd-gui打开jar【目的是可以看到C#代码,但是不能修改】
2.用JavaByte.exe打开解压后的*.class文件修改
具体思路
jd-gui打开jar看到的是C#代码,所有好分析,如图红色框内
对应的汇编码在JavaByte里面,修改方法右键,和re有点像,也不全像,比如要增加新的string需要在Constant Pool里面右键增加【UTF8】编码8,再右键增加ldc对应刚刚的编码8,然后在Methods里面选择刚刚增加的ldc,不能直接在代码里面写string,这是个技巧。
   String strMsg = new String(bos.toByteArray());
      String dogId = "";
      String function = "";
      int usernum = 0;
      if ((strMsg != null) && (strMsg.contains("userCode:"))) {
      for (String str : strMsg.split(";")) {
          if (str.contains("userCode")) {
            dogId = str.substring(9, str.length());
          }
          if (str.contains("usernum")) {
            usernum = Integer.parseInt(str.substring(8, str.length()));
          }
          if (str.contains("function")) {
            function = str.substring(9, str.length());
          }

          if (str.contains("pcserial")) {
            String pcserial = str.substring(9, str.length());
            String pcserial2 = "";
            File file = new File(destPath + "/bin/CallHardDll.dll");
            if (file.exists())
            pcserial2 = CallHardAPI.readHard();
            else {
            pcserial2 = SoftWareUtils.getPCSerial();
            }
            if (!pcserial.equals(pcserial2)) {
            BaseEnv.log.error("该软加密文件不能在这台电脑上使用");
            return false;
            }
            SystemState.instance.dogId = dogId;
            SystemState.instance.userNum = usernum;
            SystemState.instance.function = function;
          }
      }
关键点分析

if (!pcserial.equals(pcserial2)) {//!pcserial.equals(pcserial2) 把前面!去掉就达到某种破解效果了
BaseEnv.log.error("该软加密文件不能在这台电脑上使用");
return false;//或者把这里修改为true

在JavaByte.exe找到上面需要修改的地方修改上面关键点对应如下图


上图是楼主修改过的,原来是ifne00001C4 ,意思是不等则飞到000001C4【会提示注册】,改ne为eq就是相等才跳,这样的话,就算授权码是其他任意电脑的,都可以用了具体修改方法,右键选

改好后把class文件拖入jar包对应的目录
再用jd-gui打开看,!pcserial.equals(pcserial2)前面的!是不是不见啦,说明修改成功啦
忘记说, 需要java和jdk环境下才能编译

完整界面如图

修改好后点右键save ,然后把*.class压缩替换回jar就好啦,比安卓简单多了不需要签名。就是JavaByte.exe的代码比较难看懂,估计没有基础的人不行。
能想到的就这些啦,有人遇到么,jar文件,java语。需要做个详细视频教程么。

我相信如果有人遇到的话,看了我的思路肯定会有所帮助,至少不会连用什么工具都不知道







奇卡无比 发表于 2017-9-21 14:28

已经搞定 这个方法的确很实用

PlusTv 发表于 2016-8-7 20:26

学习了学习            

cat73 发表于 2016-8-7 20:26

楼主确定没说错么。。
jar反编译出来是C#代码。。。

ajm3 发表于 2016-8-7 20:27

cat73 发表于 2016-8-7 20:26
楼主确定没说错么。。
jar反编译出来是C#代码。。。

代码都贴出来了,还需要解释吗

cat73 发表于 2016-8-7 20:29

ajm3 发表于 2016-8-7 20:27
代码都贴出来了,还需要解释吗

当然需要呀。。。
我印象里 jd-gui 反汇编出来的是 Java 代码呀?

cat73 发表于 2016-8-7 20:36

ajm3 发表于 2016-8-7 20:27
代码都贴出来了,还需要解释吗

那还真是难为这工具了,硬把 Java 代码转成 C# 代码。。。

tail88 发表于 2016-8-7 20:38

楼主分享 JavaByte.exe 软件啊,百度了下好像没有。

我来看看看 发表于 2016-8-7 20:41

我觉得做个视频出来比较好 在配上文字说明

cat73 发表于 2016-8-7 20:47

ajm3 发表于 2016-8-7 20:27
代码都贴出来了,还需要解释吗

以及,其实楼主贴的就是 Java 代码。。。

tail88 发表于 2016-8-7 21:13

再 凤毛麟角 ,也没有大神你的工具多撒。
页: [1] 2 3
查看完整版本: jar格式文件破解分析思路