发个简单的算法分析,适合新手,高手不宜。
本帖最后由 jzyjd 于 2017-4-23 19:01 编辑PDF to Word Converter 3.1 算法分析
下载地址:http://www.verypdf.com/app/pdf-to-word/index.html
国外的软件,呵呵。
查壳,无壳。
运行后,会提示注册,进入试用。
然后再次进行注册。
点注册提示:Your registration key is wrong……
查找字串。来到:
00406716 > \A1 343D7F00 mov eax,dword ptr ds:
0040671B .894424 08 mov dword ptr ss:,eax
0040671F .68 402A5E00 push pdf2word.005E2A40 ;Your registration key is wrong, please double check following issues:\n
00406724 .8D4C24 0C lea ecx,dword ptr ss:
00406728 .C78424 E40000>mov dword ptr ss:,0x0
00406733 .E8 A4F61900 call pdf2word.005A5DDC
00406738 .68 E4295E00 push pdf2word.005E29E4 ;1. Please copy and paste your registration key into PDF2Word to avoid spelling mistake.\n
往上翻发现是004066D0 . /74 44 je short pdf2word.00406716 ; 跳过来的。
再往上翻,来到关键CALL
004066C6 .E8 95F8FFFF call pdf2word.00405F60 ;关键CALL
重新进行注册。分析代码
00405F76|.83F9 14 cmp ecx,0x14 ;检测注册码位数 20位
00405F79|.74 07 je short pdf2word.00405F82 ;位数不对,直接跳走返回。
改成20位假码:12345678901234567890.继续注册
算法分析:
00405F76|.83F9 14 cmp ecx,0x14 ;检测注册码位数 20位
00405F79|.74 07 je short pdf2word.00405F82 ;位数对继续,位数不对,返回。
00405F7B|.5F pop edi ;pdf2word.007F0033
00405F7C|.5E pop esi ;pdf2word.007F0033
00405F7D|.5B pop ebx ;pdf2word.007F0033
00405F7E|.83C4 18 add esp,0x18
00405F81|.C3 retn
00405F82|>8A06 mov al,byte ptr ds: ;取假码第一位
00405F84|.8A4E 01 mov cl,byte ptr ds: ;取假码第二位
00405F87|.8D5424 0C lea edx,dword ptr ss:
00405F8B|.32DB xor bl,bl
00405F8D|.52 push edx
00405F8E|.884424 1C mov byte ptr ss:,al
00405F92|.885C24 1D mov byte ptr ss:,bl
00405F96|.884C24 10 mov byte ptr ss:,cl
00405F9A|.885C24 11 mov byte ptr ss:,bl
00405F9E|.E8 B4A61800 call pdf2word.00590657
00405FA3|.8BF8 mov edi,eax
00405FA5|.8D4424 1C lea eax,dword ptr ss:
00405FA9|.50 push eax
00405FAA|.E8 A8A61800 call pdf2word.00590657
00405FAF|.03F8 add edi,eax ;第一位加第二位
00405FB1|.83C4 08 add esp,0x8
00405FB4|.83FF 0B cmp edi,0xB ;和与0B即11进行比较
00405FB7|.74 09 je short pdf2word.00405FC2 ;相等继续,不相等返回。
00405FB9|.5F pop edi ;pdf2word.007F0033
00405FBA|.5E pop esi ;pdf2word.007F0033
00405FBB|.33C0 xor eax,eax
00405FBD|.5B pop ebx ;pdf2word.007F0033
00405FBE|.83C4 18 add esp,0x18
00405FC1|.C3 retn
00405FC2|>8A4E 12 mov cl,byte ptr ds: ;取19位
00405FC5|.8A56 13 mov dl,byte ptr ds: ;取最后一位 20位
00405FC8|.8D4424 0C lea eax,dword ptr ss:
00405FCC|.884C24 18 mov byte ptr ss:,cl
00405FD0|.50 push eax
00405FD1|.885C24 1D mov byte ptr ss:,bl
00405FD5|.885424 10 mov byte ptr ss:,dl
00405FD9|.885C24 11 mov byte ptr ss:,bl
00405FDD|.E8 75A61800 call pdf2word.00590657
00405FE2|.8D4C24 1C lea ecx,dword ptr ss:
00405FE6|.8BF8 mov edi,eax
00405FE8|.51 push ecx
00405FE9|.E8 69A61800 call pdf2word.00590657
00405FEE|.03F8 add edi,eax ;19位+20位
00405FF0|.83C4 08 add esp,0x8
00405FF3|.83FF 0D cmp edi,0xD ;要等于0D,即13
00405FF6|.74 09 je short pdf2word.00406001 ;相等继续,不相等返回
00405FF8|.5F pop edi ;pdf2word.007F0033
00405FF9|.5E pop esi ;pdf2word.007F0033
00405FFA|.33C0 xor eax,eax
00405FFC|.5B pop ebx ;pdf2word.007F0033
00405FFD|.83C4 18 add esp,0x18
00406000|.C3 retn
00406001|>8A56 05 mov dl,byte ptr ds: ;第5位(如果从0开数就是第6位,呵呵)
00406004|.8A46 0D mov al,byte ptr ds: ;第13位(如果从0开数就是第14位,反正我喜欢从1开始呵呵)
00406007|.8D4C24 0C lea ecx,dword ptr ss:
0040600B|.885424 18 mov byte ptr ss:,dl
0040600F|.51 push ecx
00406010|.885C24 1D mov byte ptr ss:,bl
00406014|.884424 10 mov byte ptr ss:,al
00406018|.885C24 11 mov byte ptr ss:,bl
0040601C|.E8 36A61800 call pdf2word.00590657
00406021|.8D5424 1C lea edx,dword ptr ss:
00406025|.8BF8 mov edi,eax
00406027|.52 push edx
00406028|.E8 2AA61800 call pdf2word.00590657
0040602D|.03F8 add edi,eax ;第5位与第13位加起来
0040602F|.83C4 08 add esp,0x8
00406032|.83FF 09 cmp edi,0x9 ;和必须等于9
00406035|.74 09 je short pdf2word.00406040 ;相等继续,不相等返回。
00406037|.5F pop edi ;pdf2word.007F0033
00406038|.5E pop esi ;pdf2word.007F0033
00406039|.33C0 xor eax,eax
0040603B|.5B pop ebx ;pdf2word.007F0033
0040603C|.83C4 18 add esp,0x18
0040603F|.C3 retn
00406040|>807E 0C 56 cmp byte ptr ds:,0x56 ;第十二位与V比较
00406044|.74 09 je short pdf2word.0040604F ;不是V,就返回。
00406046|.5F pop edi ;pdf2word.007F0033
00406047|.5E pop esi ;pdf2word.007F0033
00406048|.33C0 xor eax,eax
0040604A|.5B pop ebx ;pdf2word.007F0033
0040604B|.83C4 18 add esp,0x18
0040604E|.C3 retn
0040604F|>807E 0E 33 cmp byte ptr ds:,0x33 ;第十四位必须是3
00406053|.74 09 je short pdf2word.0040605E ;相等继续,不相等返回。
00406055|.5F pop edi ;pdf2word.007F0033
00406056|.5E pop esi ;pdf2word.007F0033
00406057|.33C0 xor eax,eax
00406059|.5B pop ebx ;pdf2word.007F0033
0040605A|.83C4 18 add esp,0x18
0040605D|.C3 retn
0040605E|>8A4E 0F mov cl,byte ptr ds: ;取第十五位
00406061|.33C0 xor eax,eax
00406063|.80F9 32 cmp cl,0x32 ;必须是2
00406066|.5F pop edi ;pdf2word.007F0033
00406067|.5E pop esi ;pdf2word.007F0033
00406068|.5B pop ebx ;pdf2word.007F0033
00406069|.0F94C0 sete al ;条件为真al置1
0040606C|.83C4 18 add esp,0x18
0040606F\.C3 retn ;返回。
返回后:
004066C6 .E8 95F8FFFF call pdf2word.00405F60 ;关键CALL
004066CB .83C4 04 add esp,0x4
004066CE .85C0 test eax,eax
004066D0 .74 44 je short pdf2word.00406716 ;跳向注册码错 关键跳
关键跳不再跳,注册成功。
总结一下:
这软件太他妈的给力了,简直就是为我们初学者量身定做的,初学者练习简单算法分析这软件我给全5分,只能说作者为我们初学者学习算法编写的最费心的crack me了。再次感谢作者。
另外,这个软件注册码与注册名没有半毛钱的关系(注册名不参与计算),这也是与国内大多数软件不同之处。
给一组注册成功的码:看图片
写在最后,大牛们多给加分,挣PYG币不容易,我还要参加今年的学习。没钱。{:lol:}
加油,期待给多文章与作品 加油,期待给多文章与作品 谢谢这类的分析,比较接近地气比那些大牛表哥的好理解支持 表哥 带带我 这个垃圾。。 还看不出来呀,软件作者故意为之
大哥,没有成品吗? boyving 发表于 2017-4-24 14:59
大哥,没有成品吗?
这不都弄清楚了吗,还要什么成品?
感谢分享算法!学习了!更改前两位和后两位。
473456789012V3327876
页:
[1]
2