对付VB无提示框的方法-追码-爆破-新手教程-大牛飘过
闲谈:今天闲着没事,翻看以前的教程发现一个VB小程序 无任何提示框于是兴趣来了 也许有人录过此教程 对于我等小白来说正是练手的时候到了(吾爱汇编论坛1周年2000个最新逆向视频教程(50G)-第4部分按钮事件 -vb无提示框的一般逆向分析思路)这位兄弟没有完成[目标软件】: Crackme 课件里有我就不提供了
Microsoft Visual Basic 5.0 / 6.0 无壳
bp __vbaStrCmp 比较字符串是否相等
bp __vbaStrComp 比较字符串是否相等
bp __vbaFreeStr 对付VB程序重启验证
介绍三种方法直达本心
图1:
刚打开这个Crackme红线标识的地方等下就知道了
拖进OD
输入:xuepojie 123456789 987654321
图2:
点击无任何提示
搜搜字符串UINCODE
图3:
只看到GOOD BOY 字样,点击进入
图:4:
往上拉找到段首 F2下段
004027C0 > \55 push ebp //段首 F2下段
004027C1 .8BEC mov ebp,esp
004027C3 .83EC 0C sub esp,0xC
004027C6 .68 26114000 push <jmp.&MSVBVM60.__vbaExceptHandler>;SE 处理程序安装
004027CB .64:A1 0000000>mov eax,dword ptr fs:
(此为方法一)
===========================邪恶的分割线===================================
重载程序下断点:
bp __vbaStrCmp 比较字符串是否相等
bp __vbaStrComp 比较字符串是否相等
也可以点击E图标在点击所在位置就会出现这个软件所需要的函数
图5:
断在这里 F9运行起来
图6:
点击YES之后断下来了 F8单步往下走
图7:
00402A3F .FFD7 call edi ;关键CALL; <&MSVBVM60.__vbaStrCmp>
00402A41 .85C0 test eax,eax
00402A43 .0F85 34010000 jnz Crackme.00402B7D ;关键跳
(此为方法二)
===========================邪恶的分割线===================================
VB万能断点:OD载入后,CTRL+B, ()81 6C 241. 然后,就在下面的JMP处F2下断,下完后CTRL+L,如果还有,就继续下断点. 2. 下完断点后,运行程序,点击相应的按纽,OD就会断下来了:图8:
(此为方法三)================================================方法四的话就需要相应的FZ工具把VB的按钮标题修改一下,我就不阐述了 自己搜索论坛 百度===========================邪恶的分割线===================================004027C0 > \55 push ebp //还记得这里吗??? (段首)004027C1 .8BEC mov ebp,esp004027C3 .83EC 0C sub esp,0xC004027C6 .68 26114000 push <jmp.&MSVBVM60.__vbaExceptHandler>;SE 处理程序安装
追码开始:004027C0 > \55 push ebp 段首下段 重载程序 输入xueoujie 123456789 987654321F8单步往下走开始分析图9:
下面分析我就不上图了节约空间00402885 .FFD6 call esi ;<&MSVBVM60.__vbaStrMove>00402887 .8D4D C4 lea ecx,dword ptr ss: //读取我们的输入的:9876543210040288A .FF15 C0104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeO>;MSVBVM60.__vbaFreeObj===========================邪恶的分割线===================================004028EE .FFD6 call esi004028F0 .8D4D C4 lea ecx,dword ptr ss: //读取我们输入的:xuepojie004028F3 .FF15 C0104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeO>;MSVBVM60.__vbaFreeObj===========================邪恶的分割线===================================0040295B .FFD6 call esi0040295D .8D4D C4 lea ecx,dword ptr ss: //读取我们输入的:12345678900402960 .FF15 C0104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeO>;MSVBVM60.__vbaFreeObj===========================邪恶的分割线===================================图10:
00402A39 .52 push edx //push edx edx=98765432100402A3A .68 E0214000 push Crackme.004021E0 ;Shooter 在push个 作者设定的 Shooter00402A3F .FFD7 call edi ;关键CALL; <&MSVBVM60.__vbaStrCmp>关于算法的我没去看00402A41 .85C0 test eax,eax //这里进行比较不相等则跳 相等则不跳00402A43 .0F85 34010000 jnz Crackme.00402B7D ;关键跳走到这里 堆栈出现了Shooter和我们的987654321进行比较那我们重新输入Shooter,把987654321替换Shooter 看看会是什么样的情况图11:
00402A39 .52 push edx00402A3A .68 E0214000 push Crackme.004021E0 ;Shooter00402A3F .FFD7 call edi ;关键CALL; <&MSVBVM60.__vbaStrCmp>00402A41 .85C0 test eax,eax00402A43 .0F85 34010000 jnz Crackme.00402B7D ;关键跳 //这里不跳了
图12:
堆栈窗口出现SCT-jie8xue和我们输入的xuepojie比较那我们把xuepojie替换SCT-jie8xue 看看会是什么样的情况图13:
寄存器窗口和堆栈窗口出现SCT-xue11SCT和我们输入的123456789比较 那我们把123456789替换SCT-xue11SCT看看会是什么样的情况图14:
哈哈成功了 把xuepojie 替换成SCT-jie8xue 把123456789替换SCT-xue11SCT把987654321替换 Shooter注意:其中有一个是错误的话就会程序终止无法运行===========================邪恶的分割线===================================爆破方法:00402A3F .FFD7 call edi ;关键CALL; <&MSVBVM60.__vbaStrCmp>00402A41 .85C0 test eax,eax00402A43 0F85 34010000 jnz Crackme.00402B7D ;关键跳把JNZ该NOP 只改这一处的话程序无法运行===========================邪恶的分割线===================================00402B34 /74 41 je XCrackme.00402B77 //这里NOP不改则退出00402B36 . |A1 10304000 mov eax,dword ptr ds: ;@g_00402B3B . |85C0 test eax,eax00402B3D . |75 10 jnz XCrackme.00402B4F00402B3F . |68 10304000 push Crackme.00403010 ;@g_00402B44 . |68 DC184000 push Crackme.004018DC00402B49 . |FF15 80104000 call dword ptr ds:[<&MSVBVM60.__vbaNew2>>;MSVBVM60.__vbaNew200402B4F > |8B35 10304000 mov esi,dword ptr ds: ;@g_00402B55 . |8B06 mov eax,dword ptr ds:00402B57 . |68 F4214000 push Crackme.004021F4 ;GOOD BOY00402B5C . |56 push esi00402B5D . |FF50 54 call dword ptr ds:00402B60 . |DBE2 fclex00402B62 . |85C0 test eax,eax00402B64 . |7D 17 jge XCrackme.00402B7D00402B66 . |6A 54 push 0x5400402B68 . |68 BC1D4000 push Crackme.00401DBC00402B6D . |56 push esi00402B6E . |50 push eax00402B6F . |FF15 30104000 call dword ptr ds:[<&MSVBVM60.__vbaHresu>;MSVBVM60.__vbaHresultCheckObj00402B75 . |EB 06 jmp XCrackme.00402B7D00402B77 > \FF15 1C104000 call dword ptr ds:[<&MSVBVM60.__vbaEnd>] ;MSVBVM60.__vbaEnd // VB退出函数完美附图:希望能对你有所帮助,如果排的有误,请大家见谅,不喜勿喷祝愿吾爱汇编论坛红红火火,时间不早了 ,晚安
虽然还没有学到那里,还是顶一下 谢谢楼主
学习一下
举一反三
支持恒大
很详细的教程,谢谢了 就喜欢看图文,言简意赅,直中要害 新人来学习学习,图文很详细 谢谢楼主分享 多见识 {:5_116:}
多学习 {:5_117:}
多进步{:5_119:} 学习学习
研究研究
{:5_116:} 很详细的教程,谢谢了