OD学习笔记(退出暗桩的解决方法)
我的上一篇博客写了Push法绕过登录框(https://blog.****.net/qq_43065505/article/details/98901017),其中提到了该方法的弊端之一:暗桩。
那么暗桩到底是什么呢?暗桩一般是指程序的二次或多次验证,在特定的条件下触发,用来判断文件是否被修改或**,一般用于反**保护。而有些软件的作者会利用暗桩来诱导计算机关机甚至是格盘,所以Push法理应慎用;但今天讲到的就是如何**这个暗桩,我上一篇博客中提到的软件已经用push法拿到了多个窗口,而这诸多窗口中就不乏有暗桩。我们一个个点开看了之后发现有一个程序,点开后立马就退出,而从任务管理器中看到该进程一闪而过,便推测该程序可能是一个退出暗桩即打开后会验证程序是否被**,若是的话便退出执行。
一、载入OD
我们依旧将其载入OD看看,按F9执行程序后发现程序正常退出;所以我们要在其退出之前下断点,找到菜单栏里的插件->API断点设置工具->常用断点设置,打开断点设置工具,在常用断点里找到程序退出断点ExitProcess,根据OD版本的不同可以在不同的栏里多找找,下好断点后F9运行程序。
程序在将要退出时被断了下来,我们看右下方的堆栈窗口,可以看到有一个Call 到 ExitProcess,这毫无疑问就是退出程序的call了我们在其下方发现了一个返回到 0x520100.004D0660的数据,右键点击选择反汇编窗口中跟随来到了反汇编界面,在反汇编代码里我们发现了关键call和关键跳;箭头指向的那个call就是退出程序的call,而箭头指向的那个跳转jle就是跳过此call的关键跳,跳转前面的部分可能是在验证该程序是否被**,若被**则跳转不成立,向下执行进入call,若未被**则跳转成立,跳过此call,很明显此处只需要将jle改为jmp无条件跳转即可。
改完以后保存到可执行文件,发现已经可以正常使用而不会退出了,至此**暗桩就已经完成了。
二、总结
用Push法绕过窗体时一定得谨慎,不能盲目的打开窗口,这次遇见的暗桩属于较为友好的类型,但难免存在有攻击性的暗桩。