首页
社区
课程
招聘
[原创]通用网络考试系统V2.2 注册机
发表于: 2008-4-14 20:40 4928

[原创]通用网络考试系统V2.2 注册机

2008-4-14 20:40
4928
【文章标题】: 通用网络考试系统V2.2 注册机
【文章作者】: hctfly
【软件名称】: 通用网络考试系统V2.2
【软件大小】: 4.42M
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 无
【编写语言】: VB5
【使用工具】: SmartCheck PEiD OllyICE
【操作平台】: Windows
【软件介绍】: 局域网考试系统
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
     因朋友发了这个软件给我叫我帮他破解。其实我也是个很菜很菜的菜鸟,既然朋友叫到试试。(请高手远离)
  
  首先用Peid测一下,哎没加壳而且是用VB5.0写的。还好不用脱壳。(对壳的了解还在学习中)
  
  拿出收藏的工具(其实是从看雪下载的。感谢看雪)SmartCheck 调试!按下注册键,然后在SmartCheck 的 Events 视窗
  内找到 Command6_Click 按前面的[+] 下面就是按“注册”键后所发生的事件,分析这些事件后发现产品ID的生成。是通
  过在当前用户的 TEMP 目录下生成一个随机的文件其实现为
  (Shell "Command.com /C ipconfig /all >C:\Docume~1\Admini~1\Locals~1\Temp\随机数.TXT"),然后从产生的文件中
  通过行读取的方式读取出MAC地址,然后去除MAC地址间的“-”得出一个不含"-"的字符串。(MAC:“00-E0-4C-3E-AB-10”
  为“00E04C3EAB10”,然后最从这个字符串中从右边取出奇数位的字符转换成ASC码再转换成字符,得到的字符串为
  “486669674848”再与这前的字符串连接生成产品ID号:“48666967484800E04C3EAB10”。(产品ID的产生知道,注册码
  应该不远了吧!有点激动。)
  
      继续往下分析发现出现的都是:
                Mid                          ;不难看出这是从产品ID中取出一位
                Asc returns Integer:48       ;把取出的转换成ASC
                Double(443)-->String("443")  ;这个Double数从哪来的呢???
  
      我试着把所有 Double 转换成字符的数,组成字符串,输入注册码中,按注册。成功啦!
  
      注册码是找到了可是这些DOUBLE字是从哪来的呢??? 看来用SmartCheck 分析不出算法了,只好拿出OllyICE 啦!
  
  用OllyICE 载入程序然后在代码中找到下面这行按“F2”在此处下断。
  
  经 SmartCheck 分析发现第六次调用VB中的“LEN”函数时就开始计算注码册码。所以在代码中找到以下代后按“F2”下断
  
  00402098   $- FF25 BC724200 jmp     dword ptr [<&MSVBVM50.__vbaLenBs>;  MSVBVM50.__vbaLenBstr
  
  按6次“F9”然使用“F8”跟进到 RET 返回到如下:
  
  004222AB   .  E8 E8FDFDFF   call    <jmp.&MSVBVM50.__vbaLenBstr>     ; \__vbaLenBstr   
  004222B0   .  8945 E8       mov     dword ptr [ebp-18], eax
  004222B3   .  EB 0F         jmp     short 004222C4
  004222B5   >  8B45 E8       mov     eax, dword ptr [ebp-18]
  004222B8   .  0345 90       add     eax, dword ptr [ebp-70]
  004222BB   .  0F80 52010000 jo      00422413
  004222C1   .  8945 E8       mov     dword ptr [ebp-18], eax
  004222C4   >  8B45 E8       mov     eax, dword ptr [ebp-18]
  004222C7   .  3B45 8C       cmp     eax, dword ptr [ebp-74]
  004222CA   .  0F8C E4000000 jl      004223B4
  004222D0   .  C745 D0 01000>mov     dword ptr [ebp-30], 1
  004222D7   .  C745 C8 02000>mov     dword ptr [ebp-38], 2
  004222DE   .  8D45 E0       lea     eax, dword ptr [ebp-20]
  004222E1   .  8945 B0       mov     dword ptr [ebp-50], eax
  004222E4   .  C745 A8 08400>mov     dword ptr [ebp-58], 4008
  004222EB   .  8D45 C8       lea     eax, dword ptr [ebp-38]
  004222EE   .  50            push    eax                              ; /Length8
  004222EF   .  FF75 E8       push    dword ptr [ebp-18]               ; |Start
  004222F2   .  8D45 A8       lea     eax, dword ptr [ebp-58]          ; |
  004222F5   .  50            push    eax                              ; |dString8
  004222F6   .  8D45 B8       lea     eax, dword ptr [ebp-48]          ; |
  004222F9   .  50            push    eax                              ; |RetBUFFER
  004222FA   .  E8 21FDFDFF   call    <jmp.&MSVBVM50.#632>             ; \rtcMidCharVar   
  004222FF   .  FF75 E4       push    dword ptr [ebp-1C]
  00422302   .  8D45 B8       lea     eax, dword ptr [ebp-48]
  00422305   .  50            push    eax                              ; /String8
  00422306   .  8D45 DC       lea     eax, dword ptr [ebp-24]          ; |
  00422309   .  50            push    eax                              ; |ARG2
  0042230A   .  E8 17FDFDFF   call    <jmp.&MSVBVM50.__vbaStrVarVal>   ; \__vbaStrVarVal
  0042230F   .  50            push    eax                              ; /String
  00422310   .  E8 37FEFDFF   call    <jmp.&MSVBVM50.#516>             ; \rtcAnsiValueBstr
  00422315   .  0FBFC0        movsx   eax, ax
  00422318   .  0FAF45 E8     imul    eax, dword ptr [ebp-18]          ;把取出的字符转换成ASC码后乘以所在字符串中的位置。
  0042231C   .  0F80 F1000000 jo      00422413                         ;溢出跳转
  00422322   .  8945 80       mov     dword ptr [ebp-80], eax      
  00422325   .  DB45 80       fild    dword ptr [ebp-80]               ;把内存的数据载入双精度数据寄存器内ST0。其作用实现双精度转换
  00422328   .  DD9D 78FFFFFF fstp    qword ptr [ebp-88]               ;将ST0中的数据保存到指定的内存
  0042232E   .  DD85 78FFFFFF fld     qword ptr [ebp-88]
  00422334   .  833D 00304200>cmp     dword ptr [423000], 0
  0042233B   .  75 08         jnz     short 00422345
  0042233D   .  DC35 F01D4000 fdiv    qword ptr [401DF0]               ;双精度除法 即ST0/1.3 ds:[00401DF0]=1.300000000000000
  00422343   .  EB 11         jmp     short 00422356
  00422345   >  FF35 F41D4000 push    dword ptr [401DF4]
  0042234B   .  FF35 F01D4000 push    dword ptr [401DF0]
  00422351   .  E8 DEFAFDFF   call    <jmp.&MSVBVM50._adj_fdiv_m64>
  00422356   >  D9E1          fabs                                     ;计算绝对值
  00422358   .  DFE0          fstsw   ax                               ;读状态寄存器
  0042235A   .  A8 0D         test    al, 0D                           ;测试是否异常
  0042235C   .  0F85 AC000000 jnz     0042240E
  00422362   .  E8 B1FBFDFF   call    <jmp.&MSVBVM50.__vbaFPInt>       ;双精转整形
  00422367   .  51            push    ecx
  00422368   .  51            push    ecx
  00422369   .  DD1C24        fstp    qword ptr [esp]
  0042236C   .  E8 D9FCFDFF   call    <jmp.&MSVBVM50.__vbaStrR8>       ;转成字符串
  
  至此算法就完全出来了。
  
  以下是把这此字符串连接起来最终成为注册码。
  
  00422371   .  8BD0          mov     edx, eax
  00422373   .  8D4D D8       lea     ecx, dword ptr [ebp-28]
  00422376   .  E8 4BFCFDFF   call    <jmp.&MSVBVM50.__vbaStrMove>
  0042237B   .  50            push    eax                              ; /String
  0042237C   .  E8 1BFCFDFF   call    <jmp.&MSVBVM50.__vbaStrCat>      ; \__vbaStrCat
  00422381   .  8BD0          mov     edx, eax
  00422383   .  8D4D E4       lea     ecx, dword ptr [ebp-1C]
  00422386   .  E8 3BFCFDFF   call    <jmp.&MSVBVM50.__vbaStrMove>
  0042238B   .  8D45 D8       lea     eax, dword ptr [ebp-28]
  0042238E   .  50            push    eax
  0042238F   .  8D45 DC       lea     eax, dword ptr [ebp-24]
  00422392   .  50            push    eax
  00422393   .  6A 02         push    2
  00422395   .  E8 0CFBFDFF   call    <jmp.&MSVBVM50.__vbaFreeStrList>
  0042239A   .  83C4 0C       add     esp, 0C
  0042239D   .  8D45 B8       lea     eax, dword ptr [ebp-48]
  004223A0   .  50            push    eax
  004223A1   .  8D45 C8       lea     eax, dword ptr [ebp-38]
  004223A4   .  50            push    eax
  004223A5   .  6A 02         push    2
  004223A7   .  E8 08FCFDFF   call    <jmp.&MSVBVM50.__vbaFreeVarList>
  004223AC   .  83C4 0C       add     esp, 0C
  004223AF   .^ E9 01FFFFFF   jmp     004222B5
  
  算法出来了,现在就用VB6来写其注册机。
  
  要写此注册机大概分三步。
  
  首先是要取网卡MAC地址。跟据其原理可写成如下:
  Dim sID As String
  Private Sub Form_Load()
  Shell "command.com /c ipconfig /all >C:\AC.txt"  ;通过ipconfig /all 把网卡信息保存到AC.txt文件中
  End Sub
  
  
  第二步读取MAC地址及转换成产品ID码:
  Private Sub Command1_Click()
  
  Dim nnID As Double, nnnID As Double
  Dim nLen As Long, tstr As String
  
  Open "C:\AC.txt" For Input As #1
  Do While Not EOF(1)   ' 循环至文件尾。
     Line Input #1, TextLine   ' 读入一行数据并将其赋予某变量。
     TextLine = Trim(TextLine)
     If Left(TextLine, 16) = "Physical Address" Then
        sID = Right(TextLine, 17)
        sID = Replace(sID, "-", "")
        Exit Do
     End If
  Loop
  Close #1
  
  nLen = Len(sID)
  Text1.Text = ""
  For i = 0 To nLen - 1 Step 2
    Text1.Text = Text1.Text & Asc(Mid(Text1.Text, nLen - i, 1))
  Next
  Text1.Text = Text1.Text & sID
  
  第三步:生成注册码
  
  Text2.Text = ""
  nLen = Len(sID)
   For i = 0 To nLen - 1
      tstr = Mid(sID, nLen - i, 1)
      nnID = Asc(tstr) * (nLen - i)
      Text2.Text = Text2.Text & Fix(nnID / nnnID)
   Next
  End Sub
  
  Private Sub Form_Unload(Cancel As Integer)
  Kill "C:\AC.txt"
  End Sub
  
  
  此软件注册算法比较简单。请各位大虾不要笑话。这是我这个菜鸟第一次写破文,请各位大虾多多指教!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年04月14日 20:39:52

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gwh
2
做了一次沙发,学习了,不错,适合新手
2008-4-14 23:50
0
雪    币: 209
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
怎么没人支持一下呢?
2008-4-17 19:39
0
雪    币: 50161
活跃值: (20620)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
2008-4-17 21:07
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了。
2008-4-18 13:08
0
雪    币: 119
活跃值: (313)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了,辛苦
2008-4-18 13:31
0
游客
登录 | 注册 方可回帖
返回
//