【文章标题】: MD5算法 - Image To PDF V2.4.0 算法分析
【文章作者】: Suyana
【作者邮箱】: Suyasha@163.com
【作者QQ号】: 517949855(请注明来自看雪论坛)
【软件名称】: Image To PDF V2.4.0
【下载地址】: 自己搜索下载
【加壳方式】: ASPack 2.12
【保护方式】: 注册码
【编写语言】: Borland C++ 1999
【使用工具】: OD,ASPackDie,DeDe
【操作平台】: WinXP
【软件介绍】: 一款不错的PDF制作工具,可以批量地将TIF, JPG, GIF
【作者声明】: 我只是一只小菜鸟,失误之处难免,敬望诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
软件用ASPack 2.12加壳,用AspackDie脱壳就可以了。用
Borland C++ 1999写的,一开始用DeDe分析一下:"TDlgReg" => "Button2Click" 来到:
0040D788 55 push ebp
...
0040D7FA 8BC3 mov eax, ebx
* Reference to : TDlgError._PROC_0040DBE0()
|
0040D7FC E8DF030000 call 0040DBE0 ==>进入
0040D801 837DF800 cmp dword ptr [ebp-$08], +$00
--------------------------
0040DBE0 push ebx
...
0040DC12 mov esi, 004DD7F7 ; ASCII "PX4VUTE8Q1YONML6GIHJZFSDCBA9R7K5W32"
... ; 计算注册码要用到的表
0040DC33 pop ecx
0040DC34 push eax ; /Arg3
0040DC35 push ebx ; |Arg2
0040DC36 lea edx, [esp+34] ; |
0040DC3A push edx ; |
0040DC3B call 0040EA20 ; \Arg1 ;MD5算法初始化常数
0040DC40 add esp, 0C
0040DC43 lea ecx, [esp+2C]
0040DC47 push ecx ; /Arg2
0040DC48 lea eax, [esp+88] ; |
0040DC4F push eax ; |Arg1
0040DC50 call 0040EAB8 ; \Md5算法),计算出一串值(Md5的值)
0040DC55 add esp, 8
0040DC58 xor edi, edi
0040DC5A mov esi, ebp
0040DC5C lea ebx, [esp+84]
0040DC63 /xor eax, eax
0040DC65 |mov al, [ebx] ; 计算后那串值(Md5的值)
0040DC67 |mov ecx, 23
0040DC6C |cdq
0040DC6D |idiv ecx ; 除以23h
0040DC6F |xor eax, eax
0040DC71 |mov al, [esp+edx+8] ; 取余数查表,得出注册码
0040DC75 |push eax ; /<%c>
0040DC76 |push 004DD992 ; |Format = "%c"
0040DC7B |lea edx, [esp+8] ; |
0040DC7F |push edx ; |s
0040DC80 |call <jmp.&USER32.wsprintfA>; \wsprintfA
0040DC85 |add esp, 0C
0040DC88 |mov cl, [esp]
0040DC8B |mov [esi], cl
0040DC8D |inc edi
0040DC8E |inc esi
0040DC8F |inc ebx
0040DC90 |cmp edi, 10 ;注册码为16位,最后再加上?
0040DC93 \jl short 0040DC63
0040DC95 mov byte ptr [ebp+11], 0
0040DC99 add esp, 98
0040DC9F pop ebp
现在说一下算法吧,其实很简单,就是把e-mail用md5加密,用算出的值依此取ASCII除以23h,取余数 查表就可以了,注册码再加上?
如:
e-mail:
suyasha@163.com
regcode:
1L5UTAOREQ8E4LGT?
注册码保存在setup.ini文件
一开始并不知道软件用MD5算法,害我跟进MD5算法中,白忙了好久。
上面说到的初始化常数就是填充:
01 23 45 67 89 AB CD EF FE DC BA 98 76 54 32 10,因为是高位在后,低位在前,
所以就是67452301、EFCDAB89、BADCFEEF、10325476,(有这四个常数基本上就是Md5算法)
--------------------------------------------------------------------------------
【经验总结】
1.知道了peid的一个插件Krypto ANALYzer可以查看加密算法。
2.懂得怎样看MD5算法,主要是看那4个常数,当然这4个常数是可以改的。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
------------------------------------------------------------------
文章写于2007-08-12