用NOP跳过密码验证
打开程序,发现需要密码验证
随便输入一个提示:用户密码错误
将程序载入OD,在反汇编窗口,右键>中文搜索引擎>智能搜索就好
搜索结束后右键>find
输入密码错误时看到的提示,这里输入关键字就行,不然可能会因为不在同一句话而搜不到
看!如果刚才也输入了“机会”就搜不到,因为不是一句话
双击后会跳转到这句话所对应的反汇编窗口的位置
注意左边的红线,那是跳转路径,可以看到:
在 00539AC0 处进行了判断
不相等时就跳转到 00539AF3
这样再向下执行就会提示密码错误了
(程序由上往下执行)
而,在如果到了 00539AF1 处不需要判断后就会直接跳转,这样如果我们可以让程序执行到这里就可以跳过密码错误了
可是我们之前的那个验证密码的跳转,如果执行的话,就永远没法执行下面的无条件跳转,所以我们需要对上面的跳转语句做点什么
右键>二进制>用NOP填充
NOP表示什么也不做,是用来对齐代码,提高程序的执行速度的,把一条不想让其执行的指令用NOP覆盖,这条指令就会失去原有的功能
修改后就不会判断了,到了 00539AF1 处直接跳过密码错误消息继续执行以后的
修改后,我们左键把修改的语句选中,可以多选,但千万不要漏下了
右键>复制到可执行文件>选择
在新出现的一个窗口里右键保存文件
保存后打开,还是会提示输入密码
但是随便输入一个后点击确定已经不会出现密码错误的消息了