받을시간은 C/C++ 프로그램 어떻게 높여줍니까 체제 (윈도, 리눅스, 맥 OS X) security. 주 () 함수

Os 함수 호출을 기술 설명 후 더 찾고 있습니다. 아무나 나에게 돕는다구요 아웃하거나 지점임 웹 사이트나 책?

Destructor
그는 4년 전 댓글을 달았습니다
0

누가 투표에 의해 종료됩니까? 이 질문은 다는일은 완벽하게 유효한 것 같다. 이것은 좋은 질문!!!

답변 7 개

& # 39 .exe 파일로 (또는 그와 유사한 다른 플랫폼에서) 에 있는 초급형 point& # 39;; 주소. 첫 번째 근사화를 (os) 관련 부분에 대한 로드되는지 .exe 파일로 ram 으로 후 진입점이 이동합니다.

다른 & # 39 로 답한 이 진입점이 않을 수 있지만, 대신 main& # 39, 런타임 라이브러리 - 초기화 중 일부를 또 그렇게 행동한다면 stdin, stdout, 정적 객체 설정 argc / / / 표준에러출력 argv 매개변수입니다 설정, etc. # 39 의 it& 때 모든 것을 주 () 함수를 연락을 할 것이다. 기본 과정을 통해 종료하므로 때, 런타임용으로 개발하십시오 댁이라면 와 똑같이 반군지역 귀의하리니 코드 정적 소멸자, 환경, 호출하십시오 백됩니다 호출하십시오 _atexit 루틴, etc.

그런 경우 MS 도구 (아마도 수준들과 공짜 아님) 가 모두 런타임용으로 개발하십시오 소스, 쉽게 이것좀봐 정지점을 넣을 수 있는 방법을 통해 주 () 는 닫기와 중괄호, 단일 물러서요 분할하고 런타임용으로 개발하십시오.

'주 ()' 가 포함된 C 라이브러리 시스템 기능을 하지 않고 있다. 하지만 내가 모르는 don& # 39, OS X 용 프로그램을 통해 '보통' () 또는 Linux, Windows 윈맹크라트스트라토프 시작합니다. 이 기호는 init 프로세스, 사용자 환경 ('아리스, argv, 끝') 와 인수 및 푸십시오 명령행을 페이징됩니다 '주 ()'. 후에 '어떠한 책임도 있다고 하는 main ()', '같은 코드를 호출하는 실행하십시오 아테스트 ()'.

보면 해당 Visual Studio 파일을 찾을 수 있어야 합니다 기본값입니다 구현 '' 윈맹크라트스트라토프 않니다 확인할 수 있습니다.

자신만의 호출 함수를 정의할 수도 있습니다 이 작업을 시작할 때 변경하여 초급형 point&quot "; config. 링커 옵션. 이것은 종종 발생하는 인수 및 빈 되돌려줍니다 기능이 없습니다.

멀리는 indows 댁이라면 진입점이, 이 기능은 다음과 같습니다.

  • 콘솔: 무효 (void) {} &lt /code&gt 맹크라트스트라토프 _cdecl code&gt <;;;
  • GUI: 무효 (void) {} &lt /code&gt 윈맹크라트스트라토프 _stdcall code&gt <;;;
  • DLL: 부울 _stdcall &lt, code&gt, _DllMainCRTStartup (void * 우프레세르베트 DWORD 펠릭스 드라이슨 하인스턴스 하인스타들러,) {} &lt /code>;

이러한 일반적인 경우 윈맹 통해 사용할 수 있는 단 하나의 이유는 주 / / 드공망 싶은 자신의 사용하여 런타임 라이브러리 (스케쳐내 작은 파일 크기 또는 사용자 정의 기능)

사용자 정의 구현을 위해 PE 파일들을 볼 시간이 실행하십시오 소형화 및 기타 요령:

39 의 OS it& 종속적입니다.

39 의 프레임, OS X 의 there& 세제곱마일 헤더입니다 시작 주소를 포함하는 EIP (instruction pointer) 에 등록.

일단 OS 에서 실행 바이너리 로드되었는지 출시, 이 주소: &lt pre>; 테스트 10$ 오토르 뻦 ./a.out lc_unixthread 그렙 - 트리시우 크리스티. cmd LC_UNIXTHREAD 스메데시즈 cx3-80 i386_thread_state 선호 카운트입니다 i386_THREAD_STATE_COUNT [.] ss 0x00000000 에프라그스 0x00000000 eip 0x00001f8c cs 0x00000000 [.] &lt /pre>;

이 주소는 주소 &quot start"; 함수은 &solarisdvd 이진:

&lt pre>; 테스트 트리시우 $ nm ./a.out 크리스티. 0000200c 속도입니다.4 _NXArgc 00002008 속도입니다.4 _NXArgv 00 002 000 속도입니다.4 _progname _dyld_func_lookup 00001fe0 t 한 _mh_execute_header 00 001 000 [.] 00001f8c T start &lt /pre>;

Mac OS X 에서는 it& # 39 의 &quot start";; 함수를 얻을 수 있는 첫 번째 불렀으매 전에도 &quot main"; 기능:

&lt pre>; 시작 (gdb) b 1 dell. 0x1f90 정지점을 주 (gdb) b 2 dell. 0x1ff4 정지점을 (gdb), r 시작 프로그램: /Users/diciu/Programming/test/a.out 공유 라이브러리 판독값 심볼에는 ++. 수행되

1, 0x00001f90 정지점을 시작 (start) () &lt /pre>;

&lt, a href = &quot, http://books.google.com/books, dq =, = frontcover&amp expert+c% 2b% 프린츠릭 wZoQyVi5f60C&amp? id = = =;;;;; 에이 2b% 2fcli&amp mkylspz2jjoaighlkln7ba&amp acfu3u36tvex7do7wvygtuy1arcjuu3n0g&quot &gt 숙련가 c++/cli&lt sig /a&gt. (279 확인란 수립하였습니다 페이지) 는 매우 구체적인 내용이 담긴 시나리오용으로 순결케 CLR) 을 기본으로, 혼합, 그리고 다른 부트스트랩에 어셈블리들.

Win32 API 를 시도하시겠습니까 Windows 와 관련된 책을 관심이 있다면

마이크로소프트 (ms) 용 응용 프로그램 프로그래밍 &quot windows"; 제프리 의해 리히터.

Take a look at 확인할 수 있습니다.

[1]: http://en.wikipedia.org/wiki/Main_function_ # C_and_C.2B.2B (프로그래밍)