hs55555 发表于 2008-3-10 17:30:28

远支楼坛瘫冉氐

z2662050 发表于 2008-4-19 18:16:07

谢谢。下载学学。

mixue 发表于 2008-4-22 13:44:13

修改机器码? 下载学习下~

yyb1813 发表于 2010-2-9 09:21:35

58之后来个59,不错不错

a2006 发表于 2010-5-22 11:19:08

看看不错啊,

lan 发表于 2010-7-17 01:50:19

呵呵·顶了

MXXAPJ 发表于 2012-1-2 13:53:20

好东东!

决胜千里 发表于 2014-2-16 08:16:54

这个下载不了,请楼主解决。
【破解过程】一朋友花8000买的一软件因为重装系统导致改软件机器码变了,再去找软件开发商,算次号竟然还要2000元。汗,这世道.听朋友说这个软件在双色球缩水方面还是不错的,虽然是2005版.但目前售价还是几千.且无试用版本人技术比较菜,花了2天还只破解他的一些限制.但改软件有自校验之类的东东吧.被修改后所得出的缩水结果为随机的最后才在北极狐狸的帮助下结合这几天的分析终于有点头绪.现记下此文和大家分享.
废话不说下查壳,Borland Delphi 4.0 - 5.0 无壳。看了下 重启验证+注册表验证
输入错误验证码后提示:重新打开程序后既可生效
CMD运行REGEDIT 注册码保存注册表HKEY_LOCAL_MACHINE\SOFTWARE\华彩网\英豪双色球中奖大师下
试了几种重启验证破解的方法,但是都无结果 可能是我太菜
软件默认只能输入注册码机器码栏是灰色的 可以通过ResScope修改 但没什么用
废话不多说
OD载入
bp GetVolumeInformationA下断F9运行
断在7C821BA5 >6A 44         PUSH 44/////看堆栈
0012FCEC   0048A683/CALL 到 GetVolumeInformationA 来自 YingSsq.0048A67E//反汇编窗口跟随
0012FCF0   0048A830|RootPathName = "c:\"
0012FCF4   0012FE58|VolumeNameBuffer = 0012FE58
0012FCF8   00000100|MaxVolumeNameSize = 100 (256.)
0012FCFC   0012FF60|pVolumeSerialNumber = 0012FF60
0012FD00   0012FF5C|pMaxFilenameLength = 0012FF5C
0012FD04   0012FF58|pFileSystemFlags = 0012FF58



来到了
0048A678   .50            PUSH EAX                                 ; |VolumeNameBuffer
0048A679   .68 30A84800   PUSH YingSsq.0048A830                  ; |c:\
0048A67E   .E8 05C6F7FF   CALL <JMP.&kernel32.GetVolumeInformation>; \GetVolumeInformationA
0048A683   .85C0          TEST EAX,EAX                           //F2下断 F9运行
0048A685   .74 39         JE SHORT YingSsq.0048A6C0
0048A687   .8D95 E4FEFFFF LEA EDX,DWORD PTR SS:
0048A68D   .0FB745 F2   MOVZX EAX,WORD PTR SS:
0048A691   .E8 46E5F7FF   CALL YingSsq.00408BDC
0048A696   .8B85 E4FEFFFF MOV EAX,DWORD PTR SS:
0048A69C   .50            PUSH EAX                            ASCII "33943
0048A69D   .8D95 E0FEFFFF LEA EDX,DWORD PTR SS:
0048A6A3   .0FB745 F0   MOVZX EAX,WORD PTR SS:
0048A6A7   .E8 30E5F7FF   CALL YingSsq.00408BDC
0048A6AC   .8B95 E0FEFFFF MOV EDX,DWORD PTR SS:   ASCII "41808"

走到
0048A6D5   .8378 2C 00    CMP DWORD PTR DS:,0   ASCII "4180833943"
0048A6D9   .74 27         JE SHORT YingSsq.0048A702
0048A6DB   .8D8D CCFEFFFF LEA ECX,DWORD PTR SS:
0048A6E1   .8B45 FC       MOV EAX,DWORD PTR SS:
0048A6E4   .8B50 2C       MOV EDX,DWORD PTR DS:
0048A6E7   .8B45 FC       MOV EAX,DWORD PTR SS:
0048A6EA   .E8 BD040000   CALL YingSsq.0048ABAC
0048A6EF   .8D95 CCFEFFFF LEA EDX,DWORD PTR SS:
0048A6F5   .8B45 FC       MOV EAX,DWORD PTR SS:

0048A6D9   . /74 27         JE SHORT YingSsq.0048A702
0048A6DB   . |8D8D CCFEFFFF LEA ECX,DWORD PTR SS:
0048A6E1   . |8B45 FC       MOV EAX,DWORD PTR SS:
0048A6E4   . |8B50 2C       MOV EDX,DWORD PTR DS:
0048A6E7   . |8B45 FC       MOV EAX,DWORD PTR SS:
0048A6EA   . |E8 BD040000   CALL YingSsq.0048ABAC
0048A6EF   . |8D95 CCFEFFFF LEA EDX,DWORD PTR SS:注意这里 看注释窗口
堆栈地址=0012FE3C, (ASCII 10,"7538632721381535")   计算后的机器码,在这里右健 在数据窗口中跟随地址
EDX=00EE1B54, (ASCII "4180833943")   
此时再到数据窗口 右健 选择 文本→ASCII64 或者32 显示 这时出现了
0012FE3C7538632721381535?@?,?........(|M....旫.4囇w?2...
选中7538632721381535按回车就可以修改机器码这里随便输入个的机器码    1111111111111111
修改机器,到这就结束了
还没完下面直接
Ctrl+G 在 00402895
00402895|> /01D6          ADD ESI,EDX             //断点F9运行两次
00402897|. |880F          MOV BYTE PTR DS:,CL
00402899|. |47            INC EDI
0040289A|. |F3:A4         REP MOVS BYTE PTR ES:,BYTE PTR DS:[>


查看 ESI为注册码
EDX=00000001
ESI=0012FEFC, (ASCII 10,"7813891865996037")
Jumps from 004028A7, 004028AB

OK 程序就是这样自己成为注册机的
算法的主要内容!
0048AF2D|> /8B4D EC       /mov   ecx, dword ptr              ;计数器 0~15 (注册号是16位的)
0048AF30|. |BA 09000000   |mov   edx, 9                              ;这个数字是用来计算的(在下面我称它为a).. 下面雷同
0048AF35|. |8B45 F4       |mov   eax, dword ptr             ;这是个也是用于计算的(在下面我称它为b)...{二进制16}
0048AF38|. |E8 73F6FFFF   |call    0048A5B0                            ;这里应该跟进的....
0048AF3D|. |8A4405 D2   |mov   al, byte ptr ;这里用到机器码,安计算出的数字选泽相对应得数
                                                                  ;比如:
                                                                  ;call 中计算出是2 选择机器码中第2个为计算结果
                                                                   ;以下前三个call计算雷同!
0048AF41|. |8845 E7       |mov   byte ptr , al
0048AF44|. |8B4D EC       |mov   ecx, dword ptr
0048AF47|. |BA 05000000   |mov   edx, 5
0048AF4C|. |8B45 F4       |mov   eax, dword ptr
0048AF4F|. |E8 5CF6FFFF   |call    0048A5B0
0048AF54|. |8A4405 D2   |mov   al, byte ptr
0048AF58|. |8845 E6       |mov   byte ptr , al
0048AF5B|. |8B4D EC       |mov   ecx, dword ptr
0048AF5E|. |BA 02000000   |mov   edx, 2
0048AF63|. |8B45 F4       |mov   eax, dword ptr
0048AF66|. |E8 45F6FFFF   |call    0048A5B0
0048AF6B|. |8A4405 D2   |mov   al, byte ptr
0048AF6F|. |8845 E5       |mov   byte ptr , al
0048AF72|. |8B4D EC       |mov   ecx, dword ptr
0048AF75|. |BA 08000000   |mov   edx, 8
0048AF7A|. |8B45 F0       |mov   eax, dword ptr       ;此值为19(二进制)
0048AF7D|. |E8 2EF6FFFF   |call    0048A5B0                  ;以下两call的计算结果是在密码表中选对应的结果
0048AF82|. |BA 50B04800   |mov   edx, 0048B050                密码表地址 0048B050~0048B063
0048AF87|. |8A4402 FF   |mov   al, byte ptr
0048AF8B|. |8845 E4       |mov   byte ptr , al
0048AF8E|. |8B4D EC       |mov   ecx, dword ptr
0048AF91|. |BA 01000000   |mov   edx, 1
0048AF96|. |8B45 F0       |mov   eax, dword ptr
0048AF99|. |E8 12F6FFFF   |call    0048A5B0
0048AF9E|. |BA 50B04800   |mov   edx, 0048B050
0048AFA3|. |8A4402 FF   |mov   al, byte ptr
0048AFA7|. |8845 E3       |mov   byte ptr , al       --------------
0048AFAA|. |33C0          |xor   eax, eax                                 |
0048AFAC|. |8A45 E4       |mov   al, byte ptr                   |
0048AFAF|. |33D2          |xor   edx, edx                                 |
0048AFB1|. |8A55 E7       |mov   dl, byte ptr
0048AFB4|. |F7EA          |imul    edx
0048AFB6|. |33D2          |xor   edx, edx
0048AFB8|. |8A55 E6       |mov   dl, byte ptr
0048AFBB|. |33C9          |xor   ecx, ecx                     ; 这之间的计算是{*+*+}/10的余数
0048AFBD|. |8A4D E3       |mov   cl, byte ptr
0048AFC0|. |0FAFD1      |imul    edx, ecx                         ; 这边的计算时把机器码的字符换成ASCII码!
0048AFC3|. |03C2          |add   eax, edx
0048AFC5|. |33D2          |xor   edx, edx
0048AFC7|. |8A55 E5       |mov   dl, byte ptr                   
0048AFCA|. |03C2          |add   eax, edx                                 
0048AFCC|. |B9 0A000000   |mov   ecx, 0A                                 
0048AFD1|. |33D2          |xor   edx, edx                                 
0048AFD3|. |F7F1          |div   ecx                     
0048AFD5|. |8955 E8       |mov   dword ptr , edx
0048AFD8|. |8B45 E8       |mov   eax, dword ptr
0048AFDB|. |E8 00F6FFFF   |call    0048A5E0
0048AFE0|. |8B55 F8       |mov   edx, dword ptr
0048AFE3|. |8B4D EC       |mov   ecx, dword ptr
0048AFE6|. |88440A 01   |mov   byte ptr , al
0048AFEA|. |FF45 EC       |inc   dword ptr
0048AFED|. |837D EC 10    |cmp   dword ptr , 10
0048AFF1|.^\0F85 36FFFFFF \jnz   0048AF2D


-----------------------------------------------------------------------
下面是跟进的内容
0048A5B0/$55            push    ebp
0048A5B1|.8BEC          mov   ebp, esp
0048A5B3|.83C4 F0       add   esp, -10
0048A5B6|.894D F4       mov   dword ptr , ecx
0048A5B9|.8955 F8       mov   dword ptr , edx
0048A5BC|.8945 FC       mov   dword ptr , eax
0048A5BF|.8B45 F8       mov   eax, dword ptr
0048A5C2|.0345 F4       add   eax, dword ptr
0048A5C5|.99            cdq
0048A5C6|.F77D FC       idiv    dword ptr
0048A5C9|.8955 F0       mov   dword ptr , edx
0048A5CC|.837D F0 00    cmp   dword ptr , 0
0048A5D0|.75 06         jnz   short 0048A5D8
0048A5D2|.8B45 FC       mov   eax, dword ptr
0048A5D5|.8945 F0       mov   dword ptr , eax
0048A5D8|>8B45 F0       mov   eax, dword ptr
0048A5DB|.8BE5          mov   esp, ebp
0048A5DD|.5D            pop   ebp
0048A5DE\.C3            retn


这个计算没有什么大用处!
主要是把 (a+计数器值)/b的余数作为结果返回
附上狐狸的VBS注册机

db=array(211,162,186,192,203,171,201,171,199,242,214,208,189,177,180,243,202,166,32,0)
dim strar(16)
dim temp(16)
str1=inputbox("输入机器码"," 中奖 ------计算器")
for i = 0 to 15
strar(i)=left(str1,1)
str1=right(str1,len(str1)-1)
next
for i = 0 to 15

a=(9+i) mod 16
if a=0 then
a=16
end if

b=(5+i) mod 16
if b=0 then
b=16
end if

c=(2+i) mod 16
if c=0 then
c=16
end if

d=(8+i) mod 19
if d=0 then
d=19
end if

e=(1+i) mod 19
if e=0 then
e=19
end if
an= p(strar(a-1))
bn= p(strar(b-1))
cn= p(strar(c-1))
dn=db(d-1)
en=db(e-1)
temp(i)=(dn*an+bn*en+cn) mod 10
temps=temps & temp(i)
next

i=inputbox("注册码"," 中奖 ------计算器", temps)

Public function p(s)
select case s
   case 0
   p=asc("0")
   case 1
   p=asc("1")
   case 2
   p=asc("2")
   case 3
   p=asc("3")
   case 4
   p=asc("4")
   case 5
   p=asc("5")
   case 6
   p=asc("6")
   case 7
   p=asc("7")
   case 8
   p=asc("8")
   case 9
   p=asc("9")
end select
end function

保存为VBS就可以

            

三线八角 发表于 2014-2-16 09:27:39

太菜,实在看不懂!!

jinbiao911 发表于 2014-8-9 09:06:14

看看也不错,新办的网站有特色
页: 1 [2] 3
查看完整版本: 修改机器码让软件成为注册机(破解英豪双色球中奖大师)