今天外面冷死了,屋里杯中的水都卡都快洁冰了,但了了心情特别好,应朋友之邀搞定个课件软件。这个vb的东东终于给搞开了。^.^好了,圆规正传,把这个过程拿来与我等菜鸟分享一下!`大鸟就不要笑了。
软件名称:某课件软件(名字就不说了吧)
软件语言:vb5
使用工具:ollydbg+hiew
软件正常运行后出来个密码框,让你输入密码,输错后程序直接退出,不做任何提示。 由于输完密码确认后,直接退出,所以很难直接用winhex试着看能不能直接找到名码。用wasm打开全是乱麻。了了对vb也是相当的的不熟悉,所以一下子找不找边了。 想了想,还是想先不让软件每次都自动退出。接着想啊想!~……
搜索MSVBVM60.__vbaEnd,找见了
00405E03 . 83C4 0C add esp,0C
00405E06 . 81FF D2070>cmp edi,7D2
00405E0C 74 06 je short GetPassA.00405E14 //不会退出
00405E0E . FF15 20104>call dword ptr ds:[<&MSVBVM60.__vbaE>; MSVBVM60.__vbaEnd //bye !~只有领来一次~
00405E14 > 8B16 mov edx,dword ptr ds:[esi]
00405E16 . 56 push esi
在00405E06处下断,测试发现焦点就在这里,程序读出来的edi是7D5(2005),不相等就会退出,现改掉00405E0C处,jne……, 接着试着输入错误的“lele”,接着执行,还好,密码错误后还有提示了。
00405E49 . 57 push edi //1pl0
00405E4A . 50 push eax //lele
00405E4B . FF15 3C104>call dword ptr ds:[<&MSVBVM60.__vbaH>; MSVBVM60.__vbaHresultCheckObj
00405E51 > 8B45 E4 mov eax,dword ptr ss:[ebp-1C]
00405E54 . 8B4E 3C mov ecx,dword ptr ds:[esi+3C]
00405E57 . 50 push eax
00405E58 . 51 push ecx
上面看见了一个鲜明的对比,
00405FB9 . 6A 10 push 10
00405FBB . 50 push eax
00405FBC . FF15 4C104>call dword ptr ds:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox //错误提示
00405FC2 . 8D4D A0 lea ecx,dword ptr ss:[ebp-60]
直道出现"错误"的提示框。
呵呵,基本上密码也看见了,再来一次,‘1p10’,ok,正式进入了软件的界面,一切顺利。
搞这个东东,听其来却是简单,关键是刚才是的自动关闭,不报错,让我发愁的。呵呵,只要好好努力,总会有结果的。
第一次写文章,大家勿笑!~
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课