某软件算法分析
【文章标题】: 某软件算法分析【文章作者】: Crack_Qs
【作者邮箱】: qs#ff0000.cc(#换@)
【软件名称】: 《十万个为什么》
【下载地址】: 自己搜索下载
【加壳方式】: aspack
【保护方式】: 本地验证
【使用工具】: OllyDBG
【操作平台】: Window xp
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
——————————————————————————–
【详细过程】
脱壳我就不写了,aspack脱壳很简单。
——————————————–
0047EA88 .55 push ebp ;按钮事件开始
0047EA89 .8BEC mov ebp,esp
0047EA8B .B9 08000000 mov ecx,0×8
0047EA90 >6A 00 push 0×0
0047EA92 .6A 00 push 0×0
0047EA94 .49 dec ecx
0047EA95 .^ 75 F9 jnz Xdumped_.0047EA90
0047EAC3 .E8 E4A3F8FF call dumped_.00408EAC
0047EAC8 .837D F4 00 cmp dword ptr ss:,0×0
0047EACC .75 19 jnz Xdumped_.0047EAE7
0047EACE .BA 84ED4700 mov edx,dumped_.0047ED84 ;提示
0047EAD3 .B8 8CED4700 mov eax,dumped_.0047ED8C ; 姓名不能为空!
0047EAD8 .B9 30000000 mov ecx,0×30
0047EADD .E8 E256FFFF call dumped_.004741C4
0047EB02 .E8 A5A3F8FF call dumped_.00408EAC
0047EB07 .8B45 E8 mov eax,dword ptr ss: ;取假码“12345678”放入EAX
0047EB0A .B9 0C000000 mov ecx,0xC ;ECX放入“0xC” 即注册码标准长度为12位
0047EB0F .BA 01000000 mov edx,0×1
0047EB3D .8B45 D8 mov eax,dword ptr ss: ;读取用户名
0047EB40 .8D4D DC lea ecx,dword ptr ss:
0047EB43 .BA A8ED4700 mov edx,dumped_.0047EDA8 ;读取字串“十万个为什么”
0047EB48 .E8 3F57FFFF call dumped_.0047428C ;算法CALL
进算法CALL看一下
0047428C/$55 push ebp ;算法CALL开始
0047428D|.8BEC mov ebp,esp
0047428F|.6A 00 push 0×0
00474291|.6A 00 push 0×0
00474293|.6A 00 push 0×0
004742BB|.E8 EC4BF9FF call dumped_.00408EAC ;用户名是否存在
004742C0|.837D F0 00 cmp ,0×0
004742C4|.75 0F jnz Xdumped_.004742D5
004742C6|.B8 28444700 mov eax,dumped_.00474428 ;Input String Can’t be Empty!
004742CB|.E8 38B1FDFF call dumped_.0044F408
004742D8|.50 push eax
004742D9|.B9 06000000 mov ecx,0×6 ;取用户名长度6位
004742DE|.BA 01000000 mov edx,0×1
0047433C|.8B55 E8 mov edx, ;取用户名
0047433F|.8D45 F4 lea eax,
00474342|.8B4D F4 mov ecx, ;取“十万个为什么”的前三个字节
00474345|.E8 C2FBF8FF call dumped_.00403F0C
0047434A|.8D55 FC lea edx,
0047434D|.B8 0C000000 mov eax,0xC ;增加到12位
00474352|.E8 F5FEFFFF call dumped_.0047424C
00474357|.BB 01000000 mov ebx,0×1
0047435C|>8D45 FC /lea eax,
0047435F|.E8 2CFDF8FF |call dumped_.00404090
00474364|.8BF3 |mov esi,ebx ;用字串空格填充
00474366|.03F6 |add esi,esi
00474368|.8B55 F8 |mov edx,
0047436B|.8A541A FF |mov dl,byte ptr ds:
0047436F|.885430 FE |mov byte ptr ds:,dl
00474373|.8D45 FC |lea eax,
00474376|.E8 15FDF8FF |call dumped_.00404090
0047437B|.8B55 F4 |mov edx,
0047437E|.8A541A FF |mov dl,byte ptr ds:
00474382|.885430 FF |mov byte ptr ds:,dl
00474386|.43 |inc ebx
00474387|.83FB 07 |cmp ebx,0×7 ;对用户名长度进行处理,不足6位补空格 多余6位减少
0047438A|.^ 75 D0 \jnz Xdumped_.0047435C ;该段计算就是把用户名和“十万个”字符,进行错位连接处理
计算后为 43 CA 72 AE 61 CD 63 F2 6B B8 5F F6
Crack_ 43 72 61 63 6B 5F
“十万个” CA AE CD F2 B8 F6
004743A9|> /8B45 FC /mov eax,
004743AC|. |8A4418 FF |mov al,byte ptr ds: ;取第一个字符“C”值为43
004743B0|. |34 BB |xor al,0xBB ;和0xBB异或
004743B2|. |25 FF000000 |and eax,0xFF ;再和FF运算
004743B7|. |8D55 E4 |lea edx,
004743BA|. |E8 6D4CF9FF |call dumped_.0040902C ;运算??xor187and255
004743BF|. |8B45 E4 |mov eax, ;得到结果248 之后取结果第一位
004743C2|. |FF30 |push dword ptr ds: ;以此类推
004743C4|. |8BC7 |mov eax,edi
004743C6|. |E8 C5FCF8FF |call dumped_.00404090
004743CB|. |5A |pop edx
004743CC|. |885418 FF |mov byte ptr ds:,dl
004743D0|. |43 |inc ebx
004743D1|. |4E |dec esi
004743D2|.^\75 D5 \jnz Xdumped_.004743A9
004743D4|>E8 6FE6F8FF call dumped_.00402A48 ;得到真注册码
EAX 00C46D3C ASCII ”212221272327″
———————————————————————————————————-
算法过程记录:
1.用户名限制为6位,多舍少补。
2.导入一个字串“十万个”
3.之后进行错位排列用户名与字串(如:121212)
4.值转换十进制进行计算(??xor187and255),结果取第一位,全部处理完后,第一位取的值即为真注册码。
——————————————————————————–
【版权声明】: 本文原创于Crack_Qs@红黑联盟专家堂, 转载请注明作者并保持文章的完整, 谢谢!
2012年11月30日 12:54:29
Qs怎么今天这么有空奔放呢 1354669803 发表于 2013-8-20 21:00 static/image/common/back.gif
Qs怎么今天这么有空奔放呢
准备去管理团队看看雨妹
QS爹真威猛! E_eYYF 发表于 2013-8-20 21:12 static/image/common/back.gif
QS爹真威猛!
你是?
Liquor 发表于 2013-8-20 21:14 static/image/common/back.gif
你是?
小菜鸟一只,我的师叔是无nai..........
QS大好厉害啊。。先回复,再品味!
E_eYYF 发表于 2013-8-20 21:37 static/image/common/back.gif
小菜鸟一只,我的师叔是无nai..........
我了个艹,我貌似对这句话有印象,记得谁一直喊无聊时师叔。不会。。。。是你吧
QS牛今天真是大放送啊。谢谢了 Liquor 发表于 2013-8-20 21:48 static/image/common/back.gif
我了个艹,我貌似对这句话有印象,记得谁一直喊无聊时师叔。不会。。。。是你吧
没错,正是小菜鸟,求QS爹带!湿书已死......
页:
[1]
2