-
-
[原创]学习心得
-
发表于:
2009-3-5 09:21
5932
-
首先查壳 ,无壳。是vb5.0/6.0编写的
od载入,运行。点注册,输入假码,点确定。出现注册错误对话框,此时不要点确定。暂停od,打开调用堆栈窗口
找到
地址=0012F024
堆栈=005B5494
函数例程 / 参数=? MSVBVM60.rtcMsgBox
调用来自=MP3转换?005B548E
框架=0012F020
跟随来到这里:
005B5479 . 8D85 78FFFFFF lea eax,dword ptr ss:[ebp-88]
005B547F . 50 push eax
005B5480 . 8D4D 88 lea ecx,dword ptr ss:[ebp-78]
005B5483 . 51 push ecx
005B5484 . 8D55 98 lea edx,dword ptr ss:[ebp-68]
005B5487 . 52 push edx
005B5488 . 6A 00 push 0 ; /Arg2 = 00000000
005B548A . 8D45 A8 lea eax,dword ptr ss:[ebp-58] ; |
005B548D . 50 push eax ; |Arg1
005B548E . FF15 A4104000 call dword ptr ds:[<&MSVBVM60.#595>] ; \rtcMsgBox 跟踪到这里
005B5494 . 8D8D 78FFFFFF lea ecx,dword ptr ss:[ebp-88]
005B549A . 51 push ecx
005B549B . 8D55 88 lea edx,dword ptr ss:[ebp-78]
005B549E . 52 push edx
005B549F . 8D45 98 lea eax,dword ptr ss:[ebp-68]
005B54A2 . 50 push eax
在005B548D 下断,向上分析,发现本段段首并下断
005B4DC0 > \55 push ebp ;段首
005B4DC1 . 8BEC mov ebp,esp
005B4DC3 . 83EC 18 sub esp,18
005B4DC6 . 68 062E4000 push <jmp.&MSVBVM60.__vbaExceptHandler> ; SE 句柄安装
005B4DCB . 64:A1 0000000>mov eax,dword ptr fs:[0]
005B4DD1 . 50 push eax
005B4DD2 . 64:8925 00000>mov dword ptr fs:[0],esp
005B4DD9 . B8 18010000 mov eax,118
005B4DDE . E8 1DE0E4FF call <jmp.&MSVBVM60.__vbaChkstk>
005B4DE3 . 53 push ebx
005B4DE4 . 56 push esi
005B4DE5 . 57 push edi
005B4DE6 . 8965 E8 mov dword ptr ss:[ebp-18],esp
然后跟踪分析,发现注册过程:005B504D取真码,005B5051 取假码,005B5055 比较,比较后标志放在eax内,若EAX为1,注册不成功;eax为0,注册成功!!
005B5035 . FF15 78104000 call dword ptr ds:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
005B503B . 8985 DCFEFFFF mov dword ptr ss:[ebp-124],eax
005B5041 . EB 0A jmp short MP3转换?005B504D
005B5043 > C785 DCFEFFFF>mov dword ptr ss:[ebp-124],0
005B504D > 8B4D C4 mov ecx,dword ptr ss:[ebp-3C] ; 取真码(在寄存器窗口可以看到)
005B5050 . 51 push ecx
005B5051 . 8B55 C0 mov edx,dword ptr ss:[ebp-40] ; 取假码
005B5054 . 52 push edx
005B5055 . FF15 F8104000 call dword ptr ds:[<&MSVBVM60.__vbaStrCm>; 比较
005B505B . F7D8 neg eax ; EAX为1,注册不成功;eax为0,注册成功
005B505D . 1BC0 sbb eax,eax
005B505F . 40 inc eax
005B5060 . F7D8 neg eax
005B5062 . 66:8985 20FFF>mov word ptr ss:[ebp-E0],ax
005B5069 . 8D45 C0 lea eax,dword ptr ss:[ebp-40]
005B506C . 50 push eax
005B506D . 8D4D C4 lea ecx,dword ptr ss:[ebp-3C]
005B5070 . 51 push ecx
005B5071 . 6A 02 push 2
005B5073 . FF15 E4114000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStrList
005B5079 . 83C4 0C add esp,0C
005B507C . 8D55 B8 lea edx,dword ptr ss:[ebp-48]
005B507F . 52 push edx
005B5080 . 8D45 BC lea eax,dword ptr ss:[ebp-44
可写内存注册机005B504D > 8B4D C4
完毕,我是很菜的菜鸟,不足之处请指正。2009.3.5
原文件:http://www.youtubeget.com/1xg.com.cn/mp3.rar
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!