自动精灵2.0破解分析
这是一个以前破的软件,很简单的,高手勿笑。【文章标题】自动精灵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:
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:
004ED4A8|.8B83 04030000 MOV EAX,DWORD PTR DS:
004ED4AE|.E8 15A1F7FF CALL AutoStar.004675C8 ;这里判断注册码是否为空!
004ED4B3|.837D FC 00 CMP DWORD PTR SS:,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:
004EB6DC|.8B55 FC MOV EDX,DWORD PTR SS:
004EB6DF|.8BC3 MOV EAX,EBX
004EB6E1|.E8 3E030000 CALL AutoStar.004EBA24 ;这里对序列号进行了计算。跟进才行。
004EB6E6|.8B45 F8 MOV EAX,DWORD PTR SS: ;经过上面的计算后寄存器中已经出现的正确的注册码,可以在下面的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:
004EBA71|.8BC3 MOV EAX,EBX
004EBA73|.E8 60D1F1FF CALL AutoStar.00408BD8 ;将45D2FDB2转为十进制1171455410
004EBA78|.8D45 F4 LEA EAX,DWORD PTR SS: ;下面取固定值。
004EBA7B|.BA 10BB4E00 MOV EDX,AutoStar.004EBB10 ;ASCII "734618529841"
004EBA80|.E8 CF87F1FF CALL AutoStar.00404254
004EBA85|.8D45 FC LEA EAX,DWORD PTR SS:
004EBA88|.E8 2F87F1FF CALL AutoStar.004041BC
004EBA8D|.8B45 F4 MOV EAX,DWORD PTR SS:
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:
004EBAA3|.8B55 F4 |MOV EDX,DWORD PTR SS:
004EBAA6|.8A5432 FF |MOV DL,BYTE PTR DS:
004EBAAA|.E8 F588F1FF |CALL AutoStar.004043A4 ;按序取固定值的每一位。
004EBAAF|.8B45 EC |MOV EAX,DWORD PTR SS:
004EBAB2|.E8 5DD2F1FF |CALL AutoStar.00408D14
004EBAB7|.8B55 F8 |MOV EDX,DWORD PTR SS:
004EBABA|.8A5402 FF |MOV DL,BYTE PTR DS:
004EBABE|.8D45 F0 |LEA EAX,DWORD PTR SS:
004EBAC1|.E8 DE88F1FF |CALL AutoStar.004043A4 ;用上面提取出来的数对应刚才计算好的序列号的十进制值,我的固定值第一位为7,所以就取1171455410的第7位:5
004EBAC6|.8B55 F0 |MOV EDX,DWORD PTR SS:
004EBAC9|.8D45 FC |LEA EAX,DWORD PTR SS:
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: ;堆栈中出现正确的注册码了。我的为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 编辑 ] 学习中
谢谢:lol 恩不错不错,有前途:handshake 自動關閉電腦的軟體.蠻有用的
感謝分享! 很不错呢,还有破文可以学习。
楼主辛苦咯 我汗!!老是老必 越简单越是宝。谢谢楼主! 学习了,新手,看不太懂!不过还是长见实了 感谢分享,谢谢。。。。 我支持你下 下载收藏
页:
[1]