内核回调的触发时机

自己验证的

环境WinXP SP3 x86

进程创建回调

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

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

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

  这时可以做的操作不多,

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

镜像加载回调

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

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

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

  主线程也仍然没有运行。

  可以插入APC。

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

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

  然后依次为 kernel32 user32 gdi32

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

注册表回调

  待测试

线程回调

  待测试

时间: 2024-10-12 16:31:54

内核回调的触发时机的相关文章

Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)

1 非抢占式和可抢占式内核 为了简化问题,我使用嵌入式实时系统uC/OS作为例子 首先要指出的是,uC/OS只有内核态,没有用户态,这和Linux不一样 多任务系统中, 内核负责管理各个任务, 或者说为每个任务分配CPU时间, 并且负责任务之间的通讯. 内核提供的基本服务是任务切换. 调度(Scheduler),英文还有一词叫dispatcher, 也是调度的意思. 这是内核的主要职责之一, 就是要决定该轮到哪个任务运行了. 多数实时内核是基于优先级调度法的, 每个任务根据其重要程度的不同被赋予

十四、Android学习笔记_Android回调函数触发的几种方式 广播 静态对象

一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象传入即可.但是在Activity中不能传递监听对象,所以考虑使用广播来实现. public void login(final LoginOnClickListener listener) { Intent intent = new Intent(context, LoginActivity.clas

Swiper.js使用遇到的问题总结onSlideChangeEnd回调偶尔触发,偶尔不触发等;

Swiper 是一个开源免费的移动触摸插件. 在使用中遇到这样一个问题,记录一下. page 间切换效果 使用 fade 的时候,如果每个页面的大小不一样, 比如第一个页面全屏, 第二个页面比第一个小, 那么切换到第二页的时候, 第一页的内容还可以看到. 还有,使用 fade 过度方法,onSlideChangeEnd 回调偶尔触发,偶尔不触发. 因此使用 onTransitionEnd: 解决方案: 添加 fade:{crossFade:true} 切换之后效果, 使用 onSlideChan

UIScrollView控件的常用属性与<UIScrollViewDelegate>协议中各个方法的触发时机

UIScrollView是iOS中的滑动控件,用来解决当前要显示的内容超出视图的范围时,可以通过滑动方式查看视图的所有内容 1.创建一个UIScrollView对象,并改变背景颜色 UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 20, 280, 528)]; scrollView.backgroundColor = [UIColor orangeColor]; scrollView.ta

Activity.onNewIntent(Intent intent)的触发时机

Activity.onNewIntent(Intent intent)的触发时机和Activity的启动模式有关,所以先简单回顾一下"启动模式" Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" /> Activity的四种启动模式: 1.standard 默认启动模式,每次激活Activity时都会创建Activi

Linux内核分析--理解进程调度时机、跟踪分析进程调度和进程切换的过程

ID:fuchen1994 姓名:江军 作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解:推荐在实验楼Linux虚拟机环境下完成实验. 特别关注并仔细分析switch_to中的汇编代码,理解进程上下文的切换机制,以及与中断上下文切换的关系: 实验过程: 1. 进程调度的时机 中断

Linux内核分析——理解进程调度时机跟踪分析进程调度与进程切换的过程

20135125陈智威 +原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验原理: 1.不同类型的进程有不同需求的调度需求:第一种分类:—I/O-bound:频繁的进行I/O,通常会花费很多时间等待I/O操作的完成—CPU-bound:计算密集型,需要大量的CPU时间进行运算第二种分类:—批处理进程:不必与用户交互,通常在后台运行:不必响应很快:—实时进程:有实时需求,不被低优先级的

IOS中AppDelegate类中的方法触发时机-----自定义AppDelegate的写法

@implementation AppDelegate //当应用程序加载时触发,创建window窗口对象,让对象的window成为程序的主窗口,并且可视. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen ma

Android学习笔记_74_可以通过广播来通知回调函数触发

1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象传入即可.但是在Activity中不能传递监听对象,所以考虑使用广播来实现. public void login(final LoginOnClickListener listener) { Intent intent = new Intent(context, LoginActivity.class); intent