吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11413|回复: 9
收起左侧

自动精灵2.0破解分析

[复制链接]
萧萧黄叶 发表于 2009-2-10 14:34
这是一个以前破的软件,很简单的,高手勿笑。
【文章标题】自动精灵2.0破解
【软件名称】自动精灵2.0
【软件大小】705KB
【软件类别】国产软件/系统辅助  
【软件授权】共享版
【软件语言】简体中文
【运行环境】NT/2000/XP
【更新时间】2004-12-15
【下载地址】http://www.newhua.com/soft/36951.htm
【破解作者】萧萧黄叶
【加壳方式】无
【使用工具】OllyICE,PEiD v0.94
【软件简介】
自动精灵是一款功能强大,精致美观,操作简便的计算机定时自动执行软件。她绝对是众多自动执行软件中最好的,出色的设计使您的操作更加简便,每一项功能都为您精心打造。她必将成为您的贴心助手。

主要功能:

◆定时关闭计算机

◆定时锁定计算机

◆定时重启

◆定时播放音乐 (可以设定播放列表、播放次数/播放时间)

◆定时提醒 (在指定时间提醒您该做某事了)

◆定时运行程序/打开文件/URL

定时选项可以设为指定时间执行或倒计时执行。
【详细过程】
第一步:探壳。
PEiD v0.94:Borland Delphi 6.0 - 7.0
无壳。
第二步:OD分析
OD载入后停在下面:
004EF5AC >/$  55            PUSH EBP                                 ;  程序载入后停在这里。
004EF5AD  |.  8BEC          MOV EBP,ESP
004EF5AF  |.  B9 05000000   MOV ECX,5

F9运行程序,进行注册,我的序列号是:789203629,先用假码123456789注册看看,提示注册失败:"注册码不正确!请核对一遍后重新输入!"
回到OD,查找超级字串,找到了提示内容,跟随到这里:
004ED620  |. /EB 32         JMP SHORT AutoStar.004ED654
004ED622  |> |6A 40         PUSH 40                                  ; /(initial cpu selection)
004ED624  |. |68 98D64E00   PUSH AutoStar.004ED698                   ; |自动精灵
004ED629  |. |68 28D74E00   PUSH AutoStar.004ED728                   ; |注册码不正确!请核对一遍后重新输入!

向上看看:
004ED4F9  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004ED4FB  |.  E8 B4E1FFFF   CALL AutoStar.004EB6B4                   ;  关键CALL
004ED500  |.  84C0          TEST AL,AL
004ED502      0F84 1A010000 JE AutoStar.004ED622                     ;  关键跳
004ED508  |.  6A 40         PUSH 40                                  ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
004ED50A  |.  68 98D64E00   PUSH AutoStar.004ED698                   ; |自动精灵
004ED50F  |.  68 C4D64E00   PUSH AutoStar.004ED6C4                   ; |注册成功!\r\r谢谢您的支持!


再向上,在004ED488处下断点,运行注册过程,程序被断在下面了:
004ED488  /.  55            PUSH EBP
004ED489  |.  8BEC          MOV EBP,ESP

向下F8单步:
004ED4A5  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
004ED4A8  |.  8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]
004ED4AE  |.  E8 15A1F7FF   CALL AutoStar.004675C8                   ;  这里判断注册码是否为空!
004ED4B3  |.  837D FC 00    CMP DWORD PTR SS:[EBP-4],0
004ED4B7  |.  75 2A         JNZ SHORT AutoStar.004ED4E3
004ED4B9  |.  6A 40         PUSH 40                                  ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
004ED4BB  |.  68 98D64E00   PUSH AutoStar.004ED698                   ; |自动精灵
004ED4C0  |.  68 A4D64E00   PUSH AutoStar.004ED6A4                   ; |注册码不能为空!请重新输入!
004ED4C5  |.  E8 9A9AF1FF   CALL <JMP.&user32.GetActiveWindow>       ; |[GetActiveWindow

接着就到达关键CALL了,跟进:
004EB6B4  /$  55            PUSH EBP                                 ;  从关键CALL跟进到这里。
004EB6B4  /$  55            PUSH EBP                                 ;  从关键CALL跟进到这里。此时寄存器EDX已经出现注册假码。
004EB6B5  |.  8BEC          MOV EBP,ESP

继续F8单步:
004EB6D2  |.  8BC3          MOV EAX,EBX
004EB6D4  |.  E8 A3010000   CALL AutoStar.004EB87C                   ;  这个CALL取得了程序的序列号。我的序列号为:789203629
004EB6D9  |.  8D4D F8       LEA ECX,DWORD PTR SS:[EBP-8]
004EB6DC  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
004EB6DF  |.  8BC3          MOV EAX,EBX
004EB6E1  |.  E8 3E030000   CALL AutoStar.004EBA24                   ;  这里对序列号进行了计算。跟进才行。
004EB6E6  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  经过上面的计算后寄存器中已经出现的正确的注册码,可以在下面的CALL处制作内存注册机。
004EB6E9  |.  E8 8E8FF1FF   CALL AutoStar.0040467C

跟进004EB6E1 CALL:
004EBA24  /$  55            PUSH EBP                                 ;  跟进到此!
004EBA25  |.  8BEC          MOV EBP,ESP
004EBA27  |.  6A 00         PUSH 0

F8:
004EBA44  |.  8BC2          MOV EAX,EDX
004EBA46  |.  E8 C9D2F1FF   CALL AutoStar.00408D14
004EBA4B  |.  8BD8          MOV EBX,EAX                              ;  上面的call将序列号转为十六进制,并放到EAX上,我的为2F0A4AAD。
004EBA4D  |.  8BC3          MOV EAX,EBX
004EBA4F  |.  B9 85000000   MOV ECX,85
004EBA54  |.  99            CDQ
004EBA55  |.  F7F9          IDIV ECX                                 ;  2F0A4AAD整除H85等于005A8B25
004EBA57  |.  69C0 AB000000 IMUL EAX,EAX,0AB                         ;  005A8B25乘HAB等于3C7AF1B7
004EBA5D  |.  35 FDC85C02   XOR EAX,25CC8FD                          ;  3C7AF1B7与25CC8FD作异或运算等于3E26394A
004EBA62  |.  99            CDQ
004EBA63  |.  33C2          XOR EAX,EDX                              ;  edx=0
004EBA65  |.  2BC2          SUB EAX,EDX
004EBA67  |.  05 68C4AC07   ADD EAX,7ACC468                          ;  3E26394A加7ACC468等于45D2FDB2
004EBA6C  |.  8BD8          MOV EBX,EAX
004EBA6E  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
004EBA71  |.  8BC3          MOV EAX,EBX
004EBA73  |.  E8 60D1F1FF   CALL AutoStar.00408BD8                   ;  将45D2FDB2转为十进制1171455410
004EBA78  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]             ;  下面取固定值。
004EBA7B  |.  BA 10BB4E00   MOV EDX,AutoStar.004EBB10                ;  ASCII "734618529841"
004EBA80  |.  E8 CF87F1FF   CALL AutoStar.00404254
004EBA85  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004EBA88  |.  E8 2F87F1FF   CALL AutoStar.004041BC
004EBA8D  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
004EBA90  |.  E8 E789F1FF   CALL AutoStar.0040447C                   ;  计算固定值的位数,C
004EBA95  |.  8BD8          MOV EBX,EAX
004EBA97  |.  85DB          TEST EBX,EBX
004EBA99  |.  7E 3A         JLE SHORT AutoStar.004EBAD5
004EBA9B  |.  BE 01000000   MOV ESI,1
004EBAA0  |>  8D45 EC       /LEA EAX,DWORD PTR SS:[EBP-14]
004EBAA3  |.  8B55 F4       |MOV EDX,DWORD PTR SS:[EBP-C]
004EBAA6  |.  8A5432 FF     |MOV DL,BYTE PTR DS:[EDX+ESI-1]
004EBAAA  |.  E8 F588F1FF   |CALL AutoStar.004043A4                  ;  按序取固定值的每一位。
004EBAAF  |.  8B45 EC       |MOV EAX,DWORD PTR SS:[EBP-14]
004EBAB2  |.  E8 5DD2F1FF   |CALL AutoStar.00408D14
004EBAB7  |.  8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]
004EBABA  |.  8A5402 FF     |MOV DL,BYTE PTR DS:[EDX+EAX-1]
004EBABE  |.  8D45 F0       |LEA EAX,DWORD PTR SS:[EBP-10]
004EBAC1  |.  E8 DE88F1FF   |CALL AutoStar.004043A4                  ;  用上面提取出来的数对应刚才计算好的序列号的十进制值,我的固定值第一位为7,所以就取1171455410的第7位:5
004EBAC6  |.  8B55 F0       |MOV EDX,DWORD PTR SS:[EBP-10]
004EBAC9  |.  8D45 FC       |LEA EAX,DWORD PTR SS:[EBP-4]
004EBACC  |.  E8 B389F1FF   |CALL AutoStar.00404484
004EBAD1  |.  46            |INC ESI
004EBAD2  |.  4B            |DEC EBX
004EBAD3  |.^ 75 CB         \JNZ SHORT AutoStar.004EBAA0             ;  一共12位,进行12次的循环。
004EBAD5  |>  8BC7          MOV EAX,EDI
004EBAD7  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ;  堆栈中出现正确的注册码了。我的为571514411411
004EBADA  |.  E8 3187F1FF   CALL AutoStar.00404210

我们不是要爆破,所以怎么对比就不要看了。

总结一下:
算法过程就是先将序列号转换为十六进制
设序列号为TXT1
txt1=txt1 \ 133(h85)
txt1=txt1 *171(hab)
txt1=txt1 xor 39635197(h25CC8FD)
txt1=txt1 + 128762984(h7ACC468)
txt2="734618529841"
从txt2上按序取值再对照txt1取数字就组成正确的注册码了。
【总结】从软件安全的角度看,此软件一没有加壳,二为明码比较,三是算法简单。




【破解声明】本文只是出于教学目的,请勿用于商业用途,否则后果自负。软件版权归作者所有。

[ 本帖最后由 萧萧黄叶 于 2009-2-10 14:35 编辑 ]
自动精灵2.0注册截图.JPG

自动精灵2.0注册机.rar

709 Bytes, 下载次数: 45, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 1威望 +1 收起 理由
Hmily + 1 感谢发布原创作品,[吾爱破解]因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

xie83544109 发表于 2009-2-11 14:12
学习中
谢谢
小马甲 发表于 2009-2-12 10:16
a2213572 发表于 2009-2-12 11:05
WAPJ8833341 发表于 2009-2-12 17:49
[s:217] 很不错呢,还有破文可以学习。
楼主辛苦咯
675550115 发表于 2009-2-19 21:45
我汗!!老是老必
lbmx8 发表于 2009-2-27 23:56
越简单越是宝。谢谢楼主!
hsuguowei 发表于 2009-3-1 11:24
学习了,新手,看不太懂!不过还是长见实了
kissmebbs 发表于 2009-3-2 19:41
感谢分享,谢谢。。。。
yncxhcd 发表于 2009-3-22 12:47
我支持你下 下载收藏
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 17:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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