|
|
|
|
|
|
|
|
|
[讨论]ESP 和 EBP 的关系(以及对at&t和intel 的asm讨论)
#define __get_user_x(size, ret, x, ptr) \ asm volatile("call __get_user_" #size \ //宏展开, //__get_user_x,x=1,2,4 : "=a" (ret),"=d" (x) \ //输出约束,ret由eax输出 //x由edx输出 : "0" (ptr)) //输入约束,ptr约束和ret约束一样 x86应该也有寄存器重命名啊,龙芯都有了 |
|
[讨论]ESP 和 EBP 的关系(以及对at&t和intel 的asm讨论)
有寄存器重命名+乱序执行。 可用的寄存器就不像想像中的少了。 再加上其他的技术,寄存器不足的缺点就不容易体现出来了。 特定情况当然很难说的 |
|
WriteProcessMemory函数使用问题~~~~
因为你这个例子里面是jmp的label,这时候jmp的地址以立即数的方式出现。 所以是跳转到相对的地址,即将jmp(E9)指令后跟着的立即数加到EIP寄存器里面去。 修改前 printf("%.8x\n",pf1); printf("%.8x\n",pf2); printf("%.8x\n",*((int*)pf1)); printf("%.8x\n",*((int*)pf2)); 00411186 00411096 0003d5e9 000445e9 修改后 printf("%.8x\n",pf1); printf("%.8x\n",pf2); printf("%.8x\n",*((int*)pf1)); printf("%.8x\n",*((int*)pf2)); 00411186 00411096 000355e9 000445e9 看清楚了吧,起跳的位置不一样,一个是从00411186,一个是从00411096 如果都改成e9 45 04,显然就不对了 |
|
[求助]RegisterForDeviceNotifications
evxface.c acpi_status acpi_install_notify_handler(acpi_handle device, u32 handler_type, acpi_notify_handler handler, void *context) 安装notify handler的一个例子 status = acpi_install_notify_handler(device->handle,ACPI_ALL_NOTIFY, acpi_ac_notify,ac); acpi_ac_notify是一个处理函数,后面的ac也就是context,是保存这个函数处理事件所需要的信息的结构体。类型为struct acpi_ac。 因此,这个VOID* Context没有一个固定的形式。 acpi_install_notify_handler仅仅是给acpi namespace里的对象添加一个handler,以及handler需要的信息。 不知道你要的是不是这个。 |
|
[求助]RegisterForDeviceNotifications
这个Context 可以查看linux里的相关部分(和windows下的有点类似),里面会有处理这个Notifications的回调函数,还有其他一些的莫名其妙的东西。 有点像个任务描述的块 |
|
|
|
[求助]windows内存管理的方式
请看windows internal |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值