一路问情自动注水机破剖解析[网络技术]
本文“一路问情自动注水机破剖解析[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
文/图 December
===================================
一路问情?其实并不真的是问情,它是一个论坛名称!一路注水,当然是一路注水了,不然哪来那么多注水狂?这一次的目标是一路问情出品的一个论坛自动注水机,相信很多人都用过此类注水机.闲来无事,无意发现这么一款注水机,很自然的就想看看它的注册考证机制,于是就有了本文.
这款程序的利用介绍我就不说了,喜好的可以到其官方找具体教程.将程序丢进PEiD检测到加了tElock 0.98b1的壳,背面还发现有个Overlay,如图1所示,初步猜想大概是个用易语言编写的程序,先脱壳看看猜想能否成立吧!
图1
脱壳历程
用OD载入程序后,停在下面的代码处.
00473BD6 A>^\E9 25E4FFFF jmp Ask_Love.00472000
00473BDB 0000 add byte ptr ds:[eax],al
tElock 0.98b1载入后大都第一行是JMP,利用二次内存断点来脱吧.在OD翻开"内存",快速键是"Alt+M",可以看到"DATA"段,设置"内存写入断点",如图2所示,"Shift+F9"后,内存断点发见效应,在写到00407000时中止了下来,排除方才下的内存断点,持续翻开"内存",在"CODE"段设置"内存拜候断点",如图3所示.大家注意看图2和图3,下的内存断点是差别的,不要混合了."Shift+F9"后,发现刚好停在OEP处.
图2
图3
0040389F 55 push ebp
004038A0 8BEC mov ebp,esp
004038A2 6A FF push -1
004038A4 68 F8724000 push Ask_Love.004072F8
进口为0040389F是易语言的一个特有进口,和开始猜想的一样,可见大量的实战操练对脱壳破解来说是非常有效的.按照这个进口,易语言版本应当是最新版本,4.03版本以下的还没有发现有这个进口.题外话就不多说了,既然到了OEP了,自然就把它Dump出来了,启动LORDPE,挑选程序的进程,右键挑选"dump full",如图4所示.Dump出来后,程序是无法正常运行的,还需求修复一下.启动ImportREC1.6,在OEP填上389F,再点"自动查找IAT"后,再点击"获得输入表",发现N多无法辨认出来的函数,不过不要紧,利用"跟踪级别3"便可以找出精确的函数出来了,最后发现有一个函数还是无法辨认出来,将其Cut掉便可以了,如图5所示.
图4
图5
修复后,运行脱壳程序会弹出一个错误对话框,这是由于附加数据没有补上造成的.很多人对易语言的这种特点不是很理解,所以大多会认为是自校验.下面把附加数据补上去吧,把脱壳后的程序丢进PEiD中,挑选"附加数据v1.0"插件,在"资源文件"上挑选脱壳前的程序,在"目标文件"上挑选脱壳后的程序,最后点"复制附加数据"便可以把附加数据补上去了.
破解历程
运行脱壳后的程序,发现提醒能否需求注册,点"是",随便注册一下,如图6所示.竟然有这提醒?实在是太需求了,呵呵!
图6
用OD载入,利用插件搜索字符串后,没发现图中呈现的提醒内容,所以直接走下断点这条路了.下断点:"bp MessageBoxA",即刻就中止了下来,不过这个不是我们想要的后果,再运行一次,会呈现注册框,这才是需求的,随便注册一下后,便可以中止下来了.
77D5058A u> 8BFF mov edi,edi
;中止在这里
77D5058C 55 push ebp
77D5058D 8BEC mov ebp,esp
77D5058F 833D BC04D777 >cmp dword ptr ds:[77D704BC],0
77D50596 74 24 je short user32.77D505BC
撤消方才下的断点,返回去.
10062170 FF15 A0260C10 call dword ptr ds:[<&USER32.MessageB>; user32.MessageBoxA
10062176 5F pop edi ;返回到这里
10062177 83F8 03 cmp eax,3
本来10062170这里就是调用了那个失利对话框的地方,不管它了,这里的信息用处不大,单步一向走,来到下面的代码处.
00469CBE E8 DE4A0000 call Unpack.0046E7A1
;机械码
00469CC3 83C4 10 add esp,10
00469CC6 8945 FC mov dword ptr ss:[ebp-4],eax
00469CC9 68 DA6D4500 push Unpack.00456DDA
;ASCII "SHMILY"
00469CCE FF75 FC push dword ptr ss:[ebp-4]
00469CD1 B9 02000000 mov ecx,2
00469CD6 E8 17B2FFFF call Unpack.00464EF2
;机械码和固定字符串SHMILY衔接起来
00469CDB 83C4 08 add esp,8
00469CDE 8945 F8 mov dword ptr ss:[ebp-8],eax
;eax保存后果
00469CE1 8B5D FC mov ebx,dword ptr ss:[ebp-4]
………
00469D48 B8 03000000 mov eax,3
00469D4D E8 314A0000 call Unpack.0046E783
;对上面衔接后的后果举行MD5运算
跟进这个call,可以发现下面的代码.
02109BCB C742 4C 012345>mov dword ptr ds:[edx+4C],67452301
02109BD2 C742 50 89ABCD>mov dword ptr ds:[edx+50],EFCDAB89
02109BD9 C742 54 FEDCBA>mov dword ptr ds:[edx+54],98BADCFE
02109BE0 C742 58 765432>mov dword ptr ds:[edx+58],10325476
由这里可以判断程序利用了MD5密码学算法,持续往下看.
00469D52 83C4 10 add esp,10
00469D55 8945 F0 mov dword ptr ss:[ebp-10],eax
;eax保存后果
……
00469D81 BB 50010000 mov ebx,150
00469D86 E8 0A4A0000 call Unpack.0046E795
;小写转为大写
00469D8B 83C4 10 add esp,10
……
00469DC9 83F8 00 cmp eax,0
00469DCC B8 00000000 mov eax,0
00469DD1 0F94C0 sete al
;检测条件为真还是为假
00469DD4 8945 E4 mov dword ptr ss:[ebp-1C],eax
00469DD7 8B5D E8 mov ebx,dword ptr ss:[ebp-18]
……
00469DF4 83C4 04 add esp,4
00469DF7 837D E4 00 cmp dword ptr ss:[ebp-1C],0
;对比
00469DFB 0F84 13010000 je Unpack.00469F14
;相等的话就跳到注册失利处
00469E01 6A FF push -1
……
00469E35 68 A86E4500 push Unpack.00456EA8
;ASCII "SOFTWARE\asklove\autobbs\name"
00469E3A 68 01030080 push 80000301
00469E3F 6A 00 push 0
……
00469E9A 6A 00 push 0
00469E9C 68 C66E4500 push Unpack.00456EC6
; ASCII "SOFTWARE\asklove\autobbs\sn"
00469EA1 68 01030080 push 80000301
00469EA6 6A 00 push 0
很明显,上面就是这个程序的算法部份,简单阐明一下吧.程序将从用户机械上获得的机械码和固定字符串SHMILY衔接起来,然后举行MD5运算,再将其转为大写,就是注册码了,算法非常简单.假如要爆破的话,可以在00469DFB处考虑.注册成功后,注册信息将写入注册表,机械码写到HKEY_LOCAL_MACHINE\SOFTWARE\asklove\autobbs\name中,注册码写到HKEY_LOCAL_MACHINE\SOFTWARE\asklove\autobbs\sn中.
后记
程序算法对比简单,注册机我就不写了,有爱好的朋友可以自行研究一下.既然程序注册算法搞定了,我也用这个东西走走论坛,灌注水先啦
以上是“一路问情自动注水机破剖解析[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |