吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7455|回复: 13
收起左侧

[原创] secureSWF 3.6 Build 6664 pro 破解记录

  [复制链接]
dsong 发表于 2017-8-5 15:39
本帖最后由 dsong 于 2017-8-5 15:54 编辑

逆向工程实战之secureSWF 3.6 Pro破解
2017/6/23

注意:本文本来是给校内的同学看的,因此某些部分可能有点冗余,看的时候忽略即可。

一、基本分析
本次目标破解的软件为secureSWF,用途:主要混淆SWF代码结构来使反编译后的代码晦涩难懂。
值得注意的是,此版本已是较旧版本,但是目前能够下载到的最高版本的Pro版就是3.6。
此程序的安装完目录结构如下所示:
jre
lib
ssCLI.exe
secureSWF.jar
secureSWF Help.pdf
secureSWF.exe
注意到secureSWF.jar,说明是JAVA程序,并且容易知道secureSWF.exe是它的引导程序。
secureSWF.exe中仅有一个闪屏,无任何附加程序功能,并且如果安装了JRE环境,也可以直接运行secureSWF.jar。
把secureSWF.jar用jd-gui打开,可以明显看到它对变量名都采取了重命名:
image1.png
显然,不能通过变量名来判断各个函数的功能,并且很容易发现其对.jar文件进行过一些特殊非法字符的处理来使反编译过程出问题:
image2.png
经过尝试,直接使用dex2jar-2.0进行反编译后无法完成整个工程的重编译,于是尝试通过替换其中没有特殊非法字符变量的class文件来达到最终目的。为了尽快找到注册验证代码,打开软件,注册框中输入随机内容,弹出提示:
image3.png
注意到其中还有一个“Manual Activation”的选项,想到直接按“Activate”可能是联网验证,于是进入“Manual Activation”再看:首先弹出网页,网址格式:h**p://www.k***i.com/secureswf/verify/manual/?reg_name=11111®_code=111111111&machine_id=char[35]&product_code=ssPR3然后输入任意激活码,得到:
image4.png
machine_idMID是机器码。由此可以判断出大致的验证模式:
1.      联网验证。用户名+注册码,先本地审核格式,再提交至服务器校验是否有效。
2.      离线验证。不仅要有正确的用户名+注册码,还要有与机器码(MID)对应的激活码才可。(就是一机一码的授权模式)

二、代码分析
理清了思路,就可开始破解。首先在jd-gui中搜索“The registration info”:
image5.png
点击进入后发现:
image6.png
改变搜索字串“The_reg”:
image7.png
容易知道,光标所在位置就是真正有用的代码class,进入:
image8.png
又是调用,附近找到此处,点击进入:
image9.png
得到:
image10.png
上下看看,发现已经进入关键的注册算法验证class。可以开始分析代码了。容易知道,这段代码就是第一步校验注册码文件的合法性的:
image11.png
[Java] 纯文本查看 复制代码
  public static boolean C(String paramString)
    throws IOException, secureSWF.G.E
  {
    File localFile = new File(paramString, "key.data");
    if ((localFile.exists()) && (localFile.canRead()))
    {
      String str1 = A(localFile);
      String str2 = F.B(str1, D);
      if (!str2.contains(":"))
      {
        localFile.delete();
        throw new secureSWF.G.E("The current key file does not match the edition you are using", false);
      }
      E = str2.split(":")[0];
      String str3 = str2.split(":")[1];
      if ((!str3.startsWith("PR")) || ((str3.startsWith("PE")) || (str3.startsWith("SE"))))
      {
        localFile.delete();
        throw new secureSWF.G.E("The current key file does not match the edition you are using", false);
      }
      try
      {
        str2 = str2.substring(str2.indexOf(str3) + str3.length() + 1);
      }
      catch (StringIndexOutOfBoundsException localStringIndexOutOfBoundsException)
      {
        localFile.delete();
        throw new secureSWF.G.E("The current key file does not match the edition you are using", false);
      }
      return (str3.equals(D(E))) && (E(str2));
    }
    return false;
  }

简单分析可得出输入的注册码文件必须满足如下:
1.      注册码保存的文件名为“key.data”;
2.      解密后有字符串中至少有两个“:”;
3.      以“:”分割的第二段开头应是“PR”。
4.      (str3.equals(D(E))) &&(E(str2))执行返回的值必须为“true”。
由于此次实战目的仅为修改代码使之能够跳过验证,于是可以直接修改此函数以达到目的。

三、代码修改
让我们来理清思路:很简单,只要让这个函数直接返回“true”即可。审查此class,发现没有加密痕迹,只是变量名被混淆了并且变量名还是合法的。于是修改smali后重编译,只替换这个class文件就可以达成目的。使用dex2jar-2.0,先用d2j-jar2dex.jar转换为.dex,再用d2j-baksmali.dex还原为.class文件,得到的文件夹内打开.\secureSWF\A\A.smali,找到key.data位置,从上到下第二个就是我们要改的函数:
image12.png
注意到:L6处代码:
    :L6
   .line 183
   return v0
再看看初始处的v0
    const/4 v0, 1
便很容易知道,仅需在这句之后加上:
    return v0
就达到目的。保存文件后,用d2j-smali就可以把其重新打包为.dex,再用d2j-dex2jar还原为.jar文件,观察到文件大小比原.jar小很多:
image13.png
显然不能正常运行。于是我们选择部分替换。7-zip打开new-dex2jar.jar,进入.\secureSWF\A\,复制出A.class。同样用7-zip打开原.jar文件,进入.\secureSWF\A\,把刚才复制出的A.class替换掉里面的A.class再打开secureSWF,发现已经没有任何提示,并且功能可以正常使用。
image14.png


四、总结
修改代码的方式破解程序,对于一般的程序来说是最简单的方式。对于JAVA类程序来说,这种方法尤为方便。这个软件同样可以根据代码追踪出注册算法,从而实现任意的注册,并且不需要修改原程序。我已经编写成功一个注册机,注册算法的分析在以后再发布。
image15.png
image16.png

免费评分

参与人数 3威望 +2 吾爱币 +12 热心值 +3 收起 理由
Sound + 2 + 9 + 1 已经处理,感谢您对吾爱破解论坛的支持!
ducd + 1 + 1 感谢对吾爱破解论坛的支持,因你更精彩!
方妍心 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

ICEY 发表于 2017-8-5 15:48
不明觉厉,占个沙发
烦卵蝶 发表于 2017-8-5 16:03
fq645122 发表于 2017-8-5 16:39
cwz 发表于 2017-8-6 08:32
很强大  已经收藏
ningzhonghui 发表于 2017-8-6 09:55
谢谢,大牛可否出个爆破好的程序啊....注册的方式,系统没有装相关...
pangjineng 发表于 2017-8-6 10:00
确实有点深的样子。
Three_fish 发表于 2017-8-6 10:00
很强大  赞
静默_Lucky 发表于 2017-8-6 13:34
大牛,留个QQ可好?加我Q 657359786,有私问题
tiansi78 发表于 2017-8-6 13:34
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 13:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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