考虑
1.tp,np,QQ对游戏的驱动保护怎么做的
2.360保险箱怎么做的
3.从键盘按键到驱动,然后到应用层的编辑框,按键码怎么传过去的? 比如QQ的编辑框接受,底层键盘钩子修改按键码 io device->总线->ioapic(prt table irq1 哪一个apic和中断号 int 9h 键盘中断处理 例程)->local apic->?? keycrypt
4.消息机制的内核实现? 比如给qq发最小化消息,弹假客户端,从应用层到驱动的实现过程.
5.防止别人通过openprocess,getsysteminfo,virtualqueryex,readprocessmemory,读目标进程的数据,比如做QQ号的进程查询
6.钩子和消息有全局和非全局之分,这个全局是workstation?session?
7.window提供的默认键盘驱动做了什么?向上层传break code.
游戏保护及密码框保护汇总:
nProtect GameGuard,tp,Hackshield
http://www.cnblogs.com/ZYM/archive/2009/04/23/1442394.html QQ2008仿造和webqq仿造
http://blog.csdn.net/lonlycode/article/category/498445 qq2008协议
http://bbs.pediy.com/showthread.php?t=126802 散谈游戏保护那点事~就从_TP开始入手吧
http://bbs.pediy.com/showthread.php?t=139541 X游戏保护,过了很多 还有问题
http://bbs.pediy.com/showthread.php?t=140344 围观一下tp的游戏保护
http://bbs.pediy.com/showthread.php?t=175448 密码控件安全技术浅析及攻击实例
http://bbs.hackav.com/thread-2174-1-1.html 截获QQ2010明文聊天消息附源码,最新版本QQ可用
http://bbs.pediy.com/showthread.php?t=166288 简单谈谈“游戏圈”所谓的神乎其技的行为检测 EPA对抗,CRC对抗
http://www.bmpay.net/thread-406-1-1.html 修改pe结构--debugport清零过np
http://bbs.pediy.com/showthread.php?t=142443 GalaxyAP过游戏反调试框架
http://www.cnblogs.com/BoyXiao/archive/2012/06/09/2542831.html 过 DNF TP 驱动保护(一)
http://bbs.pediy.com/showthread.php?t=158231 2012年11月TP的debugport清零 64位
http://bbs.pediy.com/showthread.php?t=104951 HackShield分析(1)
http://bbs.pediy.com/showthread.php?t=146953 散谈游戏保护那点事:HShield
http://www.bmpay.net/thread-266-1-1.html 腾讯游戏TP保护详解
http://www.bmpay.net/thread-372-1-1.html 调戏gameguard 就是np
http://www.bmpay.net/thread-382-1-1.html DNF检测原理分析
按键加密代码。绕过系统,直接获取键盘输入。
tp客户端的ppt
游戏启动前:
1.在windows的给QQ进程法最小化消息或者“显示桌面”的过程中做拦截,阻止QQ被最小化,除非人为点击。
hook NtUserMessageCall,如果消息id是最小化或者显示桌面,目标窗口是qq,则将消息源文件直接返回拒绝或发给bav判断。 setwindowsize
2.防止别人通过openprocess,getsysteminfo,virtualqueryex,readprocessmemory,读目标进程的数据,比如做QQ号的进程查询
3.创建一个线程,不断检测当前窗口状态
4.通过像素的对比,不断检测是否有相似窗口,颜色和窗口大小的相似
5.随机窗口类名,非法窗口没法拿到QQ句柄,但也可以通过4拿到,不适合bav第三方软件做保护。
6.如果QQ窗口被非法隐藏了,强制恢复。
7.做键盘钩子的过滤,防止恶意软件直接拦截QQ窗口的键盘输入。
游戏启动后(类似游戏保险箱): 指定要保护的游戏的exe文件路径 ,360游戏保险箱的保护方式还没有逆向,具体不详
1.挂接消息处理
2.检测非法热键
3.检测ssdt的NtUserSendInput ,检测模拟按键
4.防止apc注入,防止其他模块注入到保护游戏内。
5.进程内SendInput上报
6.NtOpenProcess(防止od打开,防止蠕虫打开),NtOpenThread(防止调试器在内创建线程),NtReadVirtualMemory,NtWriteVirtualMemory,KiAttachProcess(防止别的软件附加),NtUserGetDC,NtUserGetDCEx,NtUserFindWindowEx,
NtUserGetForegroundWindow,NtUserWindowFromPoint,NtUserSendInput,KDCOM.dll:KdReceivePacket,KDCOM.dll:KdSendPacket(这两个是COM串口的接受和发送数据主要用来方式别人双机调试)
7.检测钩子注入(消息钩子)
8.游戏启动时显示启动界面,检测内存外挂或者木马,简单扫描。
9.检测常用ARK,调试器,提示检测到非法模块。禁止分析。
ObQueryNameString是通过object_header中的NameInfoOffset找到OBJECT_HEADER_NAME_INFO结构.然后根据OBJECT_HEADER_NAME_INFO的Directory..循环到ObpRootDirectoryObject.然后把Name拼起来以得到全路径的...然而Process的object_header中的NameInfoOffset为0.所以ObQueryNameString不会得到名字呀
ReadProcessMemory:NtReadVirtualMemory
http://www.cnblogs.com/gussing/archive/2009/07/01/1514925.html
模拟按键:
getkeystate
getasynckeystate
getkeyboardstate
directx
lowlevel hook
journalRecored Hook
getrawinputdata
ntusersendinput
->xxxSendInput->如果是INPUT_KEYBOARD,xxxInternalKeyEventDirect->
xxxProcessKeyEvent(正常按键也调用)->xxxKeyEvent->
typedef struct tagKEYBDINPUT {
WORD wVk;
WORD wScan;
DWORD dwFlags;
DWORD time;
ULONG_PTR dwExtraInfo;
} KEYBDINPUT, *PKEYBDINPUT, FAR* LPKEYBDINPUT;