阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 5357|回复: 2

[软件] 价值18万的工程设计软件破解之另类注册机

[复制链接]

4208

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
126222
QQ
发表于 2017-2-8 17:20:20 | 显示全部楼层 |阅读模式
价值18万的工程设计软件破解之另类注册机


       在破解这个软件之前我从来没有接触过软件破解。连OD、脱壳、爆破什么的都没听说过。破解这个软件总共花费了我整整三个月的时间,从2016年04号找到该软件,到2017年2月6号破解完成。从刚开始的学OD、看教程、看视频、查参考书,然后再到找各种重要函数原型、分析算法,再到最后跟设计者斗智斗勇的思想交锋。
  破解过程中的各种心酸,各种纠结,各种难受说是说不清楚,中间有好几次都差点放弃。
      之所以要选择我破解这个软件,是因为在工程设计过程中需要出工程制图,我的整个设计软件体系中就缺少这么一款热控设计软件。因为公司规模较小,公司是不会花钱买这种东西的,而且这种软件售价也比较贵,单个软件授权是5万元,如果公司组建一个5人用的平台至少也需要20万。如果10个人已上就更高了了
       这个软件破解过程中有几个大坑,首先出现“授权正确”之后,并不代表软件破解成功。其次,如果你不能整出注册码,客户端软件就根本就启动不起来,就算爆破之后启动起来了,运行过程中也会出现很多次的内存访问错误,而且很可能出现软件异常中断。再有CAD的绘图功能也因没有正确授权而不能正常运行。对于CAD插件的破解没有找到合适的破解方法,所以现实要求必须完整的整出授权字符串。
       再说说,关于“吾爱破解论坛”上活动的事情吧。双11的时候注册的帐号,之所以注册帐号是因为我在搜索为题的时候发现很多连接都直接指向了这个论坛。因为群里经常有公告说不发表原创文章就可能被封号,所以就一直想整个原创文章发表,而且经常签到,避免不被封号。但是由于自己是新手,能原创的东西并不多,发表文章呢只能拿来主义粘贴上去。但是我觉得这样子没啥意思,对自己的能力提升没有帮助,随后就想等我把这个软件破解完了精心做一篇文章发表,争取被纳入论坛精华。
       鉴于这个软件涉及到厂家的只是产权,源文件就不往论坛里发了,但是我可以很负责的说,这个软件破解的精华都已经在下面的描述中给出来了。如果找到源文件按照我的方法可定是可以破解的。。。
   经过这次软件破解之后的感悟:习惯了失败之后,成功已不算是成功,失败也不再是失败。坚持就是胜利。。。

现在将我破解过程中的东西进行总结,以方便跟我有共同目标的人少走弯路,坚持自己的路。。。早日成功。

一、软件介绍








二、基础知识
    1.破解入门参考教程
        暴力逆向第一季 逆向分析技术          https://pan.baidu.com/share/link ... 34880#list/path=%2F
        暴力科技第二季 OD全面精通 (我认为最好的OD入门教程)     https://pan.baidu.com/s/1i3w12RV#list/path=%2F
        吾爱技术吧vip全套破解教程(118课)      https://pan.baidu.com/s/1c2s57w#list/path=%2F
       还有  小甲鱼系列脱壳篇与调试篇 天草系列教程

     2.使用到的软件
           吾爱破解专用版OllyDbg              PEID 0.95          IDR (Interactive Delphi Reconstructor)       IDA Pro v6.6           AspackDie      

     3.参考书籍
     揭秘数据解密的关键技术-刘颖东  (这本书强烈推荐)      https://pan.baidu.com/share/link ... fid=737029704242803
     加密与解密(第三版)      https://pan.baidu.com/share/link ... fid=619796960341408

    4.破解常用网址
       无爱破解论坛            强烈推荐     http://www.52pojie.cn/
       Delphi库文件  (delphi破解必须要有的函数库)     http://delphi.ktop.com.tw/download/upload/00019969_Classes.pas
       TSL内置对象使用大全       http://www.tinysoft.com.cn/tsdn/helpdoc/display.tsl?id=1519
       Delphi反汇编内部字符串处理函数/过程列表       http://www.th7.cn/Program/delphi/201407/251050.shtml

三、破解记录

      1. 软件安装
         软件安装之后共有两个主要运行文件,如图所示。
      2.查壳脱壳

          1)、用PEiD 0.95查壳
      
                两个软件均为ASPack2.12压缩壳
         2)用AspackDie脱壳之后判断软件的变成语言,均为delphi
      3.找出服务器Server软件关键CALL
          用IDR反编译Server软件后,单击下图方框中内的选项,进入到关键CALL


  1. fServer::TfrmServer.LicBtnClick
  2. 00734C5C push ebp
  3. 00734C5D mov ebp,esp
  4. 00734C5F mov ecx,5
  5. 00734C64 push 0
  6. 00734C66 push 0
  7. 00734C68 dec ecx
  8. <00734C69 jne 00734C64
  9. 00734C6B push ecx
  10. 00734C6C push ebx
  11. 00734C6D push esi
  12. 00734C6E mov ebx,eax
  13. 00734C70 xor eax,eax
  14. 00734C72 push ebp
  15. 00734C73 push 734E76
  16. 00734C78 push dword ptr fs:[eax]
  17. 00734C7B mov dword ptr fs:[eax],esp
  18. 00734C7E lea edx,[ebp-0C]
  19. 00734C81 mov eax,dword ptr [ebx+39C];
  20. 00734C87 call TCustomMaskEdit.GetText
  21. 00734C8C mov eax,dword ptr [ebp-0C]
  22. 00734C8F call FileExists //判断授权文件是否存在
  23. 00734C94 test al,al
  24. >00734C96 jne 00734CAE //al不为0则授权文件存在
  25. 00734C98 mov ecx,734E8C; '授权文件不存在!'
  26. 00734C9D mov dl,1
  27. 00734C9F mov eax,[00408BC8]; Exception
  28. 00734CA4 call EOutOfResources.Create; Exception.Create
  29. 00734CA9 call @RaiseExcept
  30. 00734CAE xor eax,eax
  31. 00734CB0 push ebp
  32. 00734CB1 push 734E1F
  33. 00734CB6 push dword ptr fs:[eax]
  34. 00734CB9 mov dword ptr fs:[eax],esp
  35. 00734CBC mov dl,1
  36. 00734CBE mov eax,[0041F558]; TStringList
  37. 00734CC3 call TdxInplaceTextEdit.Create; TStringList.Create
  38. 00734CC8 mov dword ptr [ebp-8],eax
  39. 00734CCB lea edx,[ebp-10]
  40. 00734CCE mov eax,dword ptr [ebx+39C]; TfrmServer.LicenseEdit:TComboEdit
  41. 00734CD4 call TCustomMaskEdit.GetText
  42. 00734CD9 mov edx,dword ptr [ebp-10]
  43. 00734CDC mov eax,dword ptr [ebp-8]
  44. 00734CDF mov ecx,dword ptr [eax]
  45. 00734CE1 call dword ptr [ecx+68]; TStrings.LoadFromFile
  46. 00734CE4 lea ecx,[ebp-4]
  47. 00734CE7 xor edx,edx
  48. 00734CE9 mov eax,dword ptr [ebp-8]
  49. 00734CEC mov esi,dword ptr [eax]
  50. 00734CEE call dword ptr [esi+0C]; TStringList.Get
  51. 00734CF1 cmp dword ptr [ebp-4],0
  52. >00734CF5 je 00734E09
  53. 00734CFB lea ecx,[ebp-14] //这个地方存放
  54. 00734CFE mov edx,734EA4;
  55. 'kjjuoiu987*(&*(uuiyui*&^*789897UIOUI&*^*&^&*Tuytu'
  56. 00734D03 mov eax,dword ptr [ebp-4] //这个地方存放授权字符串
  57. 00734D06 call 0070DDC0 //这个是主要解密函数
  58. 00734D0B mov edx,dword ptr [ebp-14] //解密后的字符串
  59. 00734D0E mov eax,dword ptr [ebp-8]
  60. 00734D11 mov ecx,dword ptr [eax]
  61. 00734D13 call dword ptr [ecx+2C]; //这个是看似没多大作用但非常重要的函数
  62. 00734D16 mov edx,734EE0; 'MacAddress'
  63. 00734D1B mov eax,dword ptr [ebp-8]
  64. 00734D1E mov ecx,dword ptr [eax]
  65. 00734D20 call dword ptr [ecx+58]; TStrings.IndexOfName
  66. 00734D23 inc eax //定位到MacAddress之后返回位置数值
  67. >00734D24 je 00734DFF //也就是说eax的返回值不能为-1
  68. 00734D2A lea eax,[ebp-18]
  69. 00734D2D mov edx,dword ptr [ebp-4]
  70. 00734D30 call @WStrFromLStr
  71. 00734D35 mov eax,dword ptr [ebp-18]
  72. 00734D38 push eax
  73. 00734D39 mov eax,dword ptr [ebx+31C]; TfrmServer.util:Tutil
  74. 00734D3F xor ecx,ecx
  75. 00734D41 mov edx,734EF0
  76. 00734D46 call 004DF858 //向注册表值写值
  77. 00734D4B lea eax,[ebp-1C]
  78. 00734D4E push eax
  79. 00734D4F mov eax,dword ptr [ebx+31C]; TfrmServer.util:Tutil
  80. 00734D55 xor ecx,ecx
  81. 00734D57 mov edx,734F34
  82. 00734D5C call 004DF8C8 //读取注册表值
  83. 00734D61 mov eax,dword ptr [ebp-1C]
  84. 00734D64 xor edx,edx
  85. 00734D66 call @WStrCmp //\Software\Classes\VBS AUTHOR\OLEScript这个注册表的值是否为空,值不为零提示软件已经注册,不能再注册,如果为0才可以注册。
  86. >00734D6B jne 00734DF3
  87. 00734D71 call 007310F4 //判断一个文件是否存在,这个不用分析
  88. 00734D76 test al,al
  89. >00734D78 jne 00734DB4 //这个跳转应该让它实现才对
  90. 00734D7A lea ecx,[ebp-24]
  91. 00734D7D mov edx,734F8C;
  92. ')(*979798LJOJLJOIU&*(876876YGUGJGJGHIYI(*&*(^&*678678)(*)(IO'
  93. 00734D82 mov eax,734FD4; '0'
  94. 00734D87 call 0070DC94
  95. 00734D8C mov edx,dword ptr [ebp-24]
  96. 00734D8F lea eax,[ebp-20]
  97. 00734D92 call @WStrFromLStr
  98. 00734D97 mov eax,dword ptr [ebp-20]
  99. 00734D9A push eax
  100. 00734D9B mov eax,dword ptr [ebx+31C]; TfrmServer.util:Tutil
  101. 00734DA1 xor ecx,ecx
  102. 00734DA3 mov edx,734F34
  103. 00734DA8 call 004DF858
  104. 00734DAD call 0073102C
  105. >00734DB2 jmp 00734DE7
  106. 00734DB4 mov edx,734F8C;
  107. ')(*979798LJOJLJOIU&*(876876YGUGJGJGHIYI(*&*(^&*678678)(*)(IO'
  108. 00734DB9 lea ecx,[ebp-2C]
  109. 00734DBC mov eax,734FE0; '9999'
  110. 00734DC1 call 0070DC94 //这个是主要加密函数,非常重要。在此处事件999加密
  111. 00734DC6 mov edx,dword ptr [ebp-2C]
  112. 00734DC9 lea eax,[ebp-28]
  113. 00734DCC call @WStrFromLStr
  114. 00734DD1 mov eax,dword ptr [ebp-28]
  115. 00734DD4 push eax
  116. 00734DD5 mov eax,dword ptr [ebx+31C]; TfrmServer.util:Tutil
  117. 00734DDB xor ecx,ecx
  118. 00734DDD mov edx,734F34
  119. 00734DE2 call 004DF858 //将999加密过之后写入注册表
  120. 00734DE7 mov eax,734FF0; '授权成功!'
  121. 00734DEC call 006AC330
  122. >00734DF1 jmp 00734E09
  123. 00734DF3 mov eax,735004; '已有授权,不能再次授权!'
  124. 00734DF8 call 006AC330
  125. >00734DFD jmp 00734E09
  126. 00734DFF mov eax,735024; '非法授权!'
  127. 00734E04 call 006AC2C8
  128. 00734E09 xor eax,eax
  129. 00734E0B pop edx
  130. 00734E0C pop ecx
  131. 00734E0D pop ecx
复制代码
      4.客户端软件关键CALL
         鉴于这个CALL太长且功能比较简单,暂不列出代码。具体分析见第四部分。
      5.软件破解的关键点
         下面这两点是经过我大量的分析之后得到的破解软件的关键点。
          1)、两个主要函数(上面代码标红的两个函数)
                   解密函数:0070DDC0,加密函数0070DC94
         2)、两个主要字符串
         字符串1:)(*979798LJOJLJOIU&*(876876YGUGJGJGHIYI(*&*(^&*678678)(*)(IO
         字符串2:kjjuoiu987*(&*(uuiyui*&^*789897UIOUI&*^*&^&*Tuytu

四、我的另类注册机

       有一次上网是这样说的,软件破解有三个层次。第一层,爆破;第二层,追码;第三层写出注册机。
       从这句话可以看,我应该数据第二种。但是我觉得我应该属于第三种。因为写出注册机也需要话费很多的事件(如果花点时间我肯定是可以写出来的)。采用我的方式不仅可以生出写注册机的事件,而且速度快。这应该属于破解的更高级别吧。简单而准确的写出注册码。废话不多说。

       下面的图是我对整个软件仔细分析之后画出的注册框图,也是破解的核心。理解下列之后再通过代码定位就可以很容易分析出自己的破解方法
注:上途中的0是经过服务器软件检测授权文件之后发送的授权正确的代码。
       通过上图可知,授权文件是通过明文加密之后的结果。所以我就猜想我可以通过猜想授权字符串文件没有加密之前的内容。在三.3章节中的00734D16    mov        edx,734EE0; 'MacAddress'行可以看出授权字符串中必然含有“MacAddress=”字符串。又经过对服务器Server软件的分析觉得下面这段代码比较重要,对授权字符串代码猜想很有帮助。

  1. 00731793 . BA 6C1B7300 mov edx,Server.00731B6C ; UserName00731798 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  2. 0073179D . E8 1224CFFF call <Server.Classes.TStrings.GetValue>
  3. 007317A2 . 8B55 AC mov edx,dword ptr ss:[ebp-0x54]
  4. 007317A5 . B8 40957400 mov eax,Server.00749540
  5. 007317AA . E8 3535CDFF call <Server.System.@LStrAsg>
  6. 007317AF . 8D4D A8 lea ecx,dword ptr ss:[ebp-0x58]
  7. 007317B2 . BA 801B7300 mov edx,Server.00731B80 ; License
  8. 007317B7 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  9. 007317BC . E8 F323CFFF call <Server.Classes.TStrings.GetValue>
  10. 007317C1 . 8B45 A8 mov eax,dword ptr ss:[ebp-0x58]
  11. 007317C4 . E8 8B8CCDFF call <Server.SysUtils.StrToInt> ; 运行到这句之后会跳转到授权信息错误
  12. 007317C9 . 66:A3 3495740>mov word ptr ds:[0x749534],ax
  13. 007317CF . 8D4D E8 lea ecx,dword ptr ss:[ebp-0x18]
  14. 007317D2 . BA 981B7300 mov edx,Server.00731B98 ; JWLicenseNumber
  15. 007317D7 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  16. 007317DC . E8 D323CFFF call <Server.Classes.TStrings.GetValue>
  17. 007317E1 . 66:C705 36957>mov word ptr ds:[0x749536],0x0
  18. 007317EA . 837D E8 00 cmp dword ptr ss:[ebp-0x18],0x0
  19. 007317EE . 74 0E je short Server.007317FE
  20. 007317F0 . 8B45 E8 mov eax,dword ptr ss:[ebp-0x18]
  21. 007317F3 . E8 5C8CCDFF call <Server.SysUtils.StrToInt>
  22. 007317F8 . 66:A3 3695740>mov word ptr ds:[0x749536],ax
  23. 007317FE > 8D4D A4 lea ecx,dword ptr ss:[ebp-0x5C]
  24. 00731801 . BA B01B7300 mov edx,Server.00731BB0 ; PDMS
  25. 00731806 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  26. 0073180B . E8 A423CFFF call <Server.Classes.TStrings.GetValue>
  27. 00731810 . 8B55 A4 mov edx,dword ptr ss:[ebp-0x5C]
  28. 00731813 . B8 58957400 mov eax,Server.00749558
  29. 00731818 . E8 C734CDFF call <Server.System.@LStrAsg>
  30. 0073181D . 8D4D A0 lea ecx,dword ptr ss:[ebp-0x60]
  31. 00731820 . BA C01B7300 mov edx,Server.00731BC0 ; Run
  32. 00731825 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  33. 0073182A . E8 8523CFFF call <Server.Classes.TStrings.GetValue>
  34. 0073182F . 8B55 A0 mov edx,dword ptr ss:[ebp-0x60]
  35. 00731832 . B8 44957400 mov eax,Server.00749544
  36. 00731837 . E8 A834CDFF call <Server.System.@LStrAsg> ; 需要分析
  37. 0073183C . 8D4D 9C lea ecx,dword ptr ss:[ebp-0x64]
  38. 0073183F . BA D41B7300 mov edx,Server.00731BD4 ; IP
  39. 00731844 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  40. 00731849 . E8 6623CFFF call <Server.Classes.TStrings.GetValue>
  41. 0073184E . 8B55 9C mov edx,dword ptr ss:[ebp-0x64]
  42. 00731851 . B8 48957400 mov eax,Server.00749548
  43. 00731856 . E8 8934CDFF call <Server.System.@LStrAsg>
  44. 0073185B . 8D4D 98 lea ecx,dword ptr ss:[ebp-0x68]
  45. 0073185E . BA E81B7300 mov edx,Server.00731BE8 ; MacAddress
  46. 00731863 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  47. 00731868 . E8 4723CFFF call <Server.Classes.TStrings.GetValue>
  48. 0073186D . 8B55 98 mov edx,dword ptr ss:[ebp-0x68]
  49. 00731870 . B8 4C957400 mov eax,Server.0074954C
  50. 00731875 . E8 6A34CDFF call <Server.System.@LStrAsg>
  51. 0073187A . 8D4D 94 lea ecx,dword ptr ss:[ebp-0x6C]
  52. 0073187D . BA FC1B7300 mov edx,Server.00731BFC ; Modules
  53. 00731882 . A1 20957400 mov eax,dword ptr ds:[0x749520]
  54. 00731887 . E8 2823CFFF call <Server.Classes.TStrings.GetValue>
复制代码


通过已上分析可以猜想加密之前的字符串为
        UserName=123,License=123456,PDMSRun=1,RunTimes=1,LicenseIP=192.168.1.105,MacAddress=CC-AF-78-A2-14-E0,Modules=1

        再结合三.5可知
        字符串1:UserName=123,License=123456,PDMSRun=1,RunTimes=1,LicenseIP=192.168.1.105,MacAddress=CC-AF-78-A2-14-E0,Modules=1
        字符串2:kjjuoiu987*(&*(uuiyui*&^*789897UIOUI&*^*&^&*Tuytu

       过加密函数0070DC94处理过之后可得软件授权码。
       修改之前
       修改之后
       单步跟踪之后可在local.11中得到授权码
        然后将注册码考出,放在一个txt文件中再通过软件授权方式找到该文件即可。
        至此软件破解工作结束


虽然这篇朴文不是写的最好的,但我保证肯定是用心的。。。希望能被被坛主加入精华帖。。。期待。。。期待。。。


http://www.52pojie.cn/thread-578989-1-1.html




00

捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

0

主题

13

回帖

60

积分

注册会员

Rank: 2

积分
60
发表于 2017-3-22 11:27:58 | 显示全部楼层
登录可见评论
回复

使用道具 举报

0

主题

161

回帖

992

积分

高级会员

Rank: 4

积分
992
发表于 2019-3-11 08:38:08 | 显示全部楼层
登录可见评论
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2024-5-9 06:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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