|
一个程序,载入OD立刻运行
OD下断点失败而已,入口经过处理或变异, 用Windbg吧 |
|
[求助]驱动与应用程序通信
一个问题在多个地方发,不要这样刷屏啦,你在新手区的那个贴我说清楚了 |
|
[求助]驱动与应用程序通信
其实,你可以根据Windows的命名,来猜得到它用的用途; Irp->AssociatedIrp.SystemBuffer systembuffer, 这是系统提供的缓冲区,不是你用户程序的那份; IrpStack->Parameters.DeviceIoControl.Type3InputBuffer 这个输入缓冲区,是第三种类形的; Irp->UserBuffer 这是 User 的Buffer, 就是用户程序向驱动程序提供的缓冲区,驱动程序可向此写入数据 |
|
[求助]驱动与应用程序通信
应用程序与驱动程序通信,对于方式,有几种方式,一是缓冲区,二是直接读写,三是其它方式; 对于缓冲区方式,系统的驱动设备组件(负责管理驱动啊,IRP啊等等这些东西)是把用户程序提供的缓冲区里的数据复制到内核,注意,是复制一份; 然后供驱动程序使用; 所以,如果你在驱动程序里对这“复制一份”的缓冲区里的数据进行修改,是修不了用户程序的那份的; 如 你提供 A, 驱动设备组件将复制成 A1, 你驱动程序面对的就是 A1; InputBuffer= OutputBuffer = Irp->AssociatedIrp.SystemBuffer; RtlCopyMemory(OutputBuffer,InputBuffer,OutputBufferLength); 这个,很明显就是缓冲区读写方式; 如果你要达到这个input output的目的,应该使用其它通信方式 DeviceIoControl(hDev,2050,@inData,Length(inData) ,@outData,Length(outData),junk,nil); 即: #define XXXXXXX CTL_CODE(FILE_DEVICE_UNKNOWN, 0xXXX, METHOD_NEITHER, FILE_ANY_ACCESS) 那么 indata 就是 IrpStack->Parameters.DeviceIoControl.Type3InputBuffer outdata 就是 Irp->UserBuffer |
|
Windows API HOOK & Rootkits资料大全
太猛了,谁花费这么多精力来收集如此之多的资料 |
|
[求助]如何用WinDbg调试驱动
哦, 看错了, 问的是怎么下断点... 编写的时候手动加个 int 3 , 最方便的方法了 |
|
[求助]如何用WinDbg调试驱动
看一下windbg的帮助, 用个虚拟机, 加个虚拟管道, 把目标机设置调试方式启动, bu 驱动!DriverEntry, F5之... |
|
[求助][求助]如何取游戏通讯数据
拿到的网络通讯数据估计也是加密的; 并且不一定是在服务器里定好各家手上的牌, 然后再通知各个客户端, 有可能是服务器出一个参照数据, 然后由各个客户端自行生成, 这又关系到算法的问题了.... 没你想的那么简单呢; |
|
[求助]发现个很奇怪的问题
编译器的优化结果; 如果再优化一点就是一句 mov eax, 1; 了, 连栈它都不分配了; |
|
[分享]送给用汇编写驱动,或想用汇编写驱动的朋友
KeServiceDescriptorTable 是在ntoskrnl.exe 中导出的, 还不是像其它千千万万被导出的函数一样, 你是怎么样在程序中获得其它API的地址的, KeServiceDescriptorTable就是怎么获得的; 自己声明一下咯, link到ntoskrnl的库咯..... |
|
[求助]关于磁盘有关的一些问题
看DDK去, 找DDK的例子去.. |
|
[求助]注入被拦截 想了个办法 但遇到问题了 内嵌汇编的问题
又忘了告诉你, 这样自己手动写汇编调用WriteProcessMemory, 和vc里C++调用WriteProcessMemory, 根本没有任何的区别!!!! 所以你想都不要想这样就能过绕过拦截, 劝你还是别费心机了, 还不如花时间好好想一下人家是在哪里用什么方法拦截了你吧... |
|
[求助]注入被拦截 想了个办法 但遇到问题了 内嵌汇编的问题
用VC搞的吧? 内联汇编吧? call xxxx 的时候F11看跑到哪里去了不就解决问题了吗..... 看编译器的编译方式问题, call xxxx 可能不会像你预期的那样; 原因就是, 好像VC把 call xxxx搞成了 call 指针本身的地址, 这样肯定是错的; 你这样吧 call dword ptr [xxxxx] 这样就call 了指针指向的地址 无聊, 说多点, 如 call MessageBox, 事实上, MessageBox是一个变量(VC就是这样组织的), 它本身的地址可能是0x0050789, 如同其它所有指针一样, 这个指针填入的地址可能是 0x00B01234, 而0x00B01234里就是 jmp 真正的MessagBox地址; call MessageBox vc可能会把它搞成 call 0x0050789这里; call dword ptr [MEssageBox], vc 应该会把它搞成 call 0x00B01234这里 |
|
[讨论]总算领教了一下莫名其妙的MFC,痛苦啊!
wzanthony, 你太热心了,你太好人了, 我又学到东西了 |
|
[讨论]总算领教了一下莫名其妙的MFC,痛苦啊!
楼上说的我觉得还有用; 但是我还想重申一下, 按道理说无连接通信是无法判断是否发送成功的,但是主贴上我已经说过了,如果目标存在并且发送成功,OnReceive才会被调用,否则绝不会被调用; 何解? 二,你说的消息循环机制问题; 就算真的是在处理某个消息的时候把OnReceive当作消息处理函数,那么请问, 谁定义了这个消息就一定是OnReceive来处理? 核心代码好像这样: class CMessSocket : public CSocket { public: virtual void OnReceive(int nErrorCode); }; void CMessSocket::OnReceive(int nErrorCode) { MessageBox(NULL, "OnRceive被执行", "注意", MB_OK); return; } CMessSocket m_socket; AfxSocketInit(NULL); m_socket.Create(4321,SOCK_DGRAM); m_socket.SendTo(szSend, 50, 137, "192.168.0.101", 0); .......... ....... 谁定义了某个消息由m_socket.OnReceive来处理? CAsyncSocket ? |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值