【破文标题】MSN聊天记录远程查看器v2.3破解分析
【破文作者】酷子
【作者邮箱】1183204@qq.com
【作者主页】1183204@qq.com
【破解工具】peid0.94+OD
【破解平台】XPsp2
【软件名称】MSN聊天记录远程查看器v2.3
【软件大小】308k
【原版下载】http://shareware.skycn.com/soft/12751.htm
【保护方式】PECompact 1.68 - 1.84 -> Jeremy Collake [覆盖]
【软件简介】★目前唯一一款可以查看远程MSN聊天记录的软件!
★MSN聊天记录远程查看器可以免密码查看本地计算机及远程计算机的MSN聊天记录
★它由本地端及远程端共同组成,(远程端不提供下载,需要您注册后,由我们亲自发送到您的邮箱中)
★本地端:负责查看本地计算机上的所有MSN聊天记录
★远程端:负责将远程计算机上的MSN聊天记录发回到您的邮箱中(对方每次重新启动电脑或者持续运行了2-3小时左右均会发送记录)
【破解声明】初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【破解过程】费话不多说,还是先查下有没有壳
peid一下PECompact 1.68 - 1.84 -> Jeremy Collake [覆盖]的壳
用esp定律可以轻松到达oep
0045BE48 55 PUSH EBP 这里就是程序oep了
0045BE49 8BEC MOV EBP,ESP
0045BE4B 83C4 F4 ADD ESP,-0C
0045BE4E B8 A0BC4500 MOV EAX,msnsee.0045BCA0
0045BE53 E8 84A0FAFF CALL msnsee.00405EDC
0045BE58 A1 2CD84500 MOV EAX,DWORD PTR DS:[45D82C]
0045BE5D 8B00 MOV EAX,DWORD PTR DS:[EAX]
脱壳后,运行,出现提示:Incomplete Zip File,同时会生成一个xduyefda.rar的文件
说明文件有自效验,想去除自效验的,但看了下,感觉不怎么好找,于是放弃了(人懒是这样的哈)
条条道路通罗马,脱了不行,我就不脱他,试试带壳破解,看看能不能行
说做就做,od载入程序,先用esp定律到达oep
然后f9运行,程序是运行起来了,但我发现程序脱离了od运行起来的,因为我发现模块到了:模块-ntdll,并且关掉od,程序不会一同关掉。
难道又走不通,还有路可走吗?
对了,还有一个,od的附加功能
一切重来,这次先运行程序,让他先运行起来
然后打开od,点击文件—附加,找到程序的进程,也就是msnsee这个进程,点击它,再点附加
好了,附加好了,再点ctrl+f12重新运行程序,再f9运行
ok这下程序没有脱离od了,看来这样能行,有门了
好了程序运行起来了,开始正式破解了,前奏太长了点哈
点注册,填入 机器码:1183204@qq.com
注册码:11111 22222 33333 44444
点确定看看,下面出现:错误的注册码
查找字符串,没有任何东西
试了几个断点都没有用,唉,还是用万能断点吧
好,用插件下好万能断点,点确定
嘿嘿,断下来了哈
alt+f9返回到程序领空
004090A3 FF91 A0000000 CALL DWORD PTR DS:[ECX+A0]
004090A9 3BC6 CMP EAX,ESI 返回来到这里了
004090AB DBE2 FCLEX
004090AD 7D 12 JGE SHORT msnsee.004090C1
004090AF 68 A0000000 PUSH 0A0
004090B4 68 9C454000 PUSH msnsee.0040459C
004090B9 53 PUSH EBX
004090BA 50 PUSH EAX
然就就要有耐性了哈,一路f8向下走,中途遇到jmp向回跳的就在下句f4运行过去
下面的代码十分十分的遥远,甚至我都开始怀疑我找错地方了,最后还是我的耐性帮助了我
一直按不知道n下f8
一直到
00409FDD 50 PUSH EAX
00409FDE FF15 44104000 CALL DWORD PTR DS:[401044] ; msvbvm60.__vbaHresultCheckObj
00409FE4 8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38] ; 走到这里能看到我的假码22222
00409FE7 8B4D C4 MOV ECX,DWORD PTR SS:[EBP-3C] ; 看到11111
00409FEA 50 PUSH EAX ; 寄存器个也看到假码了,耐力呀
00409FEB 51 PUSH ECX
00409FEC FF15 40104000 CALL DWORD PTR DS:[401040] ; msvbvm60.__vbaStrCat
00409FF2 8BD0 MOV EDX,EAX ; 上面一句把两串假码连接起来2222211111
00409FF4 8D4D BC LEA ECX,DWORD PTR SS:[EBP-44]
00409FF7 FFD6 CALL ESI
00409FF9 8B55 C0 MOV EDX,DWORD PTR SS:[EBP-40]
00409FFC 50 PUSH EAX ; 看到33333
00409FFD 52 PUSH EDX
00409FFE FF15 40104000 CALL DWORD PTR DS:[401040] ; msvbvm60.__vbaStrCat
0040A004 8BD0 MOV EDX,EAX ; 连接成222221111133333
0040A006 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C]
0040A009 FFD6 CALL ESI
0040A00B 50 PUSH EAX
0040A00C 8B45 B8 MOV EAX,DWORD PTR SS:[EBP-48]
0040A00F 50 PUSH EAX ; 44444
0040A010 FF15 40104000 CALL DWORD PTR DS:[401040] ; msvbvm60.__vbaStrCat
0040A016 8D4D 80 LEA ECX,DWORD PTR SS:[EBP-80] ; 连接成22222111113333344444
0040A019 8985 D8FEFFFF MOV DWORD PTR SS:[EBP-128],EAX
0040A01F 6A 14 PUSH 14
0040A021 8D95 60FFFFFF LEA EDX,DWORD PTR SS:[EBP-A0]
0040A027 51 PUSH ECX
0040A028 8D85 50FFFFFF LEA EAX,DWORD PTR SS:[EBP-B0]
0040A02E 52 PUSH EDX
0040A02F 50 PUSH EAX
0040A030 C785 D0FEFFFF 0>MOV DWORD PTR SS:[EBP-130],8008
0040A03A FF15 FC104000 CALL DWORD PTR DS:[4010FC] ; msvbvm60.__vbaVarCat
0040A040 8D8D 30FFFFFF LEA ECX,DWORD PTR SS:[EBP-D0] 这里开始又是一些连接
0040A046 50 PUSH EAX 我想可能是真码做的一些连接吧(个人猜想)
0040A047 8D95 20FFFFFF LEA EDX,DWORD PTR SS:[EBP-E0]
0040A04D 51 PUSH ECX
0040A04E 52 PUSH EDX
0040A04F FF15 FC104000 CALL DWORD PTR DS:[4010FC] ; msvbvm60.__vbaVarCat
0040A055 50 PUSH EAX
0040A056 8D85 00FFFFFF LEA EAX,DWORD PTR SS:[EBP-100]
0040A05C 8D8D F0FEFFFF LEA ECX,DWORD PTR SS:[EBP-110]
0040A062 50 PUSH EAX
0040A063 51 PUSH ECX
0040A064 FF15 FC104000 CALL DWORD PTR DS:[4010FC] ; msvbvm60.__vbaVarCat
0040A06A 8D95 E0FEFFFF LEA EDX,DWORD PTR SS:[EBP-120]
0040A070 50 PUSH EAX
0040A071 52 PUSH EDX
0040A072 FF15 6C114000 CALL DWORD PTR DS:[40116C] ; msvbvm60.rtcLeftCharVar
0040A078 8D85 D0FEFFFF LEA EAX,DWORD PTR SS:[EBP-130]
0040A07E 8D8D E0FEFFFF LEA ECX,DWORD PTR SS:[EBP-120]
0040A084 50 PUSH EAX
0040A085 51 PUSH ECX
0040A086 FF15 B0104000 CALL DWORD PTR DS:[4010B0] ; msvbvm60.__vbaVarTstEq
0040A08C 8985 1CFDFFFF MOV DWORD PTR SS:[EBP-2E4],EAX 这里有个变量的比较函数,重要的地方
0040A092 8D55 B8 LEA EDX,DWORD PTR SS:[EBP-48]
0040A095 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
0040A098 52 PUSH EDX
0040A099 8D4D C0 LEA ECX,DWORD PTR SS:[EBP-40]
0040A09C 50 PUSH EAX
0040A09D 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
0040A0A0 51 PUSH ECX
0040A0A1 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
0040A0A4 52 PUSH EDX
0040A0A5 8D4D C8 LEA ECX,DWORD PTR SS:[EBP-38]
0040A0A8 50 PUSH EAX
0040A0A9 51 PUSH ECX
0040A0AA 6A 06 PUSH 6
0040A0AC FF15 34114000 CALL DWORD PTR DS:[401134] ; msvbvm60.__vbaFreeStrList
0040A0B2 8D55 A0 LEA EDX,DWORD PTR SS:[EBP-60]
0040A0B5 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C]
0040A0B8 52 PUSH EDX
0040A0B9 8D4D A8 LEA ECX,DWORD PTR SS:[EBP-58]
0040A0BC 50 PUSH EAX
0040A0BD 8D55 AC LEA EDX,DWORD PTR SS:[EBP-54]
0040A0C0 51 PUSH ECX
0040A0C1 52 PUSH EDX
0040A0C2 6A 04 PUSH 4
0040A0C4 FF15 34104000 CALL DWORD PTR DS:[401034] ; msvbvm60.__vbaFreeObjList
0040A0CA 8D85 E0FEFFFF LEA EAX,DWORD PTR SS:[EBP-120]
0040A0D0 8D8D D0FEFFFF LEA ECX,DWORD PTR SS:[EBP-130]
0040A0D6 50 PUSH EAX
0040A0D7 8D95 F0FEFFFF LEA EDX,DWORD PTR SS:[EBP-110]
0040A0DD 51 PUSH ECX
0040A0DE 52 PUSH EDX
0040A0DF 8D85 00FFFFFF LEA EAX,DWORD PTR SS:[EBP-100]
0040A0E5 8D8D 20FFFFFF LEA ECX,DWORD PTR SS:[EBP-E0]
0040A0EB 50 PUSH EAX
0040A0EC 8D95 10FFFFFF LEA EDX,DWORD PTR SS:[EBP-F0]
0040A0F2 51 PUSH ECX
0040A0F3 8D85 30FFFFFF LEA EAX,DWORD PTR SS:[EBP-D0]
0040A0F9 52 PUSH EDX
0040A0FA 8D8D 50FFFFFF LEA ECX,DWORD PTR SS:[EBP-B0]
0040A100 50 PUSH EAX
0040A101 8D95 40FFFFFF LEA EDX,DWORD PTR SS:[EBP-C0]
0040A107 51 PUSH ECX
0040A108 8D85 60FFFFFF LEA EAX,DWORD PTR SS:[EBP-A0]
0040A10E 52 PUSH EDX
0040A10F 8D4D 80 LEA ECX,DWORD PTR SS:[EBP-80]
0040A112 50 PUSH EAX
0040A113 8D95 70FFFFFF LEA EDX,DWORD PTR SS:[EBP-90]
0040A119 51 PUSH ECX
0040A11A 8D45 90 LEA EAX,DWORD PTR SS:[EBP-70]
0040A11D 52 PUSH EDX
0040A11E 50 PUSH EAX
0040A11F 6A 0D PUSH 0D
0040A121 FF15 2C104000 CALL DWORD PTR DS:[40102C] ; msvbvm60.__vbaFreeVarList
0040A127 83C4 68 ADD ESP,68
0040A12A 66:83BD 1CFDFFF>CMP WORD PTR SS:[EBP-2E4],0
0040A132 0F84 E6050000 JE msnsee.0040A71E 关键跳,关键跳哟
0040A138 8B0F MOV ECX,DWORD PTR DS:[EDI]
0040A13A 57 PUSH EDI
走到
0040A086 FF15 B0104000 CALL DWORD PTR DS:[4010B0] ; msvbvm60.__vbaVarTstEq
看到上面有两个push eax, push ecx
在寄存器窗口中,指着eax数据右键—数据窗口上跟随,看到
0012F3D8 00000000
0012F3DC 0012F448
0012F3E0 001A2BD4 UNICODE "22222111113333344444"
0012F3E4 0012F438
0012F3E8 00000000
0012F3EC 00177E84
0012F3F0 001694AC UNICODE "1046185816584803304"
0012F3F4 00177DF8
0012F3F8 00000000
0012F3FC 0012F448
程序就是把两个值传入堆栈中,供__vbaVarTstEq调用的来做比较的
下面那串数是不就是就我们找了这么久的真的注册码呀
看我们的假码22222111113333344444和我们输入的时侯是做了位置变换的,所以下面这串数字我也来和假码一样他下变换
假码11111 22222 33333 44444
真码85816 10461 58480 3304
这是我们要的注册码呢,试下不就行了
呵呵,注册成功
唉,又可能以收工了
哦,对了,注册成功后要生成c:\hiberfix.sys这个文件,这就是注册文件哈,把他删了软件就又是没注册了哟
总结下 机器码:1183204@qq.com
注册码:85816 10461 58480 3304
注册后生成 c:\hiberfix.sys文件
------------------------------------------------------------------------
【破解总结】这个软件难度是不大,但得要有好的耐心,没耐心的话中途就倒下了哈
人常说:熟读唐诗300首 ,不会做诗也会吟
我相信:勤做练习几百个, 不会破解也练成
------------------------------------------------------------------------
【版权声明】转载请注明出处,请注明作者并保持文章的完整, 谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)