好友
阅读权限10
听众
最后登录1970-1-1
|
heing
发表于 2010-4-30 21:35
本帖最后由 heing 于 2010-5-1 00:41 编辑
大家好!这是我第二次发表的文章,谢谢大家的支持!
下面介绍这款软件:记忆力训练软件
软件介绍: 这是一款简单易用的记忆力训练软件
这款软件的下载地址百度里查,我就不给地址了!
声明: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
不得将内容用于商业或者非法用途,否则,一切后果请用户自负。
peid查壳一下
查一下壳发现是ASPACK2.12的,其实它里面还有一个是老王壳!
用外部扫描一下是 ASProtect V2.X DLL -> Alexey Solodovnikov [Overlay] *
看区段有EPE,估计是老王的! 用ESP定律脱出来的是ASPROTECT 的壳!
把软件试注册一下,注意你会发现在D盘里生成一个dosame的文件夹!下面我们开始吧!
这个我已经注册了。
该软件是通过机器码来算注册码的,我的机器码是9713454651
注意:如果OD载入,自动退出的话,要换一个OD。下面就是具体过程!
下bp GetPrivateProfileStringA
**************************************************************************
当堆栈窗口出现下面的信息:
03A9D6EC 0128C6D3 /CALL 到 GetPrivateProfileStringA 来自 krnln.0128C6CD
03A9D6F0 0040C8A3 |Section = "记忆力训练软件"
03A9D6F4 0040C325 |Key = "注册码"
03A9D6F8 013112B4 |Default = ""
03A9D6FC 03A9D720 |ReturnBuffer = 03A9D720
03A9D700 00002800 |BufSize = 2800 (10240.)
03A9D704 0024A520 \IniFileName = "D:\Dosame\Dosamesoft.p"
03A9D708 77D18734 返回到 USER32.77D18734
*********
Alt+F9返回!!!返回到程序的领空!
**************************************************************************
0128C6D3 8D5424 18 lea edx,dword ptr ss:[esp+18] 出现假码
0128C6D7 52 push edx
0128C6D8 E8 3358FEFF call krnln.01271F10 这个call没有收获
0128C6DD 8B8C24 2C280000 mov ecx,dword ptr ss:[esp+282C]
0128C6E4 83C4 04 add esp,4
0128C6E7 C78424 20280000 FFFF> mov dword ptr ss:[esp+2820],-1
0128C6F2 C74424 04 183C2E01 mov dword ptr ss:[esp+4],krnln.012E3C18
0128C6FA 8901 mov dword ptr ds:[ecx],eax
0128C6FC 8D4C24 04 lea ecx,dword ptr ss:[esp+4]
0128C700 E8 7BD3FBFF call krnln.01249A80 这个call没有收获
0128C705 8B8C24 18280000 mov ecx,dword ptr ss:[esp+2818]
0128C70C 5E pop esi
0128C70D 64:890D 00000000 mov dword ptr fs:[0],ecx
0128C714 81C4 20280000 add esp,2820
0128C71A C3 retn 直接到返回,好像要返回3-4次
********************************************************************************
当出现不在返回时,第一个CALL就是算法CALL。
00537CB2 FF35 24226701 push dword ptr ds:[1672224]
00537CB8 8D45 F4 lea eax,dword ptr ss:[ebp-C]
00537CBB 50 push eax
00537CBC E8 BC000000 call 记忆力训.00537D7D 在这里F7
00537CC1 8945 F0 mov dword ptr ss:[ebp-10],eax
00537CC4 8B5D F4 mov ebx,dword ptr ss:[ebp-C]
00537CC7 85DB test ebx,ebx
********************************************************************************
进入算法CALL的标志是下面的代码:
00537D7D 55 push ebp
00537D7E 8BEC mov ebp,esp
00537D80 81EC 70000000 sub esp,70
00537D86 C745 FC 00000000 mov dword ptr ss:[ebp-4],0
00537D8D C745 F8 00000000 mov dword ptr ss:[ebp-8],0
00537D94 C745 F4 00000000 mov dword ptr ss:[ebp-C],0
00537D9B C745 F0 00000000 mov dword ptr ss:[ebp-10],0
00537DA2 C745 EC 00000000 mov dword ptr ss:[ebp-14],0
*******************************************************
00537E40 83C4 10 add esp,10
00537E43 8945 B8 mov dword ptr ss:[ebp-48],eax
00537E46 8955 BC mov dword ptr ss:[ebp-44],edx
00537E49 DD45 B8 fld qword ptr ss:[ebp-48]
00537E4C DC35 2CC34000 fdiv qword ptr ds:[40C32C]
00537E52 DD5D B0 fstp qword ptr ss:[ebp-50]
00537E55 68 01060080 push 80000601
00537E5A FF75 B4 push dword ptr ss:[ebp-4C]
00537E5D FF75 B0 push dword ptr ss:[ebp-50]
00537E60 68 01000000 push 1
00537E65 BB 60000000 mov ebx,60
00537E6A E8 89A20200 call 记忆力训.005620F8
00537E8E 83C4 10 add esp,10
00537E91 8945 BC mov dword ptr ss:[ebp-44],eax 机器码变为"1079272739" ,这是(我的机器码/9)得的数!
00537E94 68 01030080 push 80000301
********************************************************************************
经过一系列的浮点运算~~~发现这个地方老是和假码对比!!!
0053832D 8B5D 08 mov ebx,dword ptr ss:[ebp+8]
00538330 8B03 mov eax,dword ptr ds:[ebx] 这里有可疑!
00538332 85C0 test eax,eax
00538334 75 05 jnz short 记忆力训.0053833B
00538336 B8 CAC24000 mov eax,记忆力训.0040C2CA
*******************************************************
下面是我找到的注册码信息:
堆栈 ds:[0012F0C0]=039A61F0, (ASCII "1111111111")
eax=0024A468, (ASCII "988")
**********************************************************
eax=039A6598, (ASCII "266027380")
堆栈 ss:[0012F068]=039A6598, (ASCII "266027380")
**********************************************************
堆栈 ds:[0012F0C0]=039A61F0, (ASCII "1111111111")
eax=039A6598, (ASCII "187695")
**********************************************************
堆栈 ss:[0012F068]=039A6598, (ASCII "33257")
eax=039A6598, (ASCII "33257")
**********************************************************
堆栈 ss:[0012F080]=039A6518, (ASCII "3325")
ebx=039A64F8
**********************************************************
堆栈 ss:[0012F07C]=039A24F8, (ASCII "5320")
ebx=039A6518
**********************************************************
堆栈 ss:[0012F078]=039A6558, (ASCII "18")
ebx=039A24F8
堆栈 ss:[0012F074]=039A6578, (ASCII "7695")
ebx=039A6558
**********************************************************
机器码:9713454651
注册码:988266027380 187695 33257 5320
软件注册了!
其实我对这款软件的兴趣是他的第二个软件!
方法是差不多的,但是要返回下 bp GetPrivateProfileStringA 要找到恰当的返回时机!
还有那个算法CALL是retn 3-4后的第二个CALL。注意分析就行~呵呵~
晕哦!DEMO版~~悲剧
这软件的作者还留一手啊~~~
下面我把第一破解的软件的分析过程上传上来!~
记忆力训练软件(分析一).txt
(6.23 KB, 下载次数: 18)
|
-
|