2017-11-04 26 views
0

그래서 같은 라인 조립 설명서에있을 수 있습니다 실행 파일. 그래서 내 질문에, 문자 배열 같은 변수를 사용하여 __asm 호출 할 수있는 함수의 somekind 무엇입니까. 나는 이런 식으로 생각하고 있었다 :C/C++ 문자열 변수의 지침에 인라인 어셈블러는

char instruction[100] = "int 3"; 
__asm instruction 

그러나 그것은 '잘못된 OP 코드'를 제공하기 때문에 실제로 작동하지 않는 것 같습니다. 그래서 이걸로 도울 수 있거나 전혀 불가능합니다.

+0

문자열에서 어셈블되는 마술 - 런타임 어셈블러가 필요합니다. –

답변

3

C 또는 C++이 해석 된 언어가 아니기 때문에 컴파일러는 컴파일시 컴퓨터 명령어 int 3을 생성합니다. 프로그램이 자체적으로 인터프리터이 아닌 한, 컴파일 된 프로그램은 런타임시 명령을 문자열로 인식하지 못합니다.

당신은 물론 매크로를 사용할 수 있습니다

#define BREAKPOINT __asm int 3 

int main() 
{ 
    printf("Hello\n"); 

    BREAKPOINT ; 

    printf("this will not be printed.\n"); 
    return 0; 
} 
3

프로그램의 코드를 컴파일하는 동안, 컴파일러에 의해 생성됩니다.
컴파일러에 실행 시간에 대한 입력을 제공하려고합니다. 프로그램이 이미 실행 중일 때입니다. 'on-the-fly 컴파일'을 원한다면 실행 중에 코드를 수정할 수있는 증분 컴파일러와 링커를 프로그래밍해야합니다.

성공하더라도 많은 운영 체제가 보안을 위반하므로 이러한 실행을 차단합니다. 바이러스를 만드는 좋은 방법이 될 것이므로 일반적으로 차단됩니다.