能力值:
( LV2,RANK:10 )
7 楼
0048ADAC |. 0FAFD1 |IMUL EDX,ECX
0048ADAF |. 03C2 |ADD EAX,EDX
0048ADB1 |. 33D2 |XOR EDX,EDX
0048ADB3 |. 8A55 E1 |MOV DL,BYTE PTR SS:[EBP-1F]
0048ADB6 |. 33C9 |XOR ECX,ECX
0048ADB8 |. 8A4D D9 |MOV CL,BYTE PTR SS:[EBP-27]
0048ADBB |. 0FAFD1 |IMUL EDX,ECX
0048ADBE |. 03C2 |ADD EAX,EDX
0048ADC0 |. 33D2 |XOR EDX,EDX
0048ADC2 |. 8A55 E0 |MOV DL,BYTE PTR SS:[EBP-20]
0048ADC5 |. 03C2 |ADD EAX,EDX
0048ADC7 |. 33D2 |XOR EDX,EDX
0048ADC9 |. 8A55 DF |MOV DL,BYTE PTR SS:[EBP-21]
0048ADCC |. 03C2 |ADD EAX,EDX
0048ADCE |. 33D2 |XOR EDX,EDX
0048ADD0 8A55 DF MOV DL,BYTE PTR SS:[EBP-21]
0048ADD3 |. 03C2 |ADD EAX,EDX
0048ADD5 |. 33D2 |XOR EDX,EDX
0048ADD7 |. 8A55 DD |MOV DL,BYTE PTR SS:[EBP-23]
0048ADDA |. 03C2 |ADD EAX,EDX
0048ADDC |. 33D2 |XOR EDX,EDX
0048ADDE |. 8A55 DC |MOV DL,BYTE PTR SS:[EBP-24]
0048ADE1 |. 03C2 |ADD EAX,EDX
0048ADE3 |. B9 0A000000 |MOV ECX,0A
0048ADE8 |. 33D2 |XOR EDX,EDX
0048ADEA |. F7F1 |DIV ECX
0048ADEC |. 8955 E4 |MOV DWORD PTR SS:[EBP-1C],EDX
已找到机器码修改的地方 但我不懂汇编 高手帮忙看下啊
能力值:
( LV2,RANK:10 )
9 楼
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
0048A685 74 39 JE SHORT YingSsq.0048A6C0
0048A687 8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]
往上走点 来到0048A63C . 55 PUSH EBP F2下断 F9运行
点关于注册 程序段下来了 取消断点 F8单步
0048A696 8B85 E4FEFFFF MOV EAX,DWORD PTR SS:[EBP-11C] //出现堆栈 33943
0048A69C 50 PUSH EAX
0048A69D 8D95 E0FEFFFF LEA EDX,DWORD PTR SS:[EBP-120] 0048A6AC . 8B95 E0FEFFFF MOV EDX,DWORD PTR SS:[EBP-120]
堆栈 SS:[0012FA84]=00F39160, (ASCII "41808")
EDX=00008400
一直走到0048A6EA . E8 BD040000 CALL YingSsq.0048ABAC //F7进去
0048ABAC 55 PUSH EBP
0048ABAD 8BEC MOV EBP,ESP
0048ABAF 81C4 C0FEFFFF ADD ESP,-140
0048ABB5 53 PUSH EBX
0048ABB6 33DB XOR EBX,EBX
0048ABB8 899D D4FEFFFF MOV DWORD PTR SS:[EBP-12C],EBX
0048ABBE 894D F4 MOV DWORD PTR SS:[EBP-C],ECX
0048ABC1 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
0048ABC4 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
0048ABC7 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] //
堆栈 SS:[0012F934]=00F39174, (ASCII "4180833943")
EAX=00F3CAC4
0048ABCA E8 4994F7FF CALL YingSsq.00404018
0048ABCF 33C0 XOR EAX,EAX
0048ABD1 55 PUSH EBP
0048ABD2 |. 68 58AE4800 PUSH YingSsq.0048AE58
0048ABD7 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0048ABDA |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0048ABDD |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0048ABE0 |. C600 00 MOV BYTE PTR DS:[EAX],0
0048ABE3 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0048ABE6 |. E8 7992F7FF CALL YingSsq.00403E64
0048ABEB |. 83F8 04 CMP EAX,4
0048ABEE |. 0F8C 43020000 JL YingSsq.0048AE37
0048ABF4 |. C745 EC 13000>MOV DWORD PTR SS:[EBP-14],13
0048ABFB |. 837D EC 08 CMP DWORD PTR SS:[EBP-14],8
0048ABFF |. 7D 0B JGE SHORT YingSsq.0048AC0C
0048AC01 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0048AC04 |. C600 00 MOV BYTE PTR DS:[EAX],0
0048AC07 |. E9 2B020000 JMP YingSsq.0048AE37
0048AC0C |> 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0048AC0F |. E8 5092F7FF CALL YingSsq.00403E64
0048AC14 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
0048AC17 |. 8D8D D4FEFFFF LEA ECX,DWORD PTR SS:[EBP-12C]
0048AC1D |. BA 10000000 MOV EDX,10
0048AC22 |. B0 30 MOV AL,30
0048AC24 |. E8 D395F7FF CALL YingSsq.004041FC
0048AC29 |. 8B95 D4FEFFFF MOV EDX,DWORD PTR SS:[EBP-12C]
0048AC2F |. 8D85 D8FEFFFF LEA EAX,DWORD PTR SS:[EBP-128]
0048AC35 |. B9 FF000000 MOV ECX,0FF
0048AC3A |. E8 0192F7FF CALL YingSsq.00403E40
0048AC3F |. 8D95 D8FEFFFF LEA EDX,DWORD PTR SS:[EBP-128]
0048AC45 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0048AC48 |. B1 10 MOV CL,10
0048AC4A |. E8 4D7EF7FF CALL YingSsq.00402A9C
0048AC4F |. 33C0 XOR EAX,EAX
0048AC51 |. 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
0048AC54 |> 8B4D E8 /MOV ECX,DWORD PTR SS:[EBP-18]
0048AC57 |. BA 07000000 |MOV EDX,7
0048AC5C 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
0048AC5F E8 4CF9FFFF |CALL YingSsq.0048A5B0
0048AC64 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
0048AC67 8A4402 FF |MOV AL,BYTE PTR DS:[EDX+EAX-1]
0048AC6B |. 8845 E3 |MOV BYTE PTR SS:[EBP-1D],AL //这一片可修改机器码
0048AC6E |. 8B4D E8 |MOV ECX,DWORD PTR SS:[EBP-18]
0048AC71 |. BA 09000000 |MOV EDX,9
0048AC76 |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
0048AC79 |. E8 32F9FFFF |CALL YingSsq.0048A5B0
0048AC7E |. 8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8]
0048AC81 |. 8A4402 FF |MOV AL,BYTE PTR DS:[EDX+EAX-1]
0048AC85 |. 8845 E2 |MOV BYTE PTR SS:[EBP-1E],AL
0048AC88 |. 8B4D E8 |MOV ECX,DWORD PTR SS:[EBP-18]
0048AC8B |. BA 0B000000 |MOV EDX,0B
0048AC90 |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
0048AC93 |. E8 18F9FFFF |CALL YingSsq.0048A5B0
0048AC98 |. 8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8]
0048AC9B |. 8A4402 FF |MOV AL,BYTE PTR DS:[EDX+EAX-1]
0048AC9F |. 8845 E1 |MOV BYTE PTR SS:[EBP-1F],AL
0048ACA2 |. 8B4D E8 |MOV ECX,DWORD PTR SS:[EBP-18]
0048ACA5 |. BA 06000000 |MOV EDX,6
0048ACAA |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
0048ACAD |. E8 FEF8FFFF |CALL YingSsq.0048A5B0
0048ACB2 |. 8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8]
0048ACB5 |. 8A4402 FF |MOV AL,BYTE PTR DS:[EDX+EAX-1]
0048ACB9 |. 8845 E0 |MOV BYTE PTR SS:[EBP-20],AL
0048ACBC |. 8B4D E8 |MOV ECX,DWORD PTR SS:[EBP-18]
0048ACBF |. BA 0C000000 |MOV EDX,0C
0048ACC4 |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14]
虽然可以修改机器码 ,但对于我这样不懂算法和汇编的来说,还是不行,(哪位高手帮忙看下)呵呵。 ------------------------------------------------------------------------
【破解总结】已知软件为重启验证-注册码非明码.查壳为Borland Delphi 4.0 - 5.0 。
查找ASCII码 找到
Ultra 字符串参考,项目 1012
004CD44E |. /74 34 JE SHORT YingSsq.004CD484 ///JE改成JNZ 可去一个限制
再望上走点还有一个 也可以修改
注册码保存在注册表
[HKEY_LOCAL_MACHINE\SOFTWARE\华彩网\英豪双色球中奖大师 ]
"Code"="SSSSS"
@="5957921606191304"
目前只知道这些信息。希望高手能指导一下。兄弟们没事的时候也可以帮我看下 谢谢!
------------------------------------------------------------------------
能力值:
( LV2,RANK:10 )
11 楼
问题是找不到修改的地方 呵呵 高手呢 快来帮忙看看
0048A658 . E8 8795F7FF CALL YingSsq.00403BE4
0048A65D . 6A 00 PUSH 0 ; /pFileSystemNameSize = NULL
0048A65F . 6A 00 PUSH 0 ; |pFileSystemNameBuffer = NULL
0048A661 . 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] ; |
0048A664 . 50 PUSH EAX ; |pFileSystemFlags
0048A665 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] ; |
0048A668 50 PUSH EAX ; |pMaxFilenameLength
0048A669 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] ; |
0048A66C 50 PUSH EAX ; |pVolumeSerialNumber
0048A66D 68 00010000 PUSH 100
0048A672 8D85 E8FEFFFF LEA EAX,DWORD PTR SS:[EBP-118] ; |
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
0048A685 74 39 JE SHORT YingSsq.0048A6C0
0048A687 8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[
能力值:
(RANK:300 )
22 楼
【文章标题】: 英豪双色球中奖大师 2005 解密试分析
【文章作者】: 北极狐狸
【作者邮箱】: eug3@163.com
【作者主页】: nothing
【作者QQ号】: 87201014
【软件名称】: 英豪双色球中奖大师 2005版
【软件大小】: 1.81M
【下载地址】: 求助应答
【加壳方式】: nothing
【保护方式】: nothing
【编写语言】: Borland Delphi 4.0 - 5.0
【使用工具】: PeID v0.95,OllyDbg v1.10
【操作平台】: winxp
【软件介绍】: 英豪双色球中奖
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
单步执行找到算法计算处
我看这个算法的时候没有用什么流行的方法!由于大多都不会!
下面的是算法的主要内容!
0048AF2D |> /8B4D EC /mov ecx, dword ptr [ebp-14] ;计数器 0~15 (注册号是16位的)
0048AF30 |. |BA 09000000 |mov edx, 9 ;这个数字是用来计算的(在下面我称它为a).. 下面雷同
0048AF35 |. |8B45 F4 |mov eax, dword ptr [ebp-C] ;这是个也是用于计算的(在下面我称它为b)...{二进制16}
0048AF38 |. |E8 73F6FFFF |call 0048A5B0 ;这里应该跟进的....
0048AF3D |. |8A4405 D2 |mov al, byte ptr [ebp+eax-2E] ;这里用到机器码,安计算出的数字选泽相对应得数
;比如:
;call 中计算出是2 选择机器码中第2个为计算结果
;以下前三个call计算雷同!
0048AF41 |. |8845 E7 |mov byte ptr [ebp-19], al
0048AF44 |. |8B4D EC |mov ecx, dword ptr [ebp-14]
0048AF47 |. |BA 05000000 |mov edx, 5
0048AF4C |. |8B45 F4 |mov eax, dword ptr [ebp-C]
0048AF4F |. |E8 5CF6FFFF |call 0048A5B0
0048AF54 |. |8A4405 D2 |mov al, byte ptr [ebp+eax-2E]
0048AF58 |. |8845 E6 |mov byte ptr [ebp-1A], al
0048AF5B |. |8B4D EC |mov ecx, dword ptr [ebp-14]
0048AF5E |. |BA 02000000 |mov edx, 2
0048AF63 |. |8B45 F4 |mov eax, dword ptr [ebp-C]
0048AF66 |. |E8 45F6FFFF |call 0048A5B0
0048AF6B |. |8A4405 D2 |mov al, byte ptr [ebp+eax-2E]
0048AF6F |. |8845 E5 |mov byte ptr [ebp-1B], al
0048AF72 |. |8B4D EC |mov ecx, dword ptr [ebp-14]
0048AF75 |. |BA 08000000 |mov edx, 8
0048AF7A |. |8B45 F0 |mov eax, dword ptr [ebp-10] ;此值为19(二进制)
0048AF7D |. |E8 2EF6FFFF |call 0048A5B0 ;以下两call的计算结果是在密码表中选对应的结果
0048AF82 |. |BA 50B04800 |mov edx, 0048B050 密码表地址 0048B050~0048B063
0048AF87 |. |8A4402 FF |mov al, byte ptr [edx+eax-1]
0048AF8B |. |8845 E4 |mov byte ptr [ebp-1C], al
0048AF8E |. |8B4D EC |mov ecx, dword ptr [ebp-14]
0048AF91 |. |BA 01000000 |mov edx, 1
0048AF96 |. |8B45 F0 |mov eax, dword ptr [ebp-10]
0048AF99 |. |E8 12F6FFFF |call 0048A5B0
0048AF9E |. |BA 50B04800 |mov edx, 0048B050
0048AFA3 |. |8A4402 FF |mov al, byte ptr [edx+eax-1]
0048AFA7 |. |8845 E3 |mov byte ptr [ebp-1D], al --------------
0048AFAA |. |33C0 |xor eax, eax |
0048AFAC |. |8A45 E4 |mov al, byte ptr [ebp-1C] |
0048AFAF |. |33D2 |xor edx, edx |
0048AFB1 |. |8A55 E7 |mov dl, byte ptr [ebp-19]
0048AFB4 |. |F7EA |imul edx
0048AFB6 |. |33D2 |xor edx, edx
0048AFB8 |. |8A55 E6 |mov dl, byte ptr [ebp-1A]
0048AFBB |. |33C9 |xor ecx, ecx ; 这之间的计算是{[ebp-1C]*[ebp-19]+[ebp-1A]*[ebp-1D]+[ebp-1B]}/10的余数
0048AFBD |. |8A4D E3 |mov cl, byte ptr [ebp-1D]
0048AFC0 |. |0FAFD1 |imul edx, ecx ; 这边的计算时把机器码的字符换成ASCII码!
0048AFC3 |. |03C2 |add eax, edx
0048AFC5 |. |33D2 |xor edx, edx
0048AFC7 |. |8A55 E5 |mov dl, byte ptr [ebp-1B] |
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 [ebp-18], edx
0048AFD8 |. |8B45 E8 |mov eax, dword ptr [ebp-18]
0048AFDB |. |E8 00F6FFFF |call 0048A5E0
0048AFE0 |. |8B55 F8 |mov edx, dword ptr [ebp-8]
0048AFE3 |. |8B4D EC |mov ecx, dword ptr [ebp-14]
0048AFE6 |. |88440A 01 |mov byte ptr [edx+ecx+1], al
0048AFEA |. |FF45 EC |inc dword ptr [ebp-14]
0048AFED |. |837D EC 10 |cmp dword ptr [ebp-14], 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 [ebp-C], ecx
0048A5B9 |. 8955 F8 mov dword ptr [ebp-8], edx
0048A5BC |. 8945 FC mov dword ptr [ebp-4], eax
0048A5BF |. 8B45 F8 mov eax, dword ptr [ebp-8]
0048A5C2 |. 0345 F4 add eax, dword ptr [ebp-C]
0048A5C5 |. 99 cdq
0048A5C6 |. F77D FC idiv dword ptr [ebp-4]
0048A5C9 |. 8955 F0 mov dword ptr [ebp-10], edx
0048A5CC |. 837D F0 00 cmp dword ptr [ebp-10], 0
0048A5D0 |. 75 06 jnz short 0048A5D8
0048A5D2 |. 8B45 FC mov eax, dword ptr [ebp-4]
0048A5D5 |. 8945 F0 mov dword ptr [ebp-10], eax
0048A5D8 |> 8B45 F0 mov eax, dword ptr [ebp-10]
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("输入机器码","英豪双色球中奖大师(2005)------计算器")
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("注册码","英豪双色球中奖大师(2005)------计算器", 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
--------------------------------------------------------------------------------
【经验总结】
仔细慢慢分析,连蒙代猜!就可以读懂代码了!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年12月07日 1:09:40