<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>XeroNic(HS) BLOG</title>
    <link>https://iam-hs.com/</link>
    <description>[ 게임보안 / 리버싱 / 프로그래밍 / 그 외... ] 
현승이의 블로그입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 9 Jun 2026 11:56:07 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>XeroNic(HS)</managingEditor>
    <image>
      <title>XeroNic(HS) BLOG</title>
      <url>https://t1.daumcdn.net/cfile/tistory/195B764E4FC6C06A33</url>
      <link>https://iam-hs.com</link>
    </image>
    <item>
      <title>새 블로그에서 새롭게...</title>
      <link>https://iam-hs.com/257</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;블로깅을 다시 시작해볼까 합니다~ @_@;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a class=&quot;tx-link&quot; target=&quot;_blank&quot; href=&quot;http://www.xeronichs.com&quot;&gt;http://www.xeronichs.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;티스토리는 기존 게시물들도 있고 하니 계속 유지해두는 걸로~ :)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>HS's FreeNote</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/257</guid>
      <comments>https://iam-hs.com/257#entry257comment</comments>
      <pubDate>Sun, 31 Jan 2016 23:00:24 +0900</pubDate>
    </item>
    <item>
      <title>PC Hunter V1.4 업데이트</title>
      <link>https://iam-hs.com/256</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;10월 18일자로 PC Hunter V1.4 버전이 업데이트 되었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify; &quot;&gt;[ PC Hunter 홈페이지 :&amp;nbsp;&lt;a href=&quot;http://www.epoolsoft.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; line-height: 1.5; color: rgb(196, 80, 80);&quot;&gt;http://www.epoolsoft.com&lt;/a&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; line-height: 1.5;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.xuetr.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; line-height: 1.5; color: rgb(196, 80, 80);&quot;&gt;http://www.xuetr.com&lt;/a&gt;&lt;font face=&quot;맑은 고딕, Tahoma&quot;&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&amp;nbsp;]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify; &quot;&gt;&lt;font face=&quot;맑은 고딕, Tahoma&quot;&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify; &quot;&gt;&lt;font face=&quot;맑은 고딕, Tahoma&quot;&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify; &quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/254BE043562BB7DC01&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;PCHunter_free.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify; &quot;&gt;&lt;font face=&quot;맑은 고딕, Tahoma&quot;&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: justify; &quot;&gt;&lt;font face=&quot;맑은 고딕, Tahoma&quot;&gt;&lt;span style=&quot;font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Reverse Engineering/RCE Tools</category>
      <category>anti-rootkit</category>
      <category>PC Hunter</category>
      <category>PC Hunter V1.4</category>
      <category>Reverse Engineering</category>
      <category>rootkit</category>
      <category>XueTr</category>
      <category>XueTr 64비트</category>
      <category>루트킷</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/256</guid>
      <comments>https://iam-hs.com/256#entry256comment</comments>
      <pubDate>Sun, 25 Oct 2015 01:56:42 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio Community 2013 공개</title>
      <link>https://iam-hs.com/254</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MS 에서 Visual Studio 2013 Professional 와 동급(?)의 패키지를...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;무료로 공개했네요... @_@;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;개인개발자의 경우 개발하는 제품이 유/무료 상관없이 사용 가능하군요..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;( 물론... 대기업 등에선 사용불가..;;; )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;[ 사이트 : &lt;a class=&quot;tx-link&quot; target=&quot;_blank&quot; href=&quot;http://www.visualstudio.com/en-us/products/visual-studio-community-vs&quot;&gt;http://www.visualstudio.com/en-us/products/visual-studio-community-vs&lt;/a&gt; ]&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;----------------------------------------------------------------------------------------&lt;br /&gt;&lt;/p&gt;&lt;div&gt;
        &lt;div&gt;
          &lt;strong&gt;Q: Who can use Visual Studio Community?&lt;/strong&gt;
          &lt;br /&gt;A: Here’s how individual developers can use Visual Studio Community:&lt;/div&gt;
        &lt;ul&gt;&lt;li&gt;Any individual developer can use Visual Studio Community to create their own free or paid apps.&lt;/li&gt;&lt;/ul&gt;
        &lt;div&gt;Here’s how Visual Studio Community can be used in organizations:&lt;/div&gt;
        &lt;ul&gt;&lt;li&gt;An unlimited number of users within an organization can 
use Visual Studio Community for the following scenarios: in a classroom 
learning environment, for academic research, or for contributing to open
 source projects.&lt;/li&gt;&lt;li&gt;For all other usage scenarios: In non-enterprise 
organizations, up to 5 users can use Visual Studio Community. In 
enterprise organizations (meaning those with &amp;gt;250 PCs or &amp;gt; $1MM in
 annual revenue), no use is permitted beyond the open source, academic 
research, and classroom learning environment scenarios described above.&lt;/li&gt;&lt;/ul&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;
          &lt;strong&gt;Q: How does Visual Studio Community 2013 compare to other Visual Studio editions?&lt;/strong&gt;
          &lt;br /&gt;A: Visual Studio Community 2013 includes all the great 
functionality of Visual Studio Professional 2013, designed and optimized
 for individual developers, students, open source contributors, and 
small teams.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;p&gt;
          &lt;strong&gt;Q: How do I create a Visual Studio extension?&lt;/strong&gt;
          &lt;br /&gt;A: Millions of developers use Visual Studio extensions every day. Check out &lt;a href=&quot;http://integrate.visualstudio.com/&quot;&gt;http://integrate.visualstudio.com&lt;/a&gt; for more information on building on any of the Visual Studio development tools and services.&lt;/p&gt;
      &lt;/div&gt;&lt;p&gt;----------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Programming</category>
      <category>Visual Studio</category>
      <category>Visual Studio Community</category>
      <category>Visual Studio Community 2013</category>
      <category>개발툴</category>
      <category>마이크로소프트</category>
      <category>비주얼스튜디오</category>
      <category>프로그래밍</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/254</guid>
      <comments>https://iam-hs.com/254#entry254comment</comments>
      <pubDate>Fri, 14 Nov 2014 15:22:01 +0900</pubDate>
    </item>
    <item>
      <title>PC Hunter V1.35 업데이트</title>
      <link>https://iam-hs.com/253</link>
      <description>&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;10월 22일자로 PC Hunter V1.35 버전이 업데이트 되었습니다.&lt;/p&gt;&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;[ PC Hunter 홈페이지 :&amp;nbsp;&lt;a href=&quot;http://www.epoolsoft.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;color: rgb(196, 80, 80);&quot;&gt;http://www.epoolsoft.com&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://www.xuetr.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;color: rgb(196, 80, 80);&quot;&gt;http://www.xuetr.com&lt;/a&gt;&amp;nbsp;]&lt;/p&gt;&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: left; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/252D20415448651914&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;PCHunter_free.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Reverse Engineering/RCE Tools</category>
      <category>anti-rootkit</category>
      <category>PC Hunter</category>
      <category>PC Hunter V1.35</category>
      <category>Reverse Engineering</category>
      <category>rootkit</category>
      <category>XueTr</category>
      <category>XueTr 64비트</category>
      <category>루트킷</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/253</guid>
      <comments>https://iam-hs.com/253#entry253comment</comments>
      <pubDate>Thu, 23 Oct 2014 11:17:44 +0900</pubDate>
    </item>
    <item>
      <title>PC Hunter V1.331 업데이트</title>
      <link>https://iam-hs.com/252</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;7월 8일자로 PC Hunter V1.331 버전이 업데이트 되었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;[ PC Hunter 홈페이지 : &lt;a href=&quot;http://www.epoolsoft.com&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.epoolsoft.com&lt;/a&gt;, &lt;a href=&quot;http://www.xuetr.com&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.xuetr.com&lt;/a&gt; ]&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/2204544053BBFBAC2B&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;PCHunter_free.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Reverse Engineering/RCE Tools</category>
      <category>anti-rootkit</category>
      <category>PC Hunter</category>
      <category>PC Hunter V1.331</category>
      <category>Reverse Engineering</category>
      <category>rootkit</category>
      <category>XueTr</category>
      <category>XueTr 64비트</category>
      <category>루트킷</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/252</guid>
      <comments>https://iam-hs.com/252#entry252comment</comments>
      <pubDate>Tue, 8 Jul 2014 23:11:28 +0900</pubDate>
    </item>
    <item>
      <title>PC Hunter V1.33 업데이트</title>
      <link>https://iam-hs.com/251</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;7월 2일자로 PC Hunter V1.33 버전이 업데이트 되었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;[ PC Hunter 홈페이지 : &lt;a href=&quot;http://www.epoolsoft.com&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.epoolsoft.com&lt;/a&gt;, &lt;a href=&quot;http://www.xuetr.com&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.xuetr.com&lt;/a&gt; ]&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/234D224353B514991C&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;PCHunter_free.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Reverse Engineering/RCE Tools</category>
      <category>anti-rootkit</category>
      <category>PC Hunter</category>
      <category>PC Hunter V1.33</category>
      <category>Reverse Engineering</category>
      <category>rootkit</category>
      <category>XueTr</category>
      <category>XueTr 64비트</category>
      <category>루트킷</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/251</guid>
      <comments>https://iam-hs.com/251#entry251comment</comments>
      <pubDate>Thu, 3 Jul 2014 17:32:10 +0900</pubDate>
    </item>
    <item>
      <title>마이크로소프트, MS-DOS &amp;amp; Word 초기버전 소스코드 공개</title>
      <link>https://iam-hs.com/250</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MS 가 DOS 와 Word 의 초창기 버전 소스코드를 &lt;a href=&quot;http://www.computerhistory.org/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;CHM(Computer History Museum)&lt;/a&gt;에 기증했다는군요.. @_@&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;공개된 버전은 DOS v1.1 과 v2.0... 워드는 윈도우용 v1.1a 군요...ㅎ&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;[ CHM 링크 ]&lt;/p&gt;&lt;p&gt;MS-DOS :&amp;nbsp;&lt;a href=&quot;http://www.computerhistory.org/_static/atchm/microsoft-ms-dos-early-source-code/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.computerhistory.org/_static/atchm/microsoft-ms-dos-early-source-code/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;MS-WORD :&amp;nbsp;&lt;a href=&quot;http://www.computerhistory.org/_static/atchm/microsoft-word-for-windows-1-1a-source-code/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.computerhistory.org/_static/atchm/microsoft-word-for-windows-1-1a-source-code/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;시간날 때~ 슬쩍 구경한번 해봐야겠습니다..ㅎㅎㅎ :)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>HS's FreeNote</category>
      <category>DOS 소스코드</category>
      <category>MS 소스코드 공개</category>
      <category>MS-DOS v1.1</category>
      <category>MS-DOS v2.0</category>
      <category>Word for Windows v1.1a</category>
      <category>WORD 소스코드</category>
      <category>마이크로소프트</category>
      <category>컴퓨터역사박물관</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/250</guid>
      <comments>https://iam-hs.com/250#entry250comment</comments>
      <pubDate>Wed, 26 Mar 2014 11:22:11 +0900</pubDate>
    </item>
    <item>
      <title>dotPeek - Free .NET Decompiler and Assembly Browser</title>
      <link>https://iam-hs.com/249</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;해킹툴 분석 작업을 하다보면 한번씩 C# 으로 빌드된 바이너리를 보게되는 경우가 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;C# 으로 빌드된 녀석들은 C/C++ 로&amp;nbsp;빌드된 바이너리와는 코드 구성이 다른데요..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;C/C++ 로 빌드된 바이너리는 Native Code 로 구성되지만~~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;C# 으로 빌드된 바이너리는 Managed Code 로 구성이 되기 때문이라고 할 수 있겠죠.. ^^;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제가 해킹툴을 분석할 때 가장 많이 쓰는 도구가 OllyDBG 인데...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;OllyDBG 는 Native Code 전용이라 이 툴로는 C# 으로 빌드된 바이너리를 분석하기가 어렵습니다..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그래서 필요한게 Managed Code 를 지원하는 분석도구인데요...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그 중 가장(?) 유명한게 &lt;b&gt;&lt;a href=&quot;http://www.red-gate.com/products/dotnet-development/reflector/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;.NET Reflector&lt;/a&gt;&lt;/b&gt;&amp;nbsp;가 아닐까 생각됩니다...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;지금은 유료가 됐지만 무료버전일 때 C# 바이너리 분석용으로 자주 썼던 툴이기도 하구요..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;회사에서는 유료버전을 함부로 쓸 수가 없기에..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이것저것 뒤지다보니 무료버전 .NET Decompiler 가 있더군요.. @_@&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;바로&amp;nbsp;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;dotPeek&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; [&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.jetbrains.com/decompiler/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;http://www.jetbrains.com/decompiler/&lt;/a&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; ] 이라는 툴입니다...ㅎ&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;써본 바로는 코드 난독화를 심어놨거나... 바이너리를 패킹을 했다거나...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;요런 특수한 경우가 아니면 왠만해서는 &lt;b&gt;Decompile&lt;/b&gt; 을 훌륭하게 수행해주더군요.. @_@&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;무료버전 .NET Decompiler 를 찾으시는 분께 살포시 &lt;b&gt;dotPeek&lt;/b&gt; 을 추천합니다..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Reverse Engineering/RCE Tools</category>
      <category>.NET Decompiler</category>
      <category>.NET Framework</category>
      <category>.NET Reflector</category>
      <category>.NET 디컴파일</category>
      <category>.NET 분석도구</category>
      <category>.NET 소스코드</category>
      <category>dotPeek</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/249</guid>
      <comments>https://iam-hs.com/249#entry249comment</comments>
      <pubDate>Sun, 9 Mar 2014 12:39:34 +0900</pubDate>
    </item>
    <item>
      <title>KT, 1200만 고객정보 유출</title>
      <link>https://iam-hs.com/248</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;KT 도 해킹으로 1200만명 고객정보가 유출됐다는군요..;;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1600만 중에 1200만이면 대부분이라고 보아도 될듯한...;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;큰 이슈들이 연이어 터지네요..ㅜㅜ..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ytn.co.kr/_ln/0103_201403061459102884&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;[YTN] [속보] KT 해킹... 1200만명 개인정보 유출&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://news.khan.co.kr/kh_news/khan_art_view.html?artid=201403061502301&amp;amp;code=930100&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;[경향신문] [속보] KT 홈페이지 해킹 1200만명 개인정보 유출&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.mt.co.kr/view/mtview.php?type=1&amp;amp;no=2014030615244236225&amp;amp;outlink=1&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;[머니투데이] 1200만명 해킹당한 KT, &quot;경위-피해규모 파악 중&quot;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Etc...</category>
      <category>KT</category>
      <category>KT 개인정보</category>
      <category>KT해킹</category>
      <category>개인정보 유출</category>
      <category>고객정보 유출</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/248</guid>
      <comments>https://iam-hs.com/248#entry248comment</comments>
      <pubDate>Thu, 6 Mar 2014 15:27:38 +0900</pubDate>
    </item>
    <item>
      <title>Syntax Highlighter 3.0.83 적용 완료 !!!</title>
      <link>https://iam-hs.com/247</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;사실 예~~~전에 처음 Syntax Highlighter 적용할 떄~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그 당시 최신 버전을 적용하려고 했는데...&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제 블로그에서만 이~~상한 형태로 코드가 출력이 되는걸 보고...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;최신 버전을 버리고 구버전(2.0.320)을 설치를 했습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/25013034530615B420&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F25013034530615B420&quot; width=&quot;500&quot; height=&quot;445&quot; filename=&quot;SH_01.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;토큰별로 개행되는 신기한 현상&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그러다가 오늘 문득...=_=;; 다시 생각이 나서 시도를 했고...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;결국은 성공했습니다~!!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;블로그의 skin.html, style.css 파일을 PC 로 가져와서~~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;직접 하나하나 테스트를 해봤더니&amp;nbsp;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;유독 &amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;div class= &quot;article&quot;&amp;gt; ~ &amp;lt;/div&amp;gt; 안에서만 문제가 생기고...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;다른 곳에서는 정상적으로 출력이 되더군요..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2172B934530615B426&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2172B934530615B426&quot; width=&quot;500&quot; height=&quot;415&quot; filename=&quot;SH_02.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;이게 원하는 출력!!!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;꽤 오래전 일입니다...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Syntax Highlighter 적용&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;하기 전에 VI 에서 코드를 HTML 로 변환해주는 툴을 써서~&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;코드를 올린 적이 있는데 그 당시 css 에 추가한 코드때문에 문제가 발생하더군요..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2335A634530615B408&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2335A634530615B408&quot; width=&quot;500&quot; height=&quot;204&quot; filename=&quot;SH_03.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;문제의 코드... oTL;;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;저 코드를 제거한 후&amp;nbsp;3.0.83 버전으로도 정상적으로 출력이 될 때의 그 희열이란~!!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;결국 위의 코드를 제거하고 예전에 소스코드를 올렸던 글들 하나하나 들어가서~~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;code&amp;gt; ~ &amp;lt;/code&amp;gt; 로 감쌌던 부분에 Syntax Highlighter 를 적용시키는 삽질을 조금 전에 완료했습니다.. =_=v...&lt;/p&gt;&lt;p&gt;( 물론 오래된 글 중 귀찮아서 안한것도..;;; )&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ps...&amp;nbsp;&lt;/p&gt;&lt;p&gt;페이스북 / 트위터 연동시켜둔 바람에 예전 글들이 주르륵 공유된 걸 보고...&lt;/p&gt;&lt;p&gt;다시 하나하나 삭제했다는게 함정...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>HS's FreeNote</category>
      <category>Syntax Highlighter 3.0.83</category>
      <category>syntaxhighlighter</category>
      <category>코드 하이라이팅</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/247</guid>
      <comments>https://iam-hs.com/247#entry247comment</comments>
      <pubDate>Thu, 20 Feb 2014 23:59:37 +0900</pubDate>
    </item>
    <item>
      <title>[TIP] Sublime Text 3 - Visual C++ 빌드 환경 설정</title>
      <link>https://iam-hs.com/246</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2375CC3F53008EA906&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2375CC3F53008EA906&quot; width=&quot;500&quot; height=&quot;479&quot; filename=&quot;sublime_text3.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;Sublime Text 3&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;예전에 우연한 계기로 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Sublime Text&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;(&lt;/span&gt;&lt;a href=&quot;http://www.sublimetext.com&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;http://www.sublimetext.com&lt;/a&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;라는 에디터를 알게 됐고~&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;공식 홈페이지 첫화면에 나오는 대표기능(?) 영상을 보고 감동을 받은 후로~~&lt;/p&gt;
&lt;p&gt;지금까지 계속 사용하고 있습니다 ㅎㅎㅎ&amp;nbsp;~ :))&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 341px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/22720A3F53008EA908&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F22720A3F53008EA908&quot; width=&quot;341&quot; height=&quot;169&quot; filename=&quot;sublime_registered.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;보란듯이 등록 유저 인증 -_-v&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;Sublime Text 3 를 처음 설치하면 기본적으로&amp;nbsp;C++ 에 대해서는 gcc/g++ 을 컴파일러로 인식하도록 되어있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;운영체제가 리눅스거나 윈도우라도 MinGW (or Cygwin) 가 설치된 상태라면 상관없겠지만...&lt;/p&gt;
&lt;p&gt;Visual C++ 만 설치된 환경이라면 조금 답답하죠~ :((&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;그래서 Visual C++ 사용자들 입맛(?)에 맞게 빌드 환경을 설정하는 과정을 정리해봤습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Sublie Text 3 가 설치된 폴더를 보시면 &quot;Packages&quot; 라는 폴더가 있고...&lt;/p&gt;
&lt;p&gt;그 폴더 안에 &lt;b&gt;'.sublime-package'&lt;/b&gt; 확장자를 가진 파일들이 많이 있는데,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 파일들이 Sublie Text 3 에서 제공하는 기본 설정 파일들입니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2178673F53008EA905&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2178673F53008EA905&quot; width=&quot;500&quot; height=&quot;473&quot; filename=&quot;sublime_text_packages.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;Sublime Text 3 가 설치된 경로의 &quot;Packages&quot; 폴더&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;파일들 중 &lt;b&gt;'[언어].sublime-package'&lt;/b&gt; 파일들이 각 언어에 대한 기본 설정 파일입니다.&lt;/p&gt;
&lt;p&gt;이 파일들은 ZIP 포맷으로 압축이 되어있으며~ ZIP 포맷을 지원하는 압축 관련 유틸로 풀 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;우리가 설정하려고 하는 언어는 &lt;b&gt;'C++'&lt;/b&gt; 이니 &lt;b&gt;'C++.sublime-package'&lt;/b&gt; 압축을 풀어봅시다~&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/252F41505300972A24&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F252F41505300972A24&quot; width=&quot;500&quot; height=&quot;608&quot; filename=&quot;sublime_text_c  _package.png&quot; filemime=&quot;image/png&quot; style=&quot;text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;;&quot;&gt;&quot;C++.sublime-package&quot; 파일 안에 들어있는 내용들&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;위에 보이는&amp;nbsp;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;'C++.sublime-build'&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 파일이 빌드 환경에 대한 설정 파일입니다. :)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;JSON 형식이라 일반 텍스트 에디터로도 편집이 가능한데요~&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;저 파일을 열어보면 기본적으로는 아래와 같이 되어있을 겁니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/236DDE37530096471B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F236DDE37530096471B&quot; width=&quot;500&quot; height=&quot;222&quot; filename=&quot;sublime_text3_c  _default.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;'C++.sublime-build' 파일의 내용&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;g++ 이 설정되어있는 게 보이시죠...??&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기서 g++ 로 빌드 명령을 조합하는 부분들을 Visual C++ 에&amp;nbsp;맞게 고쳐주면~&lt;/p&gt;
&lt;p&gt;Visual C++ 를 기본 컴파일러로 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;참고로 저는 아래와 같이 설정을 해두었습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/265D223F53008EA911&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F265D223F53008EA911&quot; width=&quot;500&quot; height=&quot;647&quot; filename=&quot;sublime_text_c  _build.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;Visual C++ 용 빌드 환경 설정&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:python&quot;&gt;
{
	&quot;cmd&quot;:
	[
		&quot;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat&quot;,
		&quot;&amp;&amp;&quot;,
		&quot;cl.exe&quot;, &quot;/EHsc&quot;, &quot;/O2&quot;, &quot;/GS&quot;, &quot;/Fm&quot;, &quot;${file}&quot;
	],
	&quot;file_regex&quot;: &quot;^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$&quot;,
	&quot;working_dir&quot;: &quot;${file_path}&quot;,
	&quot;selector&quot;: &quot;source.c, source.c++&quot;,
	&quot;encoding&quot;: &quot;cp949&quot;,

	&quot;variants&quot;:
	[
		{
			&quot;name&quot;: &quot;Run&quot;,
			&quot;cmd&quot;:
			[
				&quot;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat&quot;,
				&quot;&amp;&amp;&quot;,
				&quot;cl.exe&quot;, &quot;/EHsc&quot;, &quot;/O2&quot;, &quot;/GS&quot;, &quot;/Fm&quot;, &quot;${file}&quot;,
				&quot;&amp;&amp;&quot;,
				&quot;${file_path}/${file_base_name}.exe&quot;
			],
		},
		{
			&quot;name&quot;: &quot;Build_Dll&quot;,
			&quot;cmd&quot;:
			[
				&quot;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat&quot;,
				&quot;&amp;&amp;&quot;,
				&quot;cl.exe&quot;, &quot;/EHsc&quot;, &quot;/O2&quot;, &quot;/GS&quot;, &quot;/Fm&quot;, &quot;/LD&quot;, &quot;${file}&quot;,
			],
		},
		{
			&quot;name&quot;: &quot;Build_sys&quot;,
			&quot;cmd&quot;:
			[
				&quot;C:\\Windows\\System32\\cmd.exe&quot;, &quot;/k&quot;,
				&quot;C:\\WinDDK\\7600.16385.1\\bin\\setenv.bat&quot;, &quot;C:\\WinDDK\\7600.16385.1\\&quot;, &quot;fre&quot;, &quot;x86&quot;, &quot;WNET&quot;,
				&quot;&amp;&amp;&quot;,
				&quot;DDKBUILD.cmd&quot;, &quot;-WNETXP&quot;, &quot;fre&quot;, &quot;${file_path}&quot;, &quot;-cZ&quot;,
			],
		}
	]
}
&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;b&gt;'C++.sublime-build'&lt;/b&gt; 파일을 자신에 맞게 수정했으면~&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;다시 원래대로 다른 파일들과 함께~&amp;nbsp;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;b&gt;'C++.sublime-package'&lt;/b&gt; 라는 이름으로&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;ZIP 포맷으로 압축을 하고&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;b&gt;&quot;Packages&quot;&lt;/b&gt; 폴더에 넣어주시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;( 혹시라도 잘못 수정할 경우를 대비해 원래 파일은 백업해 두시는걸 권장합니다. ㅎㅎ )&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;위와 같은 일련의 과정들이 끝나면&amp;nbsp;C++ 에 대해서&amp;nbsp;Visual C++ 컴파일러가 동작하는 것을 볼 수 있습니다. :))&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;( 개인적으로는 Sublime Text 에 손이 익숙해지니 Visual C++ IDE 에서 작업하는게&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&amp;nbsp;엄청 답답하더군요;;;.. )&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;보너스로... 빌드를 조금 더 쉽게(?)하기 위한 단축키&amp;nbsp;설정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;( 'Preferences -&amp;gt; Key Binding - User' 에서 설정할 수 있습니다. )&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2139C03F53008EA91F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2139C03F53008EA91F&quot; width=&quot;500&quot; height=&quot;218&quot; filename=&quot;sublime_text3_c  _build_key_binding.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;단축키 설정&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:python&quot;&gt;
[
	// Alignment
	{ &quot;keys&quot;: [&quot;ctrl+alt+a&quot;], &quot;command&quot;: &quot;alignment&quot; },

	// Build
	{ &quot;keys&quot;: [&quot;f5&quot;], &quot;command&quot;: &quot;build&quot; },
	{ &quot;keys&quot;: [&quot;ctrl+f5&quot;], &quot;command&quot;: &quot;build&quot;, &quot;args&quot;: {&quot;variant&quot;: &quot;Run&quot;} },	
	{ &quot;keys&quot;: [&quot;ctrl+b&quot;, &quot;ctrl+b&quot;], &quot;command&quot;: &quot;build&quot; },
	{ &quot;keys&quot;: [&quot;ctrl+b&quot;, &quot;ctrl+d&quot;], &quot;command&quot;: &quot;build&quot;, &quot;args&quot;: {&quot;variant&quot;: &quot;Build_Dll&quot;} },	
	{ &quot;keys&quot;: [&quot;ctrl+b&quot;, &quot;ctrl+s&quot;], &quot;command&quot;: &quot;build&quot;, &quot;args&quot;: {&quot;variant&quot;: &quot;Build_sys&quot;} },	
]
&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;[ Sublime 기능 관련 영상 ]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/t99TRI_5QiE?rel=0&quot; width=&quot;420&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/i2SVJa2EGIw?rel=0&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Tip / Tech</category>
      <category>sublime text</category>
      <category>Sublime Text 3</category>
      <category>TIP</category>
      <category>TIP/TECH</category>
      <category>Visual C++</category>
      <category>Visual C++ 빌드 환경 설정</category>
      <category>서브라임</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/246</guid>
      <comments>https://iam-hs.com/246#entry246comment</comments>
      <pubDate>Sun, 16 Feb 2014 20:11:48 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 시스템 모듈(kernel32.dll)을 복사해서 로딩할 경우 주의점</title>
      <link>https://iam-hs.com/245</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;일부 보안 모듈의 경우&amp;nbsp;윈도우 API 를 조금 더 안전한(?) 채널을 통해&amp;nbsp;사용하기 위해...&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;필요한 모듈을 다른 이름으로 복사 후 로딩하는 경우가 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;여기선 kernel32.dll 을 복사해서 로딩할 때 조심해야 될 부분을 가볍게(?) 살펴보고자 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;kernel32.dll 이 로딩될 때 ntdll.dll 모듈의 데이터 영역에 영향을 미치는 부분을 확인했는데요...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다음과 같은 부분들이 영향을 받더군요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2769783B52FEE20C32&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2769783B52FEE20C32&quot; width=&quot;500&quot; height=&quot;645&quot; filename=&quot;ntdll_data_01.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;일반적인 상태의 ntdll.dll 의 데이터 영역&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;프로세스를 실행하면 보통~ ntdll.dll 의 데이터 영역은 위와 같이 kernel32.dll 의 함수를 가리킵니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이후 kernel32.dll 을 복사해서 로딩하면...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2778D23B52FEE20C2A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2778D23B52FEE20C2A&quot; width=&quot;500&quot; height=&quot;616&quot; filename=&quot;ntdll_data_02.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;새로운 kernel32.dll 로딩 후 ntdll.dll 의 데이터 영역&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;붉은 박스 표시한 부분의 데이터가 바뀌면서 새로 로딩한 kernel32.dll 의 함수를&amp;nbsp;가리키더군요...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;호기심에 kernel32.dll 의 코드를 살짝 봤습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 411px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2458333B52FEE20C33&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2458333B52FEE20C33&quot; width=&quot;411&quot; height=&quot;359&quot; filename=&quot;kernel32_entrypoint.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;실행의 시작은 EntryPoint ...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2411383B52FEE20C23&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2411383B52FEE20C23&quot; width=&quot;500&quot; height=&quot;534&quot; filename=&quot;kernel32_set_ntdll.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;kernel32.dll 의 초기화 코드의 일부&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;kernel32.dll 의 초기화 코드 중 위와 같은 부분이 있더군요... @_@&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;자기자신의 함수 주소를 &lt;b&gt;RtlSetThreadPoolStartFunc&lt;/b&gt;, &lt;b&gt;LdrSetDllManifestProber&lt;/b&gt; 등을 이용해...&lt;/p&gt;&lt;p&gt;설정을 하는 부분인데요..&lt;/p&gt;&lt;p&gt;호출되는 함수의 코드는 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/220CC13B52FEE20C23&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F220CC13B52FEE20C23&quot; width=&quot;500&quot; height=&quot;337&quot; filename=&quot;ntdll_func.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;RtlSetThreadPoolStartFunc, LdrSetDllManifestProber&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;RtlSetThreadPoolStartFunc &lt;/b&gt;와 &lt;b&gt;LdrSetDllManifestProber &lt;/b&gt;는 ntdll.dll 의 함수이구요...&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;ntdll.dll 의 특정 영역에 인자로 전달받은 함수 주소를 쓰는 것을 알 수 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;( RtlpStartThreadFunc, RtlpExitThreadFunc, LdrpManifestProberRoutine, LdrpCreateActCtxLanguageW )&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;즉... kernel32.dll 을 복사해서 로딩을 하면 개발자의 의도(?)와는 전혀 상관없이...&lt;/p&gt;&lt;p&gt;ntdll.dll 의 일부 데이터가 복사본을 가리키도록 되어있고...&amp;nbsp;&lt;/p&gt;&lt;p&gt;그 순간부터 시스템 내부적으로 동작하는 일부 코드들은&amp;nbsp;복사본에 대한 의존성이 생기게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;나만 사용해야지(?) 하고 로딩한 모듈인데... 실제로는 그게 아닌거죠...;;;&lt;/p&gt;&lt;p&gt;개발자가 인지하기 힘든 백그라운드에서 알게 모르게 복사본 코드가 실행이 될 수 있다는 거...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;요런 상황에서 복사본을 Free 시켜버리면 문제가 발생합니다.&lt;/p&gt;&lt;p&gt;복사본이 로딩될 때 변경한 ntdll.dll 의 데이터들은 여전히 복사본을 가리키고 있거든요...&lt;/p&gt;&lt;p&gt;복사본이 Free 된 후에&amp;nbsp;해당 데이터들을 호출하려는 코드에서는&amp;nbsp;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;b&gt;Access Violation&lt;/b&gt; 이 발생하는거죠.. @_@&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;일단&amp;nbsp;kernel32.dll 복사본을 로딩했으면...&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;이 녀석은 프로세스 종료될 때 알아서 증발하도록&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;내버려두는게 상책입니다... @_@ ;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;ps...&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;꼭 kernel32.dll 모듈이 아니더라도 시스템 모듈의 경우 비슷한 문제가 발생할 수 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Windows System</category>
      <category>BaseCreateThreadPoolThread</category>
      <category>BaseExitThreadPoolThread</category>
      <category>KERNEL32.DLL</category>
      <category>ntdll.dll</category>
      <category>RtlpExitThreadFunc</category>
      <category>RtlpStartThreadFunc</category>
      <category>Windows System</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/245</guid>
      <comments>https://iam-hs.com/245#entry245comment</comments>
      <pubDate>Sat, 15 Feb 2014 13:22:02 +0900</pubDate>
    </item>
    <item>
      <title>Oreans UnVirtualizer v1.8 (OllyDbg Plugin) 업데이트</title>
      <link>https://iam-hs.com/244</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;얼마 전 OllyDbg 플러그인 &lt;b&gt;Oreans UnVirtualizer v1.8&lt;/b&gt; 이 업데이트 되었네요.. @_@&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Themida 를 입은 해킹툴을 분석할 때 가장 난감한게 VM 인데~~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 플러그인은 Themida VM 을 벗겨주죠~ (*-_-*)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;물론 경우에 따라서 이 플러그인으로도 불가능한 경우가 다소 있긴 하지만...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이게 있고 없고의 차이는 꽤 크더라구요..ㅎㅎ @_@&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;v1.8 에는 다음과 같은 부분이 변경되었습니다...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;----------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;[v1.8]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;- FISH BLACK variant avaible&lt;/p&gt;&lt;p&gt;- Fixed deofuscation order (GenV6)&lt;/p&gt;&lt;p&gt;- New deofucation scheme for FISH machine&lt;/p&gt;&lt;p&gt;- New smart code tracer for FISH machines&lt;/p&gt;&lt;p&gt;- Stack sort for FISH commands&lt;/p&gt;&lt;p&gt;- Improved management of memory (faster deofuscation)&lt;/p&gt;&lt;p&gt;- Added movzx reg32, [esp+eax+memoffset] on CISC machines&lt;/p&gt;&lt;p&gt;- Added a message prompt when the opcode buffer is not enough&lt;/p&gt;&lt;p&gt;- Added LEAVE instruction for FISH machines&lt;/p&gt;&lt;p&gt;- Added support for CALLs to VM section in FISH machines&lt;/p&gt;&lt;p&gt;- CHECK_PROTECTION macro disabled, now it must be restored by hand&lt;/p&gt;&lt;p&gt;- Fixed QWORD incorrect names for some opcodes&lt;/p&gt;&lt;p&gt;- Fixed a problem when deofuscating RISC machines&lt;/p&gt;&lt;p&gt;----------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Oreans UnVirtualizer 만세~!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/2337CF3352FEDA4908&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;Oreans UnVirtualizer v1.8.rar&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;출처 : Tuts 4 You (&lt;a href=&quot;http://www.tuts4you.com&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.tuts4you.com&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Reverse Engineering/RCE Tools</category>
      <category>OllyDbg</category>
      <category>Oreans UnVirtualizer</category>
      <category>Reverse Engineering</category>
      <category>Themida</category>
      <category>UnVirtualizer</category>
      <category>VM 코드</category>
      <category>winlicense</category>
      <category>리버싱</category>
      <category>올리디버거 플러그인</category>
      <category>코드가상화</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/244</guid>
      <comments>https://iam-hs.com/244#entry244comment</comments>
      <pubDate>Sat, 15 Feb 2014 12:11:32 +0900</pubDate>
    </item>
    <item>
      <title>Themida VM 매크로 사용시 주의점</title>
      <link>https://iam-hs.com/243</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;실행 파일 바이너리를 보호하기 위한&amp;nbsp;솔루션 &lt;b&gt;&lt;span style=&quot;font-size: 10pt; color: rgb(0, 0, 0);&quot;&gt;Themida&lt;/span&gt;&lt;/b&gt; [ &lt;a href=&quot;http://www.oreans.com&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.oreans.com&lt;/a&gt; ]&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;Themida 의 기능 중 가장 강력한 보안 기능을 꼽으라면 VM(Virtual Machine) 을 꼽을 수 있는데요.. :)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;이 기능은 프로그램&amp;nbsp;개발시 보호하고 싶은 소스코드를 VM 매크로로 감싸두면&lt;/p&gt;
&lt;p&gt;Themida 로 패킹된 파일을 실행할 때&amp;nbsp;VM 매크로로 감싼 코드 부분이...&lt;/p&gt;
&lt;p&gt;Themida 가 제공하는&amp;nbsp;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;가상의 CPU 머신을&amp;nbsp;통해서 실행이 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 408px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/212A074852F4DDEE12&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F212A074852F4DDEE12&quot; width=&quot;500&quot; height=&quot;408&quot; filename=&quot;ThemidaVM.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 500px; height: 408px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 408px;;&quot;&gt;Themida 에서 제공하는 Virtual Machine&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;VM 으로 실행되는 코드의 경우 우리가 흔히 인지하는 Intel CPU 명령과는 달라서...&amp;nbsp;&lt;/p&gt;
&lt;p&gt;실행되는 과정을 분석하기가 매우&amp;nbsp;까다롭습니다.&lt;/p&gt;
&lt;p&gt;( 실제 소스코드 상에서 입력한 코드에 대한 디버깅이 거의 불가능합니다.. ^^;;; )&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;이런 강력함으로 인해 강력한 보안이 필요한 코드에 대해서 VM 을 적용하는 경우가 있는데요...&lt;/p&gt;
&lt;p&gt;VM 을 적용할 때 몇가지 주의해야 할 점을 분석해볼까 합니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;우선 먼저 Themida Help 문서를 보면 다음과 같이 주의점에 대해 안내가 되어있습니다. :))&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 145px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2405924852F4DDEE20&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2405924852F4DDEE20&quot; width=&quot;500&quot; height=&quot;145&quot; filename=&quot;ThemidaHelp.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 500px; height: 145px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 145px;;&quot;&gt;Themida VM 사용 시 주의점&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;#1. for, while, do ... 등의 반복 루프를 피하라.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;VM 이라는 기능 자체가 소프트웨어적으로 구현된 가상의 CPU 를 통해&lt;/p&gt;
&lt;p&gt;가상의 CPU 가 해석할 수 있는 명령어를 실행하는 방식인데...&lt;/p&gt;
&lt;p&gt;이런 방식 자체가 실제 물리 CPU 상에서 코드를 실행하는 것보다는 퍼포먼스가 떨어집니다.&lt;/p&gt;
&lt;p&gt;( 조금 더 자세한 내용은 &lt;a href=&quot;http://ezbeat.tistory.com/361&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Ezbeat 님 블로그 - &quot;Themida 2.1.2.0 Virtual Machine&quot;&lt;/a&gt;&amp;nbsp;참고... )&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;MOV EAX, 1&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;위와 같은 코드의 경우 실제 CPU 로는 한 스텝(Intel CPU&amp;nbsp;어셈블리 명령 처리 기준)이면 실행이 가능하지만...&lt;/p&gt;
&lt;p&gt;동일한 코드를 Themida VM 으로 실행하면 실제 CPU 기준에서는 수십에서 수백 스텝이 걸릴 수도 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;단일 코드만 해도 이렇기 때문에 수없이&amp;nbsp;반복하는 코드를 VM 안에서 실행시키면...&lt;/p&gt;
&lt;p&gt;그 만큼&amp;nbsp;퍼포먼스가 저하됩니다..&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 419px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2311EB4D52F4ECD52E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2311EB4D52F4ECD52E&quot; width=&quot;419&quot; height=&quot;766&quot; filename=&quot;Performance.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;for 루프 반복 수에 따른 Performance&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;#2. VM 매크로 내부에서&amp;nbsp;switch 구문이 동작하지 않을 수 있다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;우선 간단한(?) switch 구문을 살펴봅시다~ :)&lt;/p&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;VM_START
	switch (nNumber)
	{
	case 1:
		printf(&quot;Number 1\n\r&quot;);
		break;

	case 2:
		printf(&quot;Number 2\n\r&quot;);
		break;

	case 3:
		printf(&quot;Number 3\n\r&quot;);
		break;

	case 4:
		printf(&quot;Number 4\n\r&quot;);
		break;

	case 5:
		printf(&quot;Number 5\n\r&quot;);
		break;

	default:
		printf(&quot;Other...\n\r&quot;);		

	}
VM_END
&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;위의 코드가 컴파일되면 다음과 같은 어셈블리 코드로 변환이 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2717FB4852F4DDED18&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2717FB4852F4DDED18&quot; width=&quot;500&quot; height=&quot;318&quot; filename=&quot;ExamSwitch_01.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2630DC4852F4DDED0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2630DC4852F4DDED0E&quot; width=&quot;500&quot; height=&quot;333&quot; filename=&quot;ExamSwitch_02.png&quot; filemime=&quot;image/png&quot; style=&quot;text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;switch 구문에서 각각의 case 구문을 실행하는 방식은 주소 테이블을 참조한 JMP 입니다.&lt;/p&gt;
&lt;p&gt;0x85108C 위치 각 case 구문에서 실행될 코드의 주소가 저장되어 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;;------------------------------------------------------&lt;/p&gt;
&lt;p&gt;0x85108C : case 1: 일 때 참조됨 -&amp;gt; 0x851047&lt;/p&gt;
&lt;p&gt;0x851090 : case 2: 일 때 참조됨 -&amp;gt; 0x85104E&lt;/p&gt;
&lt;p&gt;0x851094 : case 3: 일 때 참조됨 -&amp;gt; 0x851055&lt;/p&gt;
&lt;p&gt;0x851098 : case 4: 일 때 참조됨 -&amp;gt; 0x85105C&lt;/p&gt;
&lt;p&gt;0x85109C : case 5: 일 때 참조됨 -&amp;gt; 0x851063&amp;nbsp;&lt;/p&gt;
&lt;p&gt;;------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;이 코드에 VM 이 적용되면 VM_START 가 마크된 0x851025 부분이 VM 을 호출하는 코드로 변경되고..&lt;/p&gt;
&lt;p&gt;그 이후부터 VM_END 가 끝나는&amp;nbsp;0x851089 앞부분 까지의 코드가 변합니다..&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/27563A4252F4F43520&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F27563A4252F4F43520&quot; width=&quot;500&quot; height=&quot;330&quot; filename=&quot;ExamSwitch_05.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2563C34852F4DDEE2E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2563C34852F4DDEE2E&quot; width=&quot;500&quot; height=&quot;256&quot; filename=&quot;ExamSwitch_03.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;여기서 문제가 발생하는데요...&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;바로 위의 캡쳐를 보면 아시겠지만... switch 구문 실행 시 참고하는 테이블은...&lt;/p&gt;
&lt;p&gt;그 위치 그대로... 같은 내용물(case 구문에서 실행될 코드의 원래&amp;nbsp;주소)이&amp;nbsp;담겨져 있는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;( 윈도우의 ASLR 으로 인해 이미지 베이스가 변경되긴 했지만 오프셋은 동일합니다. )&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;VM 매크로 안의 코드는 패킹하는 과정에서 코드가 달라졌지만...&lt;/p&gt;
&lt;p&gt;switch 구문에서 참조하는 테이블은 변경되기 전의 코드 주소를 가지고 있고...&lt;/p&gt;
&lt;p&gt;case 구문이 실행될 때 해당 주소를 가보면... @_@ ;;; 정상적인 코드가 아니기 때문에 크래쉬가 발생합니다..&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/261B7E4852F4DDEE17&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F261B7E4852F4DDEE17&quot; width=&quot;500&quot; height=&quot;266&quot; filename=&quot;ExamSwitch_04.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;VM 매크로 영역 안에 있는&amp;nbsp;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;switch 구문&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;이 컴파일될 때,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;위와 같이 매크로 영역 밖의 테이블을 참조해서 case 구문을 실행하는 형태가 될 경우는...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;100% 문제가 발생합니다...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;참고로 ... 간혹 switch 내부의 case 수가 적은 경우는...&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;참조 테이블을 생성하지 않고 단순 조건비교( if 구문처럼 )로 처리되기도 하는데...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;이런 경우는 VM 매크로가 적용된다고 해도 문제가 없습니다.. ^^;;;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;안전성을 위해서는 왠만하면 VM 매크로 내부에 switch 구문을 사용하지 않는 것이 좋겠죠...&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;#3. 예외처리가 제대로 동작하지 않는다. try - except 를 VM 매크로로 감싸는 것을 피하라.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;따지고 보면 #2 와 같은 이유에서 발생하는 문제입니다.&lt;/p&gt;
&lt;p&gt;VM 매크로 밖의 코드에서 VM 매크로 안쪽의 코드에 접근하려다가 문제가 발생하는 거죠..&lt;/p&gt;
&lt;pre class=&quot;brush:cpp&quot;&gt;VM_START

	__try {
		int nResult = nNumber / 0;
		printf(&quot;nNumber= %d, nResult : %d\n\r&quot;, nNumber, nResult);
	}
	__except(EXCEPTION_EXECUTE_HANDLER) {
		printf(&quot;Exception !!! \n\r&quot;);
	}

VM_END
&lt;/pre&gt;&lt;p&gt;일반적으로 예외처리기 등록은 함수 시작 극초반부에서 이루어 집니다..&lt;/p&gt;
&lt;p&gt;소스코드 상에서는&amp;nbsp;함수내에서 VM 매크로를 아무리 끌어올려도... ( 함수 여는 괄호 '{' 바로 밑에 둬도.. )&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;예외처리기 등록부는 항상 그보다 더 위에 있습니다... :(&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2533543652F6149631&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2533543652F6149631&quot; width=&quot;500&quot; height=&quot;311&quot; filename=&quot;ExamTryExcept_01.png&quot; filemime=&quot;image/png&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/273D843652F6149625&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F273D843652F6149625&quot; width=&quot;500&quot; height=&quot;325&quot; filename=&quot;ExamTryExcept_02.png&quot; filemime=&quot;image/png&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;예외처리기 등록은 함수 시작부분부터 0xA5102A 까지해서 이루어지고..&lt;/p&gt;
&lt;p&gt;예외처리기 주소는 0xA51220, 예외처리기가 참고하는 scopetable 은0xA5BA30 으로..&amp;nbsp;&lt;/p&gt;
&lt;p&gt;둘 다 VM 매크로 영역 밖입니다.&lt;/p&gt;
&lt;p&gt;scopetable 에는 예외처리에 대한 Filter 함수(?), Handler 함수(?)의 주소가 담겨져 있습니다.&lt;/p&gt;
&lt;p&gt;( 조금 더 자세한 내용은 &lt;a href=&quot;http://ezbeat.tistory.com/284&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;Ezbea&lt;/a&gt;&lt;a href=&quot;http://ezbeat.tistory.com/284&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;t 님 블로그 - &quot;Visual C++ SEH Filter, Handler 루틴&quot;&lt;/a&gt; 참고... )&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2468753652F6149606&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2468753652F6149606&quot; width=&quot;500&quot; height=&quot;464&quot; filename=&quot;ExamTryExcept_03.png&quot; filemime=&quot;image/png&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2738B43652F614962E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2738B43652F614962E&quot; width=&quot;500&quot; height=&quot;167&quot; filename=&quot;ExamTryExcept_04.png&quot; filemime=&quot;image/png&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2155CB3652F6149612&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2155CB3652F6149612&quot; width=&quot;500&quot; height=&quot;104&quot; filename=&quot;ExamTryExcept_05.png&quot; filemime=&quot;image/png&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2357213652F6149611&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2357213652F6149611&quot; width=&quot;500&quot; height=&quot;237&quot; filename=&quot;ExamTryExcept_06.png&quot; filemime=&quot;image/png&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;코드가 실행되다가 예외가 발생할 경우 예외처리기에서는 scopetable 을 참고하여...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;Filter 함수 및 Handler 함수를 호출하게 되는데, 이 때 #2 와 마찬가지로 문제가 발생합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;scopetable 에 담겨져있는 Filter 함수 및 Handler 함수 주소는 패킹하기 전 그대로인데...&lt;/p&gt;
&lt;p&gt;패킹 후에는 해당 주소부분이 다른 코드로 바뀌어 버린거죠.. @_@ ;;;;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;개발 중인 제품에 Themida VM 매크로 적용하려는데...&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;뭔가 계속 문제가 발생한다... 싶으면 위와 같은 요소들을 살펴보시기 바랍니다..ㅎ&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Programming</category>
      <category>Programming</category>
      <category>switch</category>
      <category>Themida</category>
      <category>Themida VM</category>
      <category>try - except</category>
      <category>VM Macro</category>
      <category>VM 매크로</category>
      <category>VM 매크로 주의점</category>
      <category>VM_END</category>
      <category>VM_START</category>
      <category>더미다</category>
      <category>프로그래밍</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/243</guid>
      <comments>https://iam-hs.com/243#entry243comment</comments>
      <pubDate>Sat, 8 Feb 2014 00:41:49 +0900</pubDate>
    </item>
    <item>
      <title>[Python] pefile-1.2.10-139  ( for Python3 )</title>
      <link>https://iam-hs.com/242</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;요 얼마간 파이썬 2.7 버전으로 계속 작업했는데...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;문득....!!!!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(65, 116, 217); font-size: 14pt;&quot;&gt;그래도 최신 버전이 낫지 않을까...?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하는 생각이 들어서...&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;파이썬 3.3 을 설치하고 이것저것 건드려 봤습니다...;;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2.7 ===&amp;gt; 3.3 으로 버전업되면서&amp;nbsp;바뀐 변화를 처음 접한 느낌은 대략 &lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;멘.붕...;;;;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;바뀐 문법으로 인해 라이브러리 설치 단계부터 에러가 나기 시작하는데..;;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;생각보다 난감하더군요.. @_@;;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제가 개인적으로 파이썬에 대한 강력함을 느낀 첫번째 이유가 라이브러리로 인한~&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;작업 효율 향상이었는데..;; 라이브러리 설치부터 막혀버리니..;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;( 업무 특성상 pefile, pydasm 뭐 요런 것들을 사용하는지라..;; )&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;한차례 좌절감을 맛본 후...&amp;nbsp;&lt;/p&gt;&lt;p&gt;인터넷으로 파이썬3 에 대한 이런저런(?) 정보들을 먼저 수집했습니다..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;print 는 함수처럼 '(', ')' 로 감싸줘야한다.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;예외처리부에서는 'exception, e' -&amp;gt; 'exception as e' .&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;문자열은 기본적으로 '유니코드' 이다.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;(int) / (int) 는 (float) ... (int) // (int) = (int)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;일부 내장 함수들 및 자료형&lt;/span&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;이 사라지고 추가되었다...&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;기타 등등..&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;뭐... 생각보다 많은 변화(?)가 있더군요..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;달라진 내용을 기반으로 기존의 2.x 코드를 포팅하는 방법에 대한 글들을 읽어보면서~&lt;/p&gt;&lt;p&gt;' pefile ' 을 대상으로 하나하나 적용시켜봤습니다.. :))&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://code.google.com/p/pefile/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;[ pefile - project home ]&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;일단 결과는 나름&amp;nbsp;성공(!?)인듯해서... 살포시 블로그에 올려봅니다. ^^;;;&lt;/p&gt;&lt;p&gt;하지만 모든 부분을 테스트 해보지는 못했기에 중간중간 문제가 발생할 수도 있을 것 같네요...;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그런 버그들은 추후... 발견이 되면 수정을 하는 방향으로..^^;;;;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;[ pefile_py3 GitHub -&amp;nbsp;&lt;a href=&quot;https://github.com/BlackXeronic/pefile_py3&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/BlackXeronic/pefile_py3&lt;/a&gt; ]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ps... 포팅작업 은근 토나오네요...;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/2358D93852EC957D28&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;pefile_py3-master.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>My Portfolio</category>
      <category>pefile</category>
      <category>pefile-1.2.10-139</category>
      <category>Programming</category>
      <category>Python</category>
      <category>python3</category>
      <category>python3 pefile</category>
      <category>파이썬</category>
      <category>파이썬3</category>
      <category>프로그래밍</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/242</guid>
      <comments>https://iam-hs.com/242#entry242comment</comments>
      <pubDate>Sat, 1 Feb 2014 02:31:14 +0900</pubDate>
    </item>
    <item>
      <title>[TIP] Visual Studio 2010 으로 파이썬 2.7.x 모듈 빌드하기</title>
      <link>https://iam-hs.com/241</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;파이썬 2.7 에서 디스어셈블러 모듈을 써보고 싶어서~&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;파이썬 전반적인 활용능력도 익힐겸(?) &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;libdasm&quot;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://code.google.com/p/libdasm/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;[ libdasm 사이트 ]&lt;/a&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&amp;nbsp;라이브러리 가져와&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;직접&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;PyDasm&quot;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&amp;nbsp;모듈을 빌드하기로 결정했습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;그런데 이게 왠걸...? &quot;vcvarsall.bat&quot; 파일을 찾을 수 없다는 에러를 뱉으며 빌드가 되지 않더군요;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 327px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/252E7F4A52D960AD10&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F252E7F4A52D960AD10&quot; width=&quot;500&quot; height=&quot;327&quot; filename=&quot;Python_module_build_fail.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 500px; height: 327px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 327px;;&quot;&gt;처음 시도시 PyDasm 빌드 실패&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;구글링을 하며 이런저런 정보를 뒤지다 보니~&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;Python 2.7 버전대는 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(0, 85, 255);&quot;&gt;Visual Studio 2008&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 을 기준으로 되어있다는 그런 글들이 많이 보이더군요..;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;제 PC 에는 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;Visual Studio 2010&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;, Visual Studio 2013 Express&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; ... 이렇게 설치가 되어있는데 말이죠;;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;근데 아무리 생각해도 저 에러는 &quot;vcvarsall.bat&quot; 파일만 제대로 찾으면 왠지 될거 같다는 생각에~&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;파이썬의 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;Disutils&quot;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 라이브러리에서 &quot;vcvarsall.bat&quot; 를 찾는 부분을 뒤져봤습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;이것저것 뒤지다보니 MS Visual C++ 컴파일러 계열에 대해서 처리하는 방식이 눈에 들어오더군요.. @_@;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 567px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2520AA3E52D9632A01&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2520AA3E52D9632A01&quot; width=&quot;500&quot; height=&quot;567&quot; filename=&quot;CCompiler.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 500px; height: 567px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 567px;;&quot;&gt;C 컴파일러에 대한 기본 설정&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&quot;msvc&quot;&lt;/b&gt; 의 경우는 &lt;b&gt;&quot;msvccompiler&quot;&lt;/b&gt; 모듈의 &lt;b&gt;&quot;MSVCCompiler&quot;&lt;/b&gt; 클래스를 사용하더군요~ :)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;msvccompiler 모듈을 열어봤더니... 맨 마지막에 아래와 같은 내용이 있더군요.. @_@ ;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 567px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2146364D52D963B125&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2146364D52D963B125&quot; width=&quot;500&quot; height=&quot;567&quot; filename=&quot;msvccompiler.png&quot; filemime=&quot;image/png&quot; style=&quot;width: 500px; height: 567px;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; width: 500px; height: 567px;;&quot;&gt;msvccompiler.py&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;get_build_version()&lt;/b&gt; 을 해서 8.0 이상이면 &lt;b&gt;&quot;msvc9compiler&quot;&lt;/b&gt; 모듈의 &lt;b&gt;&quot;MSVCCompiler&quot;&lt;/b&gt;&amp;nbsp;을 IMPORT~!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;get_build_version()&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 은 뭘까요..?? @_@ ;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2449403352D9662916&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2449403352D9662916&quot; width=&quot;500&quot; height=&quot;387&quot; filename=&quot;get_build_version.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;get_build_version()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;코드 자체는 어려운 코드가 아닙니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;저 코드 결과가 어떻게 되는지 파이썬 콘솔로 테스트 해볼까요..? :)&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/27315E3D52D967F210&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F27315E3D52D967F210&quot; width=&quot;500&quot; height=&quot;327&quot; filename=&quot;python_console.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;파이썬 콘솔 테스트&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;간단히 설명하면 sys.version 내에서 &quot;MSC v.&quot; 문자열을 기준으로 그 뒤의 문자열을 찾아서~&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;majorVersion, minorVersion&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 을 계산하는 코드입니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;( 특이한 점은 majorVersion 을 구할 때 15 에 6 을 빼서~ 9 를 구하는 점이랄까요..; )&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;다시 돌아가서 어쨌든 결과는 &lt;b&gt;9.0&lt;/b&gt; 으로 8.0 보다 크기때문에~&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;msvc9compiler&quot;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 모듈의 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;MSVCCompiler&quot;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 클래스를 사용합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;msvc9compiler&quot; 모듈엔 대략 다음과 같은 코드들이 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/24519B4252D96A4C12&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F24519B4252D96A4C12&quot; width=&quot;500&quot; height=&quot;342&quot; filename=&quot;msvc9compiler_regkey.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;참조할 레지스트리 정보&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2571974652D96AE51C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2571974652D96AE51C&quot; width=&quot;500&quot; height=&quot;602&quot; filename=&quot;msvc9compiler_find_vcvarsall.png&quot; filemime=&quot;image/png&quot; style=&quot;text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; text-align: center; background-color: transparent; font-size: 9pt; line-height: 1.5;;&quot;&gt;vcvarsall.bat 경로 설정&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;드디어 &quot;vcvarsall.bat&quot; 파일 경로를 설정하는 부분을 찾았습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;Visual Studio 설치시 생성되는 레지스트리 정보를 읽어와서 경로를 지정하는군요~&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;[ 키포인트 ]&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;코드를 보면 아시겠지만 &lt;b&gt;&quot;version&quot;&lt;/b&gt; 값에 따라 레지스트리 접근 경로가 달라지는데요...&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;이 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;version&quot;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 값은 앞서 언급한 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;get_build_version()&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 으로 리턴되는 값을 말합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;msvc9compiler&quot; 모듈에도 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;get_build_version()&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 이 있는데~&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;여기서 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;majorVersion&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 연산하는 부분을 살짝 고쳐서 &lt;/span&gt;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;10.0&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 이 리턴되도록 하면~&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;Visual Studio 2010 의 레지스트리를 정상적으로 참고하면서 모듈 빌드도 정상적으로 됩니다~ :)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2121284952D96CC008&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2121284952D96CC008&quot; width=&quot;500&quot; height=&quot;399&quot; filename=&quot;msvc9compiler_get_build_version.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;msvc9compiler.py 의 get_build_version()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;Visual Studio 2012 나 2013 의 경우도 동일한 방식으로 &lt;b&gt;majorVersion&lt;/b&gt; 부분을 고쳐서~&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;11.0, 12.0 이 리턴되도록 하면 해당 버전에 맞게 잘 된답니다...&amp;nbsp;^^;;;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;마무리는 일단 기분좋게 빌드는 완료된 화면으로~ :))&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2502823652D96DB60B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2502823652D96DB60B&quot; width=&quot;500&quot; height=&quot;338&quot; filename=&quot;Python_module_build_success.png&quot; filemime=&quot;image/png&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;majorVersion 수정 후 빌드 성공한 화면&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;ps... 환경변수만 살짝 건드려서 더 간단히 해결할수 있을지도 모른다는건 함정... =_=;;;;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Tip / Tech</category>
      <category>libdasm</category>
      <category>pydasm</category>
      <category>pydasm 빌드</category>
      <category>Python</category>
      <category>Python 2.7</category>
      <category>TIP</category>
      <category>TIP/TECH</category>
      <category>Unable to find vcvarsall.bat</category>
      <category>visual studio 2010</category>
      <category>파이썬</category>
      <category>파이썬 모듈 빌드</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/241</guid>
      <comments>https://iam-hs.com/241#entry241comment</comments>
      <pubDate>Sat, 18 Jan 2014 02:59:43 +0900</pubDate>
    </item>
    <item>
      <title>YARA 2.0 이 나왔었군요.</title>
      <link>https://iam-hs.com/240</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예전에~&amp;nbsp;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;게임 프로세스 메모리 스캔 엔진을 조금 바꿔볼까 싶어서...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이것저것 정보를 모으던 중 알게된 녀석입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그 당시 룰을 직접 만들면서&amp;nbsp;&lt;b style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&quot;오호... 요놈봐라..!?&quot;&lt;/b&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt; 하면서 감탄했던 녀석인데..&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;얼마 전(2013년 12월 26일)에 2.0 이 나왔네요.. @_@ ;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;매칭 알고리즘이 더 빨라졌다고 하는데... 살포시 소스 한번 봐줘야겠네요..ㅎㅎ&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;[ YARA 사이트 ]&lt;/b&gt; -&amp;nbsp;&lt;a href=&quot;http://plusvic.github.io/yara/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://plusvic.github.io/yara/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Etc...</category>
      <category>Malware Searcher</category>
      <category>Pattern matching</category>
      <category>security</category>
      <category>Yara</category>
      <category>YARA 2.0</category>
      <category>악성코드</category>
      <category>패턴매칭</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/240</guid>
      <comments>https://iam-hs.com/240#entry240comment</comments>
      <pubDate>Thu, 16 Jan 2014 21:42:23 +0900</pubDate>
    </item>
    <item>
      <title>[C/C++] Vista 이상의 윈도우 &amp;quot;관리자 권한&amp;quot; 에서 Drag &amp;amp; Drop 처리</title>
      <link>https://iam-hs.com/239</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예~~~전에 지극히 개인적인 편의를 위해&amp;nbsp;만든 인젝터가 하나 있습니다. ㅎㅎㅎ&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이름도 거창한(?) &quot;건담 인젝터&quot; ;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://iam-hs.com/186&quot; target=&quot;_blank&quot;&gt;2011/07/31 - [My Portfolio] - [APP] GInjector (Gundam Injector)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 당시 가장 신경을 썼던 기능이 &lt;b&gt;&quot;Drag &amp;amp; Drop&quot;&lt;/b&gt; 인데요~~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;( 기존의 다른 인젝터들을 쓸 때&amp;nbsp;매번 버튼을 눌러서 인젝션 할 대상파일을 지정하는게 귀찮아져서~&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: transparent; font-size: 9pt; line-height: 1.5;&quot;&gt;Drag &amp;amp; Drop 을 지원하는 걸 그냥 만들자~~ 해서 뚝딱뚝딱 만든거랄까요.. ^^;;;; )&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이때만해도 주로 인젝션 작업을 한&amp;nbsp;OS 가 XP 였기에~ 별다른 불편함없이 잘 썼습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그러다가 이런저런 이유로 몇 달 전부터 주 작업 OS 를 Win7 으로 바꿨는데~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;인젝터를 &lt;b&gt;'관리자 권한으로 실행'&lt;/b&gt; 만 하면~~ 탐색기(낮은 권한 상태)로부터 Drag &amp;amp; Drop 이 안먹히더군요;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Drag &amp;amp; Drop 때문에 만든 인젝터인데 그게 안먹힐 때의 그... 허탈함이란..;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;'수정해야지... 수정해야지...' 생각만 해오다가 불과 2 ~ 3일 전에서야 수정을 했습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;키포인트는 비스타부터 지원되는 &lt;b&gt;&quot;ChangeWindowMessageFilter&quot;&lt;/b&gt; API 인데요~~&lt;/p&gt;&lt;p&gt;( MSDN -&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/ms632675(v=vs.85).aspx&quot; style=&quot;font-size: 9pt; line-height: 1.5;&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/ms632675(v=vs.85).aspx&lt;/a&gt;&amp;nbsp;)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;일반적으로는 권한이 낮은 프로세스에서 권한이 높은 프로세스로 메시지 전달이 안되는데&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;메시지를 받는 프로세스쪽(저의 경우는 인젝터가 되겠죠~)에서&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위의 API 를 이용해서 메시지 필터 설정을 해주면 메시지 전달이 가능하더군요~ :)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Drag &amp;amp; Drop 과 관련된 메시지를 허용하도록 설정하는 코드는 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class=&quot;brush:cpp&quot;&gt;//
// 컴파일러 버전에 따라 &quot;ChangeWindowMessageFilter&quot; 를 바로 쓸 수 없는 경우도 있어서
// 동적으로 구해오는 방식으로 했습니다.
//
#ifndef WM_COPYGLOBALDATA
#define WM_COPYGLOBALDATA 0x0049

#ifndef MSGFLT_ADD
#define MSGFLT_ADD 1

typedef BOOL (WINAPI *pfnChangeWindowMessageFilter)(UINT, DWORD);

.
.
.

HMODULE hUser32Mod = LoadLibrary(&quot;USER32.DLL&quot;);
if (hUser32Mod != NULL) {
    pfnChangeWindowMessageFilter pChangeWindowMessageFilter =
        (pfnChangeWindowMessageFilter)GetProcAddress(hUser32Mod, &quot;ChangeWindowMessageFilter&quot;);

    // XP 이하의 OS 는 해당 API 가 없음. API 가 있는 경우만 실행될 수 있도록 함...
    if (pChangeWindowMessageFilter != NULL) {
        pChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
        pChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
        pChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD);
    }
}
// 이후 필요없는 경우 USER32.DLL 은 언로드~
// if (hUser32Mod) FreeLibrary(hUser32Mod);

&lt;/pre&gt;
&lt;p&gt;덕분에 지금은 Win7 에서 인젝터를&amp;nbsp;&quot;관리자 권한으로 실행&quot; 해도 Drag &amp;amp; Drop 이 잘 동작해서~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;인젝터가 존재의 이유를 다시 찾았습니다... =_=v...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Programming</category>
      <category>C/C++</category>
      <category>ChangeWindowMessageFilter</category>
      <category>Drag &amp;amp; Drop</category>
      <category>Win32 API</category>
      <category>관리자권한</category>
      <category>드래그앤드롭</category>
      <category>프로그래밍</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/239</guid>
      <comments>https://iam-hs.com/239#entry239comment</comments>
      <pubDate>Sun, 12 Jan 2014 23:37:27 +0900</pubDate>
    </item>
    <item>
      <title>PC Hunter V1.32 업데이트</title>
      <link>https://iam-hs.com/238</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;12월 10일자로 PC Hunter V1.32 버전이 업데이트 되었습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;[ PC Hunter 홈페이지 :&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.epoolsoft.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;color: rgb(196, 80, 80); font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;http://www.epoolsoft.com&lt;/a&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://www.xuetr.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;color: rgb(196, 80, 80); font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;http://www.xuetr.com&lt;/a&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;&amp;nbsp;]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/25047E4152A939C12E&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;PCHunter_free.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: '맑은 고딕', Tahoma; font-size: 13px; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Reverse Engineering/RCE Tools</category>
      <category>anti-rootkit</category>
      <category>PC Hunter</category>
      <category>PC Hunter V1.32</category>
      <category>Reverse Engineering</category>
      <category>rootkit</category>
      <category>XueTr</category>
      <category>XueTr 64bit</category>
      <category>루트킷</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/238</guid>
      <comments>https://iam-hs.com/238#entry238comment</comments>
      <pubDate>Thu, 12 Dec 2013 13:23:14 +0900</pubDate>
    </item>
    <item>
      <title>[Python] PE Rebase :)</title>
      <link>https://iam-hs.com/237</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;저는 회사에서 대부분의 분석 업무를 &quot;윈도우7&quot; 환경에서 진행합니다.&lt;/p&gt;&lt;p&gt;( 단순히 XP 에 비해서 Win7 이 조금 더 손에 익었다는 이유로..;;; )&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;윈도우7 에서 DLL 파일을 분석할 때,&lt;/p&gt;&lt;p&gt;올리디버거로 열고 한 번만 로딩해서 분석이 완료되면 상관없지만...&lt;/p&gt;&lt;p&gt;어떤 파일들은 크래쉬 등의 이유로 여러번 로딩을 해야하는 경우도 간혹 있습니다.&lt;/p&gt;&lt;p&gt;이때 해당 DLL 파일에 DYNAMIC_BASE 옵션이 적용되어 있다면...&lt;/p&gt;&lt;p&gt;심히 피곤해질 수도 있는데요...;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;가령 분석자료를 작성하기 위해 &amp;nbsp;DLL 의 디스어셈블 코드를 캡쳐하면서...&lt;/p&gt;&lt;p&gt;분석을 하고 있는데 크래쉬가 발생해서 DLL 을 다시 로딩했다..;;&lt;/p&gt;&lt;p&gt;이러면 조금전까지 캡쳐해둔 DLL 의 주소와 새로 로딩된 주소가 달라져서...&lt;/p&gt;&lt;p&gt;살포시 멘.붕(까지는 아니려나요..?)이 올 수도 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;어제군요...&lt;/p&gt;&lt;p&gt;게임 해킹툴 DLL 파일 하나를 분석하면서 열심히 코드 복사해가며..&lt;/p&gt;&lt;p&gt;분석자료를 정리하던 중에 크래쉬가 발생한 바람에...;;;&lt;/p&gt;&lt;p&gt;분석자료에 기록된 그 번지에 DLL 이 로딩될 때까지...&amp;nbsp;&lt;/p&gt;&lt;p&gt;DLL 로딩만 수십번하는 뻘짓을 했습니다;;;;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;뻘짓을 하는 도중에 '귀차니즘' 이 스믈스믈 발동되면서...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;tx-quote-tistory&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아!!! DLL 파일의 이미지 베이스를 내가 보던 그 주소로 지정하고...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;DYNAMIC_BASE 옵션을 제거하면 되겠구나~!! @_@&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하는 생각을 하고는 정말 단순하게 이미지 베이스랑 DYNAMIC_BASE 옵션만 수정하고...&lt;/p&gt;&lt;p&gt;다시 DLL 을 로딩하려는데... 이게 왠걸..? 일부 코드가 희안하게 깨져서 나오더군요..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이미지 베이스 값만 바뀌었을뿐&amp;nbsp;재배치 정보들은 여전히 이전&amp;nbsp;베이스 주소를&amp;nbsp;기준으로 되어 있어서...&lt;/p&gt;&lt;p&gt;문제가 된거였습니다...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;결국 재배치 정보들도 새로운 이미지 베이스 값에 맞게 바꿔줘야겠구나 싶어서...&lt;/p&gt;&lt;p&gt;머리를 한참 굴리다가 파이썬으로 만들어 봤습니다..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre class=&quot;brush:python&quot;&gt;# PE Rebase tool

import sys
import pefile

IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x40

def main():
	if len(sys.argv) != 3:
		print &quot;# [ PE Rebase Tool ] #\n&quot;
		print &quot;Usage : rebase.py [Target PE File] [New Base Address]&quot;

	else:
		pe = pefile.PE(sys.argv[1])
		curBaseAddr = pe.OPTIONAL_HEADER.ImageBase;
		newBaseAddr = int(sys.argv[2], 0)

		print &quot;# Target File : &quot; + sys.argv[1]
		print &quot;# Current Base Address : 0x%X&quot; % (curBaseAddr)
		print &quot;#  -&amp;gt; New Base Address : 0x%X&quot; % (newBaseAddr)

		# ImageBase 
		pe.OPTIONAL_HEADER.ImageBase = newBaseAddr

		# DLL Characteristics : IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE off
		pe.OPTIONAL_HEADER.DllCharacteristics = pe.OPTIONAL_HEADER.DllCharacteristics &amp;amp; ~IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE

		# Relocation Information
		pe.parse_data_directories()

		for relocTbl in pe.DIRECTORY_ENTRY_BASERELOC:
			print &quot;-----------------------------------------------------------------------&quot;
			print &quot;@ RVA : %X, (Size : %X)&quot; % (relocTbl.struct.VirtualAddress, relocTbl.struct.SizeOfBlock)
			print &quot;-----------------------------------------------------------------------&quot;
			reloc = relocTbl.entries
			for idx in reloc:
				reloc_offset = idx.rva - idx.base_rva
				if reloc_offset != 0:
					curAddr = pe.get_dword_at_rva(idx.rva)
					newAddr = curAddr - curBaseAddr + newBaseAddr
					print &quot;[0x%X] : %X ==&amp;gt; %X&quot; % (idx.rva, curAddr, newAddr)
					pe.set_dword_at_rva(idx.rva, newAddr)

		pe.write(filename = sys.argv[1] + &quot;.patched&quot;)

if __name__ == &quot;__main__&quot;:
	sys.exit(main())
&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이번에 파이썬을 처음 건드려본건데...&lt;/p&gt;&lt;p&gt;제대로 알고 활용만 잘하면 정말 편하겠구나~~ @_@ 하는 생각이 확~~ 들더군요 ㅎㅎㅎㅎ&lt;/p&gt;&lt;p&gt;본격적으로 파이썬도 익혀봐야겠습니다... :))&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ps...&amp;nbsp;&lt;/p&gt;&lt;p&gt;잘모르는 파이썬 문법 익혀가며 시간 투자해서 스크립트 다 짰는데..;;;&lt;/p&gt;&lt;p&gt;editbin 툴이 있었다는걸 뒤늦게 떠올린게&amp;nbsp;함정...ㅠㅠ...&lt;/p&gt;&lt;p&gt;하아... =3=3=3&lt;/p&gt;</description>
      <category>Reverse Engineering</category>
      <category>PE Rebase</category>
      <category>pefile</category>
      <category>Python</category>
      <category>Reverse Engineering</category>
      <category>리버스엔지니어링</category>
      <category>파이썬</category>
      <author>XeroNic(HS)</author>
      <guid isPermaLink="true">https://iam-hs.com/237</guid>
      <comments>https://iam-hs.com/237#entry237comment</comments>
      <pubDate>Fri, 6 Dec 2013 22:58:52 +0900</pubDate>
    </item>
  </channel>
</rss>