小编inf*_*tic的帖子

未定义或未指定的行为?

我正在阅读本文,他们使用以下示例来解释未定义的行为:

// PROGRAM 1
#include <stdio.h>
int f1() { printf ("Geeks"); return 1;}
int f2() { printf ("forGeeks"); return 1;}
int main() 
{ 
  int p = f1() + f2();  
  return 0; 
}
Run Code Online (Sandbox Code Playgroud)

但是,它似乎是关于子表达式的评估顺序,并且根据C标准(附件J.1),它是一个未指定的行为,而不是未定义的行为:

未指定的行为:评估子表达式的顺序以及副作用发生的顺序,除非为function-call(),&&,||指定.,?:和逗号运算符(6.5)

由于我对阅读官方规范非常陌生,我想知道我是否误解了这个例子或文档.我知道这看起来很迂腐,但我有兴趣以正确的方式学习这些高级主题.

c standards language-lawyer

13
推荐指数
1
解决办法
222
查看次数

DLL注入在目标进程中不起作用

我正在尝试使用CreateRemoteThread()函数来注入一个函数injectFunction()ans使其在远程进程内运行.

但是,似乎这段代码无法正常工作.一旦注入器程序运行CreateRemoteThread()函数,目标程序就会崩溃.什么出错了指针?

void injectedFunction()
{
    MessageBoxA(NULL, "Injection OK", "Injection OK", NULL);
}


void injectionFunction()
{
    HANDLE hTargetProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, pid);

    CreateRemoteThread(hTargetProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)injectedFunction, NULL, NULL, NULL);

}
Run Code Online (Sandbox Code Playgroud)

c++ winapi dll-injection

0
推荐指数
1
解决办法
594
查看次数

标签 统计

c ×1

c++ ×1

dll-injection ×1

language-lawyer ×1

standards ×1

winapi ×1