<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=AsemblC%2B%2B</id>
	<title>AsemblC++ - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=AsemblC%2B%2B"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=AsemblC%2B%2B&amp;action=history"/>
	<updated>2026-05-14T16:19:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=AsemblC%2B%2B&amp;diff=28800&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:22, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=AsemblC%2B%2B&amp;diff=28800&amp;oldid=prev"/>
		<updated>2021-02-07T05:22:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Asembl C++ =&lt;br /&gt;
C 프로젝트로 빌드로 생성된 .exe파일에서 어셈블 코드를 찾아내고 그 효율성과 다른 각 IDE들의 차이점을 찾아보려는 의도로 만들어진 페이지.&lt;br /&gt;
----&lt;br /&gt;
== VS의.exe 어셈블코드 보기 ==&lt;br /&gt;
MASM의 어셈블 코드를 [[VisualStudio]]에서 들여다 보는것 처럼 드래그하면 되는걸로 쉽게 생각했지만 그게 아니었다. VS를 너무 호락호락하게 본것 같다. 불가능 한것은 아니어 보이는데 쉬워보이지는 않는다.&lt;br /&gt;
그렇다면 [[i++VS++i]]에서 최적화된 i++ 어셈블 코드에 관한 이야기, 연산자 오버로딩에 있어서 후치연산자++ 의 용도에 관한 이야기들은 어떻게 해서 나오게 된것인지 궁금합니다.&lt;br /&gt;
.exe파일의 어셈블 코드부분에 대한 질문. [http://zeropage.org/wiki/AsemblC_2b_2b?action=edit 지식in]&lt;br /&gt;
 [[i++VS++i]]를 시작한 사람이 접니다^^ 그걸 보고 관심을 갖는 사람이 있다니 반갑군요~ 혹시 누구신지요? --[[상규]]&lt;br /&gt;
&lt;br /&gt;
이해를 돕기 위해 [[i++VS++i]]에서 i++ 등의 어셈블리 코드를 어떻게 얻었는지를 설명해 드리겠습니다.&lt;br /&gt;
결론부터 말을 하자면 .exe 파일에서 어셈블리 코드를 얻어낸 것이 아닙니다. 물론 그것도 가능하지만 매우 어렵죠.&lt;br /&gt;
그렇다면 다른 방법이 있다는 건데... 바로 컴파일러에 어셈블리 코드를 얻어내는 기능이 있습니다.&lt;br /&gt;
요즘 컴파일러들은 컴파일을 하면 오브젝트 파일(.obj)을 생성합니다. 이것은 소스를 해석해서 만들어낸 기계어 코드입니다.&lt;br /&gt;
하지만 컴파일을 할 때 옵션을 붙여 오브젝트 파일 뿐 아니라 어셈블리 코드도 생성할 수도 있습니다.&lt;br /&gt;
어셈블리 코드는 기계어와 거의 같다고 봐도 무방하기 때문에 컴파일러의 출력 형식의 차이 정도라고 보시면 되겠습니다.&lt;br /&gt;
(생성된 어셈블리 코드를 어셈블러에 넣으면 오브젝트 파일이 나오게 됩니다.)&lt;br /&gt;
이렇게 얻은 어셈블리 코드는 모든 최적화 과정이 끝난 상태이기 때문에 .exe 파일로 만들어질 때 까지 변형되지 않습니다.&lt;br /&gt;
그렇기 때문에 굳이 어려운 방법을 통해 .exe 파일에서 어셈블리 코드를 얻어낼 필요가 없는 것이죠. --[[상규]]&lt;br /&gt;
&lt;br /&gt;
MS의 C/C++ 컴파일러에서 어셈블리 코드를 얻는 옵션은 /FA 입니다.&lt;br /&gt;
이 옵션을 붙여 컴파일을 하면 .obj 파일 뿐 아니라 .asm 파일도 만들어집니다.&lt;br /&gt;
C/C++ 코드와 해당되는 어셈블리 코드를 비교하며 보고 싶다면 /FAs 옵션을 붙여보세요.&lt;br /&gt;
차이점은 설명하기가 귀찮네요-_-; 직접 해보시고 차이점을 알아보시길... --[[상규]]&lt;br /&gt;
&lt;br /&gt;
== 어셈블을 이용한 고급언어디버깅 ==&lt;br /&gt;
[http://www.asmlove.co.kr/ 어셈러브] &lt;br /&gt;
&lt;br /&gt;
== 관련자료 ==&lt;br /&gt;
[http://www.google.co.kr/search?num=20&amp;amp;hl=ko&amp;amp;newwindow=1&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla:ko-KR:official&amp;amp;q=disassembler&amp;amp;spell=1 역어셈블러 구글검색]&lt;br /&gt;
----&lt;br /&gt;
= 엮어가기 =&lt;br /&gt;
어셈블 코드들을 쉽게 보여준다면 프로그램의 보안 문제에도 직접적으로 연관이 되는 군요. 수정에 관한 보안장치도 있을 것이고요. 패리티 같은 단순한 보안장치일지라도 코드의 무결성을 지키면서 어셈블을 수정하기란 쉬워 보이지 않네요. - 톱아보다&lt;br /&gt;
 .exe 파일에 대한 어셈블리 코드는 역어셈블러(아래 상협이가 말한 softice와 같은 프로그램)만 있으면 쉽게 얻을 수 있습니다. 수정에 관한 보안장치도 전혀 없구요. 하지만 .exe 파일에 대한 어셈블리 코드는 분석하거나 수정하는것 자체가 거의 불가능할 정도로 어렵습니다. 이유는... 시간이 없어서 나중에 쓰도록 하죠-_-; --[[상규]]&lt;br /&gt;
&lt;br /&gt;
처음에는 그냥 얼마나, 어떤식으로 컴파일러에 의해서 코드가 최적화되고 [[IDE]]의 버전과 종류에 따라서 어떤 차이가 존재할까 라는 단순한 물음이었지만, 지금 보니 그렇게 코드를 파해치고 분석하는게 해킹이고 크래킹 인것 같기도 합니다;; - [[톱아보다]]&lt;br /&gt;
 제가 위에 쓴 방법으로 해보신다면 이제 너도 할수 있습니다!^^ --[[상규]]&lt;br /&gt;
&lt;br /&gt;
Softice같은 프로그램을 사용해서 시리얼 번호가 있는 프로그램이나 날짜 제한 프로그램을 크랙 하기도 합니다.  이번 디버깅 세미나에서 함 해볼라고 그랬는데 집에 있는 컴퓨터에서 그게 잘 안돌아가서 보류함. - [[상협]]&lt;br /&gt;
----&lt;br /&gt;
[[토론분류]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>