문제

실행 파일에는 지침이 포함되어 있지만 이러한 지침은 정확히 무엇입니까? 내가 전화하고 싶다면 MessageBox 예를 들어 API 기능은 명령어가 어떻게 생겼습니까?

감사.

도움이 되었습니까?

해결책

실행 파일 운영 체제에서 이해하는 이진 파일입니다. 실행 파일에는 데이터가있는 섹션이 포함됩니다. Windows를 사용합니다 PE 형식. PE 형식에는 섹션이 있습니다 기계 지침. 이 지침은 순서대로 주문하고 CPU에 의해 이해되는 숫자 일뿐입니다.

MessageBox ()에 대한 함수 호출은 일련의 지침입니다.

1) DLL에있는 함수의 주소가 있습니다. 이 주소는 컴파일러가 제정합니다

2) 매개 변수를 스택에 "푸시"하는 지침

3) 실제 기능 호출

4) 일종의 정리 (통화 규칙에 따라 다름).

EXE 파일은 특별히 형식화 된 파일이라는 것을 기억하는 것이 중요합니다. 나는 당신을 위해 분해가 없지만 코드를 컴파일 한 다음 Visual Studio에서 Exe를 열어 분해를 볼 수 있습니다.

다른 팁

내가 본 적이 있다면 그것은 부풀어 오른 질문입니다. 그러나 나는 개요를 제공하기 위해 최선을 다할 것입니다. 바이너리 실행 파일에는 "바이트 코드"라는 것들이 있습니다. 바이트 코드는 명령의 16 진수 보복입니다. 일반적으로 바이트 코드를 "조회"하여 조립 지침으로 변환 할 수 있습니다. 예 : 지침 :

mov ax, 2h

바이트 코드 표현이 있습니다.

B8 02 00

바이트 코드는 RAM으로로드되어 프로세서가 "언어"처럼 실행됩니다. 바이트 코드로 프로그램을 아는 사람은 아무도 없으며 복잡한 일이 될 것입니다. 어셈블리는 ... 충분히 재미 있습니다. 더 높은 수준의 언어로 프로그램을 컴파일 할 때마다 코드를 가져 와서 어셈블리 지침으로 전환해야합니다. 코드가 어떻게 관리되는지 상상합니다. 나를 잘못 이해하지 마십시오. 컴파일러는 훌륭하지만 Ida Pro Freeware와 함께 C ++ 프로그램을 분해하면 내가 말하는 것을 볼 수 있습니다. 그것은 간단히 말해서 실행 파일입니다.이 주제에 관한 책이 확실히 있습니다. 저는 Windows API 전문가는 아니지만 다른 사람이 Windows API "MessageBox"를 호출하기위한 지침이 어떻게 보일지 보여줄 수 있습니다. 몇 줄의 어셈블리 일뿐입니다.

어떤 코드가 작성되는지 (C 또는 다른 언어로) 컴파일러에 의해 어셈블리라는 특수 종류의 언어 (음, 기계 코드이지만 매우 가깝습니다)로 편집됩니다. 어셈블리는 CPU가 기본적으로 실행하는 매우 낮은 수준의 언어입니다. 일반적으로, 당신은 너무 낮은 수준이기 때문에 어셈블리에서 프로그래밍하지 않습니다 (예 : 메모리에서 비트를 뽑는 비트를 다루고 싶지 않습니다).

나는 말할 수 없다 MessageBox 구체적으로 기능하지만 나는 그것이 많은 지침의. 생각해보십시오 : 그것은 상자를 그려야하고, 컴퓨터 스타일을 만들어야하지만, 사용자가 버튼을 클릭 할 때 어떤 일이 일어나도록 짝수 핸들러를 연결하고, Windows (또는 운영 체제)에 추가하여 그것을 추가하도록합니다. 작업 표시 줄 (또는 도크 등) 및 기타 많은 것들.

그것은 당신이 일하는 언어에 달려 있습니다. 그러나 많은 사람들에게는 단순합니다.

msgbox("Your message goes here")

또는

alert("Your message goes here")
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top