- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】PDF2TXT v3.2简单算法分析+ASM注册函数
【破文作者】飘云/P.Y.G
【官方主页】https://www.chinapyg.com
【作者博客】http://blog.piaoyunsoft.com
【破解平台】WinXp SP3
【破解工具】PEiD0.94、OD
【作者邮箱】[email protected]
【软件名称】PDF2TXT v3.2
【软件大小】1.34M
【原版下载】http://verypdf.com/pdf2txt/pdf2txt.htm
问题由来:https://www.chinapyg.com/viewthr ... p;page=1&extra=
OD载入程序运行,下断 BP MessageBoxA
找到到这里:
这里是 verypdf.dll 领空,而不是提问者所说的系统领空- 100019A2 mov esi, dword ptr [esp+E8]
- 100019A9 push 0C8
- 100019AE mov ecx, 32
- 100019B3 xor eax, eax
- 100019B5 mov edi, 1001A850 ; 1234567890abcdef
- 100019BA push 1001A850 ; 1234567890abcdef
- 100019BF push 3FB
- 100019C4 push esi
- 100019C5 rep stos dword ptr es:[edi]
- 100019C7 call dword ptr [10013334] ; USER32.GetDlgItemTextA
- 100019CD push 1001A850 ; 1234567890abcdef
- 100019D2 call 10001170 ; 算法CALL
- {----------------------算法CALL-------------------------}
- 10001170 sub esp, 18
- 10001173 push ebx
- 10001174 push esi
- 10001175 mov esi, dword ptr [esp+24]
- 10001179 lea edx, dword ptr [esp+8]
- 1000117D push edi
- 1000117E xor bl, bl
- 10001180 mov al, byte ptr [esi+E] ; KEY[14]
- 10001183 mov cl, byte ptr [esi+F] ; KEY[15]
- 10001186 push edx
- 10001187 mov byte ptr [esp+1C], al
- 1000118B mov byte ptr [esp+1D], bl
- 1000118F mov byte ptr [esp+10], cl
- 10001193 mov byte ptr [esp+11], bl
- 10001197 call 100027D1 ; KEY[14]校验
- 1000119C mov edi, eax
- 1000119E lea eax, dword ptr [esp+1C]
- 100011A2 push eax
- 100011A3 call 100027D1 ; KEY[15]校验
- 100011A8 add edi, eax
- 100011AA add esp, 8
- 100011AD cmp edi, 0B ; 校验通过后两数相加要=11
- 100011B0 je short 100011BB
- 100011B2 pop edi
- 100011B3 pop esi
- 100011B4 xor eax, eax
- 100011B6 pop ebx
- 100011B7 add esp, 18
- 100011BA retn
- 100011BB mov cl, byte ptr [esi] ; KEY[0]
- 100011BD mov dl, byte ptr [esi+1] ; KEY[1]
- 100011C0 lea eax, dword ptr [esp+C]
- 100011C4 mov byte ptr [esp+18], cl
- 100011C8 push eax
- 100011C9 mov byte ptr [esp+1D], bl
- 100011CD mov byte ptr [esp+10], dl
- 100011D1 mov byte ptr [esp+11], bl
- 100011D5 call 100027D1
- 100011DA lea ecx, dword ptr [esp+1C]
- 100011DE mov edi, eax
- 100011E0 push ecx
- 100011E1 call 100027D1
- 100011E6 add edi, eax
- 100011E8 add esp, 8
- 100011EB cmp edi, 8 ; 校验通过后两数相加要=8
- 100011EE je short 100011F9
- 100011F0 pop edi
- 100011F1 pop esi
- 100011F2 xor eax, eax
- 100011F4 pop ebx
- 100011F5 add esp, 18
- 100011F8 retn
- 100011F9 mov cl, byte ptr [esi+5] ; KEY[5]
- 100011FC mov al, 24 ; $
- 100011FE cmp cl, al ; KEY[5]必须为 $
- 10001200 je short 1000120B
- 10001202 pop edi
- 10001203 pop esi
- 10001204 xor eax, eax
- 10001206 pop ebx
- 10001207 add esp, 18
- 1000120A retn
- 1000120B cmp byte ptr [esi+6], al ; KEY[6]必须为 $
- 1000120E je short 10001219
- 10001210 pop edi
- 10001211 pop esi
- 10001212 xor eax, eax
- 10001214 pop ebx
- 10001215 add esp, 18
- 10001218 retn
- 10001219 mov cl, byte ptr [esi+7] ; KEY[7]
- 1000121C xor eax, eax
- 1000121E cmp cl, 40 ; KEY[7]必须为@
- 10001221 pop edi
- 10001222 pop esi
- 10001223 pop ebx
- 10001224 sete al ; 标志位
- 10001227 add esp, 18
- 1000122A retn
复制代码 【算法总结】
1.KEY[14] + KEY[15] = 11
2.KEY[1] + KEY[2] = 8
3.KEY[5] = $ (24h)
4.KEY[6] = $ (24h)
5.KEY[7] = @ (40h)
6.其他位用随机字符填充即可
【注册函数】
- .data
- szFormat db '%s',0
- szConstTable db '0123456789abcdefghijklmnopqrstuvwxyz',0
- .code
- _Rand proc uses ecx edx First:DWORD,Second:DWORD
- rdtsc
- ;invoke GetTickCount
- mov ecx,23
- mul ecx
- add eax,7
- mov ecx,Second
- sub ecx,First
- inc ecx
- xor edx,edx
- div ecx
- add edx,First
- mov eax,edx
- ret
- _Rand endp
- ;=================================================
- ;注册算法:
- ;1.KEY[14] + KEY[15] = 11
- ;2.KEY[1] + KEY[2] = 8
- ;3.KEY[5] = $ (24h)
- ;4 KEY[6] = $ (24h)
- ;5 KEY[7] = @ (40h)
- ;6 其他位用随机字符填充即可
- ;Code By PiaoYun/P.Y.G
- ;=================================================
- KeyGen proc
- LOCAL @szKey[17]:BYTE;多定义一个字节空间~ 否则出问题
- LOCAL @szOut[256]:BYTE
-
- invoke RtlZeroMemory,addr @szOut,sizeof @szOut
- invoke RtlZeroMemory,addr @szKey,sizeof @szKey
-
- xor eax,eax
- xor ecx,ecx
- xor edx,edx
-
- ;KEY[15]
- invoke _Rand,2,9
- movzx edx,byte ptr [szConstTable+eax]
- mov byte ptr[@szKey + 14],dl
- ;计算KEY[16]
- mov edx,11
- sub edx,eax
- movzx edx,byte ptr [szConstTable+edx]
- mov byte ptr[@szKey + 15],dl
-
- ;KEY[0]
- invoke _Rand,0,8
- movzx edx,byte ptr [szConstTable+eax]
- mov byte ptr[@szKey + 0],dl
- ;计算KEY[1]
- mov edx,8
- sub edx,eax
- movzx edx,byte ptr [szConstTable+edx]
- mov byte ptr[@szKey + 1],dl
-
- mov byte ptr[@szKey + 5],24h
- mov byte ptr[@szKey + 6],24h
- mov byte ptr[@szKey + 7],40h
-
- ;KEY:2、3、4
- mov ecx,2
- @@:
- invoke _Rand,0,35
- movzx edx,byte ptr [szConstTable+eax]
- mov byte ptr[@szKey + ecx],dl
- inc ecx
- cmp ecx,5
- jl @B
-
- ;KEY:8,9,10,11,12,13
- mov ecx,8
- @@:
- invoke _Rand,0,35
- movzx edx,byte ptr [szConstTable+eax]
- mov byte ptr[@szKey + ecx],dl
- inc ecx
- cmp ecx,14
- jl @B
-
- invoke lstrcat,addr @szOut,addr @szKey ;连接字符串
- lea eax,@szOut
- ret
- KeyGen endp
复制代码 【版权声明】 本文纯属技术交流, 原创于PYG官方论坛, 转载请注明作者并保持文章的完整, 谢谢! |
评分
-
参与人数 1 | 威望 +40 |
飘云币 +40 |
收起
理由
|
月之精灵
| + 40 |
+ 40 |
虽然你不缺钱,但该加的还是应该加上哈 |
查看全部评分
|