首页
社区
课程
招聘
[原创]常见反调试手段及其规避方法(三)-FindWindow
发表于: 2018-5-9 15:02 9920

[原创]常见反调试手段及其规避方法(三)-FindWindow

2018-5-9 15:02
9920

调试器: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直播授课

收藏
免费 5
支持
分享
最新回复 (7)
雪    币: 2694
活跃值: (80)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
支持
2018-5-11 00:38
0
雪    币: 234
活跃值: (1659)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
thank  you!
2018-5-11 10:38
0
雪    币: 1
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2018-5-11 10:48
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不懂,看起来挺深奥,坚持!必定有结果!
2018-5-13 15:26
0
雪    币: 8715
活跃值: (8619)
能力值: ( LV13,RANK:570 )
在线值:
发帖
回帖
粉丝
6
LZQ_727726 不懂,看起来挺深奥,坚持!必定有结果!
好熟悉的ID
2018-5-13 15:36
0
雪    币: 197
活跃值: (117)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
附件在哪里呀? 为什么看不到附件嘞~~
2021-12-11 18:03
1
雪    币: 4215
活跃值: (6203)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了,谢谢分享
2022-4-9 10:02
0
游客
登录 | 注册 方可回帖
返回
//