我现在有个程序,希望能不被别人Hook,主要是保护程序里的Socket控件,不被Hook,抓包。
请高手指点,分数不够再加,谢谢。
请高手指点,分数不够再加,谢谢。
解决方案 »
- 求给 小孩【取】名字
- 如何调用DLL文件?能否给举个例子
- 两个窗体相互use(引用)对整个程序会不会有什么不良影响,会不会影响程序性能?
- 把一个网页的表格中的数据保存成文本文件
- 79分求一简单问题,在线等,不论是否有答案一周内结贴,帮顶有分。
- 不能把字段更新为空值,这是ClientDataSet的bug吗?
- DevExpress cxDBPivotGrid 导出Excel 如何显示百分号
- 对象的问题
- 参加borland的研讨会要不要带邀请函去啊,还有发什么礼品啊,谢谢.
- 怎样使日期格式显示成"Nov 20"的形式?
- 有些函数是系统定义的,但却在系统单元找不到,这是为什么
- delphi7 + excel2000 报错 'interface not supported'
但是我记得以前见过一个程序,可以检测出当前系统中的钩子。
这个也困难呀,现在他们利用抓包做坏事,,如果我加密,必须是随机加密,服务端上也要随机解密,但似乎这种技术还没有发明出来吧。比如有个封包内容是bbbbbbb加密后变在了ccccccc那么,他只要拿到这cccccc后,向服务端发送cccccc,这时服务端收到ccccccc后一样会解码成bbbbbb
这样又是没有办法了你说是不是?有没有办法,,客户端随机加密后
服务端也随机解码~~~
本身HOOK之後就是將包改掉再發出,跟發二個包有多大關系? 基於TCP/IP同樣包?還是重發包這是TCP/IP來處理的。
这个就更简单了:服务端保留每个客户端的最后一次会话的id(或时间),要求客户端把这个id自动加一,下一次客户端发来的数据包里必须含这个id
WinXP -Vista 的函数入口点是 008B 也是默认不变的
Win98暂时没条件测试基于上面的原理,我们只要检查函数入口点是否有改变就能知道是不是被Hook了代码如下 function CheckApiHook(): Boolean;
var
PNum: Pointer;
lpBuffer: pByte;
lpNumberOfBytesRead: DWORD;
DllHandle: Cardinal;
begin
// Result := False;
DllHandle := LoadLibrary('wsock32.dll');
lpBuffer := AllocMem(4);
PNum := GetProcAddress(DllHandle, 'recv');
ReadProcessMemory(GetCurrentProcess(), pnum, lpBuffer, 4, lpNumberOfBytesRead);
if (intTohex(lpBuffer^, 4) = '008B') or (intTohex(lpBuffer^, 4) = '0055') then
Result := False
else
Result := True;
FreeMem(lpBuffer);
end;
特别感谢 一下随波逐流 东方未明 二位