千羽huilai 发表于 2018-9-1 03:51

对付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退出函数完美附图:希望能对你有所帮助,如果排的有误,请大家见谅,不喜勿喷祝愿吾爱汇编论坛红红火火,时间不早了 ,晚安




ROSE4KLY 发表于 2018-9-1 09:49

虽然还没有学到那里,还是顶一下

493688702 发表于 2018-9-1 10:38

谢谢楼主
学习一下
举一反三
支持恒大

byh3025 发表于 2018-9-1 11:07

很详细的教程,谢谢了

winnerishope 发表于 2018-9-1 17:32

就喜欢看图文,言简意赅,直中要害

668 发表于 2018-9-2 12:22

新人来学习学习,图文很详细

gylgw 发表于 2018-9-8 07:12

谢谢楼主分享

493688702 发表于 2018-9-8 08:21

多见识 {:5_116:}
多学习 {:5_117:}
多进步{:5_119:}

TAOGE5387 发表于 2018-9-8 08:37

学习学习
研究研究
{:5_116:}

Snprszy 发表于 2018-9-29 14:19

很详细的教程,谢谢了
页: [1] 2 3
查看完整版本: 对付VB无提示框的方法-追码-爆破-新手教程-大牛飘过