-
-
[原创]常见反调试手段及其规避方法(三)-FindWindow
-
发表于:
2018-5-9 15:02
9920
-
[原创]常见反调试手段及其规避方法(三)-FindWindow
调试器:OllyDbg
环境:win7 64位真机
先导入原版OD。看函数列表,里面只有ExitProcess。显然有函数被隐藏。
OD调试器比较特殊,即便函数列表里没有
GetProcAddress
也可下段,我们bp GetProcAddress。仅仅只有这个函数是例外。
多数程序都有反调试,或许是退出,或许是蓝屏,或者格式化磁盘。一般的思路是,在退出函数下断,反汇编窗口跟随它的返回地址,在程序领空找关键跳。但是这里我们不能只满足于绕过退出,我们要知道程序究竟执行了哪些步骤,做到了然于胸。
我们看看它都执行了啥函数了。
先在
GetProcAddress
下断,看获取了哪些函数。
Createtoolhelp32snapshot进程快照,bp eax,给这个函数设一个断点,它执行完会返回一个句柄,里面是快照的内容。快照的句柄是0x38,在H窗口看得到
下一个openprocess,bp eax 再注释
下一个Process32First:bp 注释
同理,Terminateprocess
同理,LstrcmpA
虽然说我们的确是在这些函数下断了,但是不能在程序领空看到这些断点,只能在系统领空看到,这是一个遗憾。但是我不建议使用bpx在程序领空下断,那样不利于分析重复调用的API。
接着是FindwindowA,执行到返回,bp eax 注释。这个函数很关键。
接着,Process32next。
获取完毕后,先执行Createtoolhelp32snapshot,它会返回快照句柄。
然后传入该句柄执行Process32First,这个函数是取出进程快照里的第一个进程的详细信息存在结构体里。
然后是Process32next,作用同
Process32First ,只是一个一个提取剩下的进程快照里的内容,不是一下子全提取出来。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课