吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17939|回复: 29
上一主题 下一主题
收起左侧

[Android 转帖] jar格式文件破解分析思路

  [复制链接]
跳转到指定楼层
楼主
ajm3 发表于 2016-8-7 20:09 回帖奖励
本帖最后由 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,这是个技巧。
[Asm] 纯文本查看 复制代码
     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;
          }
        }

关键点分析
[Asm] 纯文本查看 复制代码
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语。需要做个详细视频教程么。

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







免费评分

参与人数 6威望 +1 吾爱币 +1 热心值 +6 收起 理由
奇卡无比 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
丑八怪 + 1 已经处理,感谢您对吾爱破解论坛的支持!
咬字分开念 + 1 我很赞同!
qtfreet00 + 1 + 1 已答复!
牛奶咖啡 + 1 确实感觉楼主做个视频最好。。
我来看看看 + 1 我觉得做个视频出来比较好 在配上文字说明

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
奇卡无比 发表于 2017-9-21 14:28
已经搞定 这个方法的确很实用
沙发
PlusTv 发表于 2016-8-7 20:26
3#
cat73 发表于 2016-8-7 20:26
楼主确定没说错么。。
jar反编译出来是C#代码。。。
4#
 楼主| ajm3 发表于 2016-8-7 20:27 |楼主
cat73 发表于 2016-8-7 20:26
楼主确定没说错么。。
jar反编译出来是C#代码。。。

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

免费评分

参与人数 2热心值 +2 收起 理由
丑八怪 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
咬字分开念 + 1 支持大神

查看全部评分

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

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

点评

安卓我也破解过,和这代码一样的,是C#,java代码一般是不好直接分析的,看不懂的,和机器码差不多  发表于 2016-8-7 20:30
6#
cat73 发表于 2016-8-7 20:36
ajm3 发表于 2016-8-7 20:27
代码都贴出来了,还需要解释吗

那还真是难为这工具了,硬把 Java 代码转成 C# 代码。。。
7#
tail88 发表于 2016-8-7 20:38
楼主分享 JavaByte.exe 软件啊,百度了下好像没有。

点评

你都凤毛麟角了,还问我要工具  发表于 2016-8-7 20:40
8#
我来看看看 发表于 2016-8-7 20:41
我觉得做个视频出来比较好 在配上文字说明

点评

涉及某知名的商业软件,不好吧  发表于 2016-8-7 20:42
9#
cat73 发表于 2016-8-7 20:47
ajm3 发表于 2016-8-7 20:27
代码都贴出来了,还需要解释吗

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

点评

我下问你的是,你那么纠结这个是什么代码,你告诉我,java和c#有什么区别吗,对于反编译  发表于 2016-8-12 22:18
10#
tail88 发表于 2016-8-7 21:13
再 凤毛麟角 ,也没有大神你的工具多撒。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 07:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表