既然菜了,就要努力啊,这是个必经的过程.不要气馁,我为自己打气.感谢看雪论坛给了个交流的平台,再次谢谢.今天又学分析一个简单的程序,我把整个过程详细地说出来,虽然简单,初学最忌小而不为.源程序由群上的朋友提供,下面我们开始,
1.照旧运行程序

好,没输入的时候会提示的.下来输入用户和密码,可是没反应,猜是要正确了就会对话框的
用peid检测一下,没壳,不知道什么语言编写.我们先来找没输入密码的提示框是在哪里运行的.用OD附加,标题上显示到ntDLL,让它回到软件的领空.在反汇编窗口,右键==>查看==>我这里选择的是"EE",好了,回到软件的领空了.
按住CTRL+N来看看导入了什么函数,来到这里
图2:

为messageboxa下断,右键==>在每个参考上设置断点,此时看到左下角状态栏的提示:"没有参考命令",也就是说我们没设成功断点啦.下来我摸索,用了这样的方法成功下了断.
1.在图2中的MessageBoxA按住ENTER键,查找输入函数参考,来到下面

2.回车,来到这里

3.右键==>选定"查找参考"==>选择"选定命令",来到这里

为前三个分别下断点,按住F2,成功了下了断就地址那栏地就成红色的了.呵~是不是下个断都觉得是大费周章啊,不要紧啦,开头难
切换到破解的程序,用户名与密码都留空,我们开始来捕捉弹出的提示框,单击"确定"按钮,被OD断下来了
0040112F 6A 1F PUSH 1F
00401131 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00401134 50 PUSH EAX
00401135 68 EA030000 PUSH 3EA
0040113A FF75 08 PUSH DWORD PTR SS:[EBP+8]
0040113D E8 DC000000 CALL
00401142 0BC0 OR EAX,EAX
00401144 75 14 JNZ SHORT gg.0040115A
00401146 6A 00 PUSH 0
00401148 6A 00 PUSH 0
0040114A 68 00304000 PUSH gg.00403000
0040114F 6A 00 PUSH 0
00401151 E8 CE000000 CALL ; 判断用户名为空
00401156 C9 LEAVE
00401157 C2 1000 RETN 10
0040115A 6A 1F PUSH 1F
0040115C 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-40]
0040115F 50 PUSH EAX
00401160 68 EC030000 PUSH 3EC
00401165 FF75 08 PUSH DWORD PTR SS:[EBP+8]
00401168 E8 B1000000 CALL
0040116D 0BC0 OR EAX,EAX
0040116F 75 14 JNZ SHORT gg.00401185
00401171 6A 00 PUSH 0
00401173 6A 00 PUSH 0
00401175 68 00304000 PUSH gg.00403000
0040117A 6A 00 PUSH 0
0040117C E8 A3000000 CALL ; 判断密码为空
00401181 C9 LEAVE
00401182 C2 1000 RETN 10
00401185 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-40]
00401188 50 PUSH EAX
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课