18. OD-反调试研究,破解反调试,编写反调试

版权声明:墨痕诉清风 https://blog.csdn.net/u012206617/article/details/88122495

病毒、木马、外挂等必须要有的 “安全工作”

因为你一个安全软件一旦被成功调试了,就等同于被调戏了,一切主要操作顺序都被人掌握了,只要开发出逆向的突破即可。

我们要研究他们这些安全软件如何反调试的

比如软件发现被OD打开,直接自爆。。。

开始

第一个程序

F8运行程序

找到了弹出反调试报错的call

 F7

程序调用了 IsDebuggerPresent 函数

IsDebuggerPresent :是确定调用进程是否由用户模式的调试器调试。

修改跳转Z,将指令改为nop不让他跳转就OK了

 

第二个程序

程序在OD中运行,什么也没有

这次直接跳转到了错误的位置,我们nop跳转就OK了

第三个程序

遇到被调试,直接退出进程,我们也可以nop到跳转

第四个程序

运行 ,程序选择和你同归于尽,大家一起死

程序直接跳转到00000001 ,同样改跳转为nop

高级

探讨程序使怎么做到反调试的

F8这行指令直接就错误了,此call为win32API创建模式对话框

alt+F9也回不去用户领空了,

DialogBoxParanA的第二个参数为过程函数,就是我们自己编写要做的事

找到函数地址,下断点

call处再次报错,下图

进入call

研究反调试过程

1. CreateToolhelp32Snapshot:可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。(所有进程拍照),返回句柄

2. Process32First:是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄。

3. 将进程名称和我们打开的OD进行字符串对比

4. Process32Next:是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用Process32Next函数来获得下一个进程的句柄。

5. 循环比较进程名称

6. 如果有OD就跳转退出程序,自爆。

猜你喜欢

转载自blog.csdn.net/u012206617/article/details/88122495