- UID
- 40684
注册时间2007-12-7
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
【文章标题】: 巧取考试宝典注册码
【文章作者】: gtboy
【软件名称】: 银行从业资格考试宝典2.2
【下载地址】: 自己搜索下载
【加壳方式】: aspack
【保护方式】: 序列号
【使用工具】: strongod,peid
【操作平台】: xp sp3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
女朋友要考银行从业资格,买了两本书,想看看有啥好点的软件不。在华军上搜索了下,看到这个就下载了。安装,运行,要注册,尝试自己弄弄。水平太菜了,信心不足。
peid查壳aspak,esp定律脱了下,似乎有附加数据,懒得弄,直接带壳跑了。用esp定律来到oep,拿插件搜索下,啥都没有。试着注册,弹出个对话框,说注册码错误,ok,下bp MessageBoxA
btw,strongod带来cmdbar的功能,希望越来越强大,菜鸟的福音啊。
随便输入个注册码,就输入19532386吧,呵呵。注册-od断下。在堆栈窗口中右键0012EA7C 004D5082 /CALL 到 MessageBoxA 来自 ExamBibl.004D507D。上下翻腾了下,没发现关键的地方。想来下,既然运行起来了,那么字符串啥的都解码了。再查找下字符串,果然出来很多。搜索注册,有正确和错误了。呵呵,当然是去那里了。
00590458 55 PUSH EBP
00590459 8BEC MOV EBP,ESP
0059045B 81C4 FCFDFFFF ADD ESP,-204
00590461 53 PUSH EBX
00590462 33D2 XOR EDX,EDX
00590464 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
00590467 8BD8 MOV EBX,EAX
00590469 33C0 XOR EAX,EAX
0059046B 55 PUSH EBP
0059046C 68 04055900 PUSH 00590504
00590471 64:FF30 PUSH DWORD PTR FS:[EAX]
00590474 64:8920 MOV DWORD PTR FS:[EAX],ESP
00590477 8BD3 MOV EDX,EBX
00590479 A1 B0FF5F00 MOV EAX,DWORD PTR DS:[5FFFB0]
0059047E E8 0DE7FFFF CALL 0058EB90
00590483 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00590486 E8 B5040000 CALL 00590940
0059048B E8 A8F8FFFF CALL 0058FD38
00590490 8D85 FCFEFFFF LEA EAX,DWORD PTR SS:[EBP-104]
00590496 8BD3 MOV EDX,EBX
00590498 B9 FF000000 MOV ECX,0FF
0059049D E8 1257E7FF CALL 00405BB4
005904A2 8D85 FCFEFFFF LEA EAX,DWORD PTR SS:[EBP-104]
005904A8 50 PUSH EAX
005904A9 8D85 FCFDFFFF LEA EAX,DWORD PTR SS:[EBP-204] ; 机器码放入eax
005904AF 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; 假码放入edx
005904B2 B9 FF000000 MOV ECX,0FF
005904B7 E8 F856E7FF CALL 00405BB4
005904BC 8D85 FCFDFFFF LEA EAX,DWORD PTR SS:[EBP-204]
005904C2 5A POP EDX
005904C3 E8 2CF6FFFF CALL 0058FAF4 ; 关键call
005904C8 8BD8 MOV EBX,EAX
005904CA 84DB TEST BL,BL
005904CC 74 16 JE SHORT 005904E4 ; 关键跳,跳走就失败
005904CE A1 B0FF5F00 MOV EAX,DWORD PTR DS:[5FFFB0]
005904D3 E8 10E6FFFF CALL 0058EAE8
005904D8 B8 1C055900 MOV EAX,0059051C ; 注册完毕,请关闭软件后再重新运行。如果注册成功,软件的标题不会有[试用版]的提示。
005904DD E8 3EDBFFFF CALL 0058E020
005904E2 EB 0A JMP SHORT 005904EE
005904E4 B8 78055900 MOV EAX,00590578 ; 注册失败:您输入的注册码不正确。如果您还没有购买注册码,请联系我们购买!如要试用,请先关闭此窗口。
005904E9 E8 32DBFFFF CALL 0058E020
跟入0058FAF4
0058FAF4 55 PUSH EBP
0058FAF5 8BEC MOV EBP,ESP
0058FAF7 B9 26000000 MOV ECX,26
0058FAFC 6A 00 PUSH 0
0058FAFE 6A 00 PUSH 0
0058FB00 49 DEC ECX
0058FB01 ^ 75 F9 JNZ SHORT 0058FAFC
0058FB03 53 PUSH EBX ; F4过来,循环压入0?
0058FB04 56 PUSH ESI
0058FB05 57 PUSH EDI
0058FB06 8BF2 MOV ESI,EDX
0058FB08 8BF8 MOV EDI,EAX
0058FB0A 33C0 XOR EAX,EAX
0058FB0C 55 PUSH EBP
0058FB0D 68 DAFC5800 PUSH 0058FCDA
0058FB12 64:FF30 PUSH DWORD PTR FS:[EAX]
0058FB15 64:8920 MOV DWORD PTR FS:[EAX],ESP
0058FB18 33DB XOR EBX,EBX
0058FB1A 8BC7 MOV EAX,EDI
0058FB1C E8 A3FAFFFF CALL 0058F5C4 ; 验证机器码长度为0c
0058FB21 84C0 TEST AL,AL
0058FB23 0F84 8B010000 JE 0058FCB4
0058FB29 8BC6 MOV EAX,ESI
0058FB2B E8 D4F9FFFF CALL 0058F504 ; 验证注册码长度为0c,全为数字,还有别的,没分析出来
0058FB30 84C0 TEST AL,AL
0058FB32 0F84 7C010000 JE 0058FCB4
0058FB38 8D85 F0FEFFFF LEA EAX,DWORD PTR SS:[EBP-110]
0058FB3E 8BD6 MOV EDX,ESI
0058FB40 E8 1B60E7FF CALL 00405B60
0058FB45 8B85 F0FEFFFF MOV EAX,DWORD PTR SS:[EBP-110]
0058FB4B 8D95 F4FEFFFF LEA EDX,DWORD PTR SS:[EBP-10C]
0058FB51 E8 CADCFFFF CALL 0058D820 ; md5计算过程
0058FB56 8B85 F4FEFFFF MOV EAX,DWORD PTR SS:[EBP-10C] ; eax中出现假码md5的结果
0058FB5C 50 PUSH EAX
0058FB5D 8D85 ECFEFFFF LEA EAX,DWORD PTR SS:[EBP-114]
0058FB63 8B15 E8635F00 MOV EDX,DWORD PTR DS:[5F63E8] ; edx中出现真码md5后的结果
0058FB69 E8 F25FE7FF CALL 00405B60
0058FB6E 8B95 ECFEFFFF MOV EDX,DWORD PTR SS:[EBP-114]
0058FB74 58 POP EAX
0058FB75 E8 C661E7FF CALL 00405D40 ; 两个md5字符串进行比较
0058FB7A 0F85 34010000 JNZ 0058FCB4 ; 关键跳,不跳就生成注册文件
0058FB80 8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]
0058FB86 A1 DC615F00 MOV EAX,DWORD PTR DS:[5F61DC]
0058FB8B 8B00 MOV EAX,DWORD PTR DS:[EAX]
0058FB8D E8 5A59F4FF CALL 004D54EC
0058FB92 8B85 E4FEFFFF MOV EAX,DWORD PTR SS:[EBP-11C]
0058FB98 8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118]
0058FB9E E8 A1BBE7FF CALL 0040B744
0058FBA3 8D85 E8FEFFFF LEA EAX,DWORD PTR SS:[EBP-118] ; 下面为注册文件名
0058FBA9 BA F4FC5800 MOV EDX,0058FCF4 ; data\temp.db
0058FBAE E8 3160E7FF CALL 00405BE4 ; 获取该文件的位置
0058FBB3 8B95 E8FEFFFF MOV EDX,DWORD PTR SS:[EBP-118] ; 写入内容date=t5zIlQiZqP78NuWJ7z+CREioMcBv/Ol4wVrX4rZN
小菜认为验证过程应该就发生在CALL 0058F504,跟了两遍,没啥收获,突然想起md5可以查询的呀.在线查询了下,没有.下了个软件跑吧,12位数字还是很慢.突然想到,他要计算md5得先传递真码呀,由分析可知0058D820就是计算过程。因为有壳,用硬件执行断点。重新运行,看寄存器窗口,可以看到注册码和机器码。我的机器码是198951907558,对应的注册码为871371197802。同时发现软件产生了个D_WD-WMAJ52175170CJ_YHCY,明显不符合注册码规则,但输入进去没反应,不知为何。
注册后,发现题目还是和原先一样多,只是软件显示成正式版,估计是有暗桩或者是需要联网注册下才行吧。还要上课,就暂时不分析了。
--------------------------------------------------------------------------------
【经验总结】
md5也不能直接拿来比较呀,而且用一个文件来确认是否注册是很危险的。
对真码md5存放地址下硬件断点的话应该更快。
基础要扎实,要有耐心,像小菜我就不行了,算法分析不出来,用取巧的方法获得了注册码。
--------------------------------------------------------------------------------
【版权声明】: 没有版权,呵呵。探讨交流。
2009年09月02日 15:56:37 |
|