首页
社区
课程
招聘
[求助]如何判断自己程序的CALL是不是被非法调用
发表于: 2016-10-2 08:19 4991

[求助]如何判断自己程序的CALL是不是被非法调用

2016-10-2 08:19
4991
最近在研究一个问题,如何判断自己程序的CALL是不是被非法调用(比如别的程序远程调用或者注入DLL直接用内联汇编调用),如何监视这种行为,想知道其中的原理.希望看雪各位大神有空能解答下,给点思路

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
栈回溯的
2016-10-2 08:48
0
雪    币: 96
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
call函数里可以查看函数返回地址在不在预期模块里
每次call之前先将某个全局变量赋值,call的时候判断这个变量是否是被赋值了
判断此call调用的当前线程起始地址不是在指定地址
call之前[esp-4]改成某个值
方法很多
2016-10-2 11:16
0
雪    币: 1531
活跃值: (1349)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
检测调用栈就行了,简单点这样两句:
PDWORD pebp;
__asm mov pebp,ebp;
if(!CheckCall(pebp[1]))   // pebp[1] 就是上层调用栈的地址空间
   return

复杂点的就这样
【原创】ring3反作弊篇——基于EBP遍历调用栈及模块名
2016-10-9 11:48
0
雪    币: 18
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
程序中多用全局变量能完美解决......
2016-10-10 08:41
0
游客
登录 | 注册 方可回帖
返回