频道栏目
首页 > 资讯 > 加密解密 > 正文

系统优化大师V2007算法分析

11-01-14        来源:[db:作者]  
收藏   我要投稿

文/图 阿达.浓咖啡
最近自己的系统总是有些小问题,因为自己学习、研究软件程序逆向的需要,要定期格式化系统。这次犯懒了,就到网上谷歌一下系统优化方面的软件,嘿!一大堆!就用这个吧!“系统优化大师V2007”,可运行使用却需要注册,不注册一些功能会被禁止使用。这个问题对于自己好像不是难事,立刻拿出工具,三下五除二找到注册码,成功注册!顺利的完成了系统的清理、优化工作。等手上的工作都结束后,有点时间,又想起了那个系统优化大师V2007,忍不住想探究一下程序的注册算法是如何进行的,于是就有了下面的算法分析。
 
软件简介
系统优化大师被评为2005年中国10个最优秀共享软件之一。软件全方位、高效、安全地提高你的系统性能,使用简单,傻瓜式操作,可能迅速达到系统优化目的。包括桌面优化、菜单优化、网络优化、软件优化、系统优化以及禁用设置、选择设置、更改设置等一系列个性化优化及设置选项。它还可以进行高速的注册表清理及高速的硬盘垃圾文件清理,清理全面、安全、不影响任何运行性能。
原程序本身加的是ASP2.12压缩壳,黑防多次谈过此类压缩壳的脱法,这里就不介绍了,用ESP定律或PEiD插件就可以完成,比较简单。该软件使用Borland Delphi 6.0-7.0程序编写。
  
分析过程
用OD载入脱壳后的程序,利用OD的插件“超级字符串查找”,搜索关键字符“注册成功”,很容易找到这些关键字符,程序作者在程序中对字符没做任何处理,如图1所示。

图1
双击“注册成功”这行代码,就会来到反汇编窗口,一直向上找到段首,下好 F2断点。然后F9运行出注册界面,输入确认码 987,假码xuhw。点注册后,程序就会断下来,停在下面的代码处。
0054E2C8  /.  55  push  ebp  ;段首 F2
0054E2C9  |.  8BEC  mov  ebp, esp
0054E2CB  |.  B9 18000000  mov  ecx, 18
0054E2D0  |>  6A 00  /push  0
0054E2D2  |.  6A 00  |push  0
0054E2D4  |.  49  |dec  ecx
0054E2D5  |.^ 75 F9  jnz  short 0054E2D0
0054E2D7  |.  51  push  ecx
0054E2D8  |.  53  push  ebx
0054E2D9  |.  56  push  esi
0054E2DA  |.  57  push  edi
0054E2DB  |.  8BD8  mov  ebx, eax
0054E2DD  |.  33C0  xor  eax, eax
0054E2DF  |.  55  push  ebp
0054E2E0  |.  68 06E65400  push  0054E606
0054E2E5  |.  64:FF30  push  dword ptr fs:[eax]
0054E2E8  |.  64:8920  mov  dword ptr fs:[eax], esp
0054E2EB  |.  B2 01  mov  dl, 1
0054E2ED  |.  A1 08634800  mov  eax, dword ptr [486308]
0054E2F2  |.  E8 7D81F3FF  call  00486474
0054E2F7  |.  8B15 C8045E00 mov  edx, dword ptr [5E04C8] ; yhds_exe.005E2E30
0054E2FD  |.  8902  mov  dword ptr [edx], eax
0054E2FF  |.  A1 C8045E00  mov  eax, dword ptr [5E04C8]
0054E304  |.  8B00  mov  eax, dword ptr [eax]
0054E306  |.  BA 02000080  mov  edx, 80000002
0054E30B  |.  E8 4082F3FF  call  00486550
0054E310  |.  A1 C8045E00  mov  eax, dword ptr [5E04C8]
0054E315  |.  8B00  mov  eax, dword ptr [eax]
0054E317  |.  B1 01  mov  cl, 1
0054E319  |.  BA 20E65400  mov  edx, 0054E620
;ASCII "SOFTWAREMicrosoftYhds"
0054E31E  |.  E8 7183F3FF  call  00486694
0054E323  |.  68 80000000  push  80 ; /BufSize = 80 (128.)
0054E328  |.  8D85 7BFFFFFF lea  eax, dword ptr [ebp-85]; |
0054E32E  |.  50  push  eax  ; |Buffer
0054E32F  |.  E8 2893EBFF  call  <jmp.&KERNEL32.GetSystemDirector>; GetSystemDirectoryA
0054E334  |.  8D45 FC  lea  eax, dword ptr [ebp-4]
0054E337  |.  8D95 7BFFFFFF lea  edx, dword ptr [ebp-85]
0054E33D  |.  B9 81000000  mov  ecx, 81
0054E342  |.  E8 016AEBFF  call  00404D48
0054E347  |.  8D95 74FFFFFF lea  edx, dword ptr [ebp-8C]
0054E34D  |.  8B83 FC020000 mov  eax, dword ptr [ebx+2FC]
0054E353  |.  E8 0C1CF0FF  call  0044FF64  ;确认码 987
0054E358  |.  83BD 74FFFFFF>cmp  dword ptr [ebp-8C], 0  ;是否输入确认码
0054E35F  |.  74 1A  je   short 0054E37B  ;空就跳出
0054E361  |.  8D95 70FFFFFF lea  edx, dword ptr [ebp-90]
0054E367  |.  8B83 04030000 mov  eax, dword ptr [ebx+304]
0054E36D  |.  E8 F21BF0FF  call  0044FF64  ;注册码 xuhw
0054E372  |.  83BD 70FFFFFF>cmp  dword ptr [ebp-90], 0  ;是否输入注册码
0054E379  |.  75 0F  jnz  short 0054E38A
0054E37B  |>  B8 40E65400  mov  eax, 0054E640
0054E380  |.  E8 33A8EFFF  call  00448BB8
0054E385  |.  E9 DF010000  jmp  0054E569
0054E38A  |>  8D95 68FFFFFF lea  edx, dword ptr [ebp-98]
0054E390  |.  8B83 04030000 mov  eax, dword ptr [ebx+304]
0054E396  |.  E8 C91BF0FF  call  0044FF64
0054E39B  |.  8B85 68FFFFFF mov  eax, dword ptr [ebp-98]  ;假码放入EAX
0054E3A1  |.  8D95 6CFFFFFF lea  edx, dword ptr [ebp-94]
0054E3A7  |.  E8 5CB4EBFF  call  00409808
0054E3AC  |.  8B85 6CFFFFFF mov  eax, dword ptr [ebp-94]  ;假码放入EAX
0054E3B2  |.  50  push  eax
0054E3B3  |.  8D95 5CFFFFFF lea  edx, dword ptr [ebp-A4]
0054E3B9  |.  8B83 FC020000 mov  eax, dword ptr [ebx+2FC]
0054E3BF  |.  E8 A01BF0FF  call  0044FF64
0054E3C4  |.  8B85 5CFFFFFF mov  eax, dword ptr [ebp-A4]  ;确认码放入EAX
0054E3CA  |.  E8 35B7EBFF  call  00409B04
;对确认码逐位计算,得到一个值 A F7进
0054E3CF  |.  B9 48000000  mov  ecx, 48 ;除数为48
0054E3D4  |.  99  cdq
0054E3D5  |.  F7F9  idiv  ecx  ;A/48
0054E3D7  |.  8BC2  mov  eax, edx  ;余数放入EAX
0054E3D9  |.  8D95 60FFFFFF lea  edx, dword ptr [ebp-A0]
0054E3DF  |.  E8 40B6EBFF  call  00409A24
0054E3E4  |.  8D85 60FFFFFF lea  eax, dword ptr [ebp-A0]
0054E3EA  |.  50  push  eax
0054E3EB  |.  8D95 50FFFFFF lea  edx, dword ptr [ebp-B0]
0054E3F1  |.  8B83 FC020000 mov  eax, dword ptr [ebx+2FC]
0054E3F7  |.  E8 681BF0FF  call  0044FF64
0054E3FC  |.  8B85 50FFFFFF mov  eax, dword ptr [ebp-B0]  ;确认码放入EAX
0054E402  |.  E8 FDB6EBFF  call  00409B04
0054E407  |.  8D95 54FFFFFF lea  edx, dword ptr [ebp-AC]
0054E40D  |.  E8 16FCFFFF  call  0054E028  ;根据A计算
0054E412  |.  8B85 54FFFFFF mov  eax, dword ptr [ebp-AC]  ;特征码T
0054E418  |.  E8 E7B6EBFF  call  00409B04
0054E41D  |.  8D95 58FFFFFF lea  edx, dword ptr [ebp-A8]  ; T转换成16进制
0054E423  |.  E8 E0FCFFFF  call  0054E108  ;对T计算
0054E428  |.  8B95 58FFFFFF mov  edx, dword ptr [ebp-A8]  ;计算出真码
0054E42E  |.  58  pop  eax
0054E42F  |.  E8 6C69EBFF  call  00404DA0
0054E434  |.  8B85 60FFFFFF mov  eax, dword ptr [ebp-A0]  ;计算结果放入EAX
0054E43A  |.  8D95 64FFFFFF lea  edx, dword ptr [ebp-9C]
0054E440  |.  E8 C3B3EBFF  call  00

相关TAG标签
上一篇:详解圣诞、元旦、春节许愿树脚本程序漏洞
下一篇:用Linux下的代理服务器保护主干网
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站