内核回调的触发时机

自己验证的

 

环境WinXP SP3 x86

 

进程创建回调

  进程被影射进内存之后,仅仅是被影射进来之后。

  也就是进程内部空间的修改可能会修改到应用程序文件。

  这时有一条线程存在,但是没有被运行,也就是说,主线程存在,但是还没有执行到exe 的 oep。

  这时可以做的操作不多,

  可以插入APC,但是不可以修改进程空间的任何内存空间,因为被修改的地方可能会直接被影射到文件中。

 

镜像加载回调

  一个镜像被加载(影射)进内存之后。

  这时仍然不能对进程内部空间作修改,

  同样,这时仍然没有执行到 oep,

  主线程也仍然没有运行。

  可以插入APC。

  第一个被加载的镜像就是该进程的应用程序文件,镜像基址为建议加载地址,或者重定位加载地址。

  第二个被加载的镜像为 ntdll.dll

  然后依次为 kernel32 user32 gdi32

  当ntdll被加载的时候,仍然不能修改各种进程内部空间的数据。只要修改,都有可能被保存到文件。

 

注册表回调

  待测试

 

线程回调

  待测试

 

转载于:https://www.cnblogs.com/suanguade/p/4078034.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核中的Socket是一种用于网络通信的抽象接口,它允许应用程序通过网络进行数据传输。在Linux内核中,Socket通信的实现主要依赖于回调函数。 回调函数是一种特殊的函数,它在某个事件发生时被调用。在Socket编程中,回调函数主要用于处理网络事件,例如接收到新的连接、接收到数据等。 在Linux内核中,Socket通信的实现主要涉及以下几个关键概念和回调函数: 1. Socket创建:应用程序通过调用socket()系统调用创建一个Socket对象。在内核中,会调用sock_create()函数创建一个新的Socket对象,并将其与相应的协议族关联起来。 2. Socket绑定:应用程序通过调用bind()系统调用将Socket对象与一个特定的地址和端口进行绑定。在内核中,会调用sock_bind()函数将Socket对象与指定的地址和端口进行关联。 3. Socket监听:应用程序通过调用listen()系统调用将Socket对象设置为监听状态,等待客户端的连接请求。在内核中,会调用sock_listen()函数将Socket对象设置为监听状态,并注册一个回调函数来处理新的连接请求。 4. Socket接收连接:当有新的连接请求到达时,内核会调用之前注册的回调函数来处理该连接请求。在内核中,会调用sock_accept()函数接受新的连接,并调用相应的回调函数进行处理。 5. Socket接收数据:当有数据到达时,内核会调用之前注册的回调函数来处理接收到的数据。在内核中,会调用sock_recvmsg()函数接收数据,并调用相应的回调函数进行处理。 6. Socket发送数据:应用程序通过调用send()或者write()系统调用将数据发送给远程主机。在内核中,会调用sock_sendmsg()函数发送数据,并调用相应的回调函数进行处理。 以上是Linux内核中Socket通信的基本流程和相关回调函数的介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值