<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title type="text">리버싱 강좌</title>
      <updated>2012-02-09T15:55:38+09:00</updated>
   <id>http://www.coolsoft2.com/reversing/atom</id>
   <link rel="alternate" type="text/html" hreflang="ko" href="http://www.coolsoft2.com/reversing"/>
   <link rel="self" type="application/atom+xml" href="http://www.coolsoft2.com/reversing/atom"/>
   <generator uri="http://www.xpressengine.com/" version="1.5.1.6">XpressEngine</generator>
   <entry>
      <title>Themida로 패킹된프로그램 언패킹할때 올리 디버그 툴 옵션설명</title>
      <id>http://www.coolsoft2.com/936005</id>
      <published>2012-02-01T07:47:19+09:00</published>
      <updated>2012-02-06T11:28:21+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/936005"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/936005#comment"/>
      <author>
         <name>봄나비</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;1.Advanced Anti-Debugger&lt;/p&gt;
&lt;p&gt;이 기능은 올리디버그 같은 디버킹툴을 패커에서 감시해서 뜨면 바로 프로그램종료나 메세지를 띄우는 옵션입니다. 기본옵션중 한개입니다.&lt;/p&gt;
&lt;p&gt;2.Anti Dumper&lt;/p&gt;
&lt;p&gt;이 기능은 언팩을 시도할시 중요한 OEP, 그 주변부분을 손실을 시켜놓거나 Add Section기법으로 언팩을 해야만 가능하게 하는옵션입니다.&lt;/p&gt;
&lt;p&gt;3.Entry Point Obfuscation&lt;/p&gt;
&lt;p&gt;이 기능은 OEP코드를 읽기 어렵게 함을 통해 역공학(reverse engineering)을 통한 공격을 막기 위한 목적을 가지고 있습니다.&lt;/p&gt;
&lt;p&gt;4.Resources Encryption&lt;/p&gt;
&lt;p&gt;리소스를 암호화시키는 기능입니다.(효율이 떨어지는 옵션입니다.) 기본옵션중 한개입니다.&lt;/p&gt;
&lt;p&gt;5.VMWare/Virtual PC&lt;/p&gt;
&lt;p&gt;이 기능은 VMWare와 Virtual PC은 윈도우나 리눅스 안에 또 하나의 OS를 설치할수 있게하는 즉, 가상머신이라고 하죠. 저 프로그램을 사용해서 OS켯을때도 중복실행이 가능하게 하는 옵션입니다. 기본옵션중 한개입니다.&lt;/p&gt;
&lt;p&gt;6.Advanced API-Wrapping&lt;/p&gt;
&lt;p&gt;이 기능은 간단히 말하면 언팩할때 IAT복구를 필요하게 하는 옵션입니다. 즉 패커자체에서 자신이 따로 Section을 만들어 그쪽으로 전부 함수를 옮겨서 언팩할시에는 따로 복구하도록 만들게 하는것이죠. 상당히 짜증나는 옵션중 한개입니다.&lt;/p&gt;
&lt;p&gt;7.Virtual Machine Emulation&lt;/p&gt;
&lt;p&gt;이 기능은 아까 5번에서 언급했듯이 가상머신에 관련된 옵션입니다.&lt;br /&gt;이 옵션은 가상머신에서도 실행이 가능하게 하는 옵션입니다.기본옵션중 한개입니다.&lt;/p&gt;
&lt;p&gt;8.Metamorph Security&lt;/p&gt;
&lt;p&gt;이 기능은 파일이 강제로 변형되는것을 보호하는 옵션입니다.&lt;br /&gt;기본옵션중 한개입니다.&lt;/p&gt;
&lt;p&gt;9.Memory Guard&lt;/p&gt;
&lt;p&gt;이 기능은 레지스터를 보호하는것이죠. 수정시 메세지나 강제 종료됩니다. 이것은 기본옵션인지는 잘모르겠네요.&lt;/p&gt;
&lt;p&gt;10.Delphi/BCB Form Protection&lt;/p&gt;
&lt;p&gt;이 기능은 말 그대로 Delphi/BCB로 짜여진 프로그램의 Form을 보호하는것입니다. 기본옵션중 한개입니다.&lt;/p&gt;
&lt;p&gt;이 외에 2개가 더 있는데 불필요하다고 생각하기에 생략하겠습니다.&lt;/p&gt;
&lt;p&gt;그리고 Advanced Option입니다.&lt;/p&gt;
&lt;p&gt;1.Encrypt Application&lt;/p&gt;
&lt;p&gt;이 기능은 응용프로그램을 암호화시키는것인데, 제 생각으로는 더 심화적으로 패킹시키는것 같습니다.&lt;/p&gt;
&lt;p&gt;2.Protect as DLL Plugin&lt;/p&gt;
&lt;p&gt;이 기능은 DLL을 패킹할때 필요한 옵션인것 같네요.&lt;/p&gt;
&lt;p&gt;3..Net assemblies&lt;/p&gt;
&lt;p&gt;이 기능은 안그래도 뜯기 힘든 닷넷으로 짜여진 프로그램을 더욱 더 심화적으로 암호화시키는 옵션입니다.&lt;/p&gt;
&lt;p&gt;4.Last Section Name&lt;/p&gt;
&lt;p&gt;이 기능은 패킹시 Section이름을 넣는것입니다.&lt;/p&gt;
&lt;p&gt;쓸모없는 기능 1개가 더 있는데 그것은 넘기겠습니다.&lt;/p&gt;
&lt;p&gt;그 외에 Themida는 띄우는메세지에 대해 내용도 바꿀수 있고 기능이 참 많더군요.&lt;/p&gt;
&lt;p&gt;아무튼 Themida에는 이렇게 많은 옵션이 있습니다.&lt;/p&gt;
&lt;p&gt;제가 이때까지본 패커중에서는 가능많은 옵션을 가진 패커인듯합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예전에 올라 왔던 자료인데 초보들님께 필요할것 같아서 다시 올립니다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>패킹된 프로그램 확인 하는방법과 확인후 언패킹 하는방법좀 알려주세여</title>
      <id>http://www.coolsoft2.com/934620</id>
      <published>2012-01-29T00:37:20+09:00</published>
      <updated>2012-02-01T18:18:55+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/934620"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/934620#comment"/>
      <author>
         <name>이창호랑이</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;안녕하세요 올리디버거로 함수값을 수정하려고 하는데 &lt;/p&gt;
&lt;p&gt;패킹 되어서 함수 값이 파일이 열리지 않더라구요 &lt;/p&gt;
&lt;p&gt;제가 아직 정확히 몰라서 peid 라는 프로그램으로 패킹 되어 있는지 확인하려고 봤떠니 &lt;/p&gt;
&lt;p&gt;not pound 라고 뜨면서 확인이 되지 않더라구요 &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;/p&gt;
&lt;p&gt;고수님들 도와주세여&lt;/p&gt;
&lt;p&gt;제가 언패킹 하려고 하는 파일 올려 놓을테니 자문좀 부탁드립니다.&lt;/p&gt;
&lt;p&gt;언패킹 하는 방법 자세히 알려주실분 010 5047 3566 으로 연락좀 주세요 ㅠㅠ&lt;/p&gt;
&lt;p&gt;아니면 글로 자세히 설명좀 해주세여&lt;/p&gt;
&lt;p&gt;파일올려 놓을께여&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>도전해보세요 크랙미 1번</title>
      <id>http://www.coolsoft2.com/932897</id>
      <published>2012-01-26T00:33:06+09:00</published>
      <updated>2012-01-27T19:17:27+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/932897"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/932897#comment"/>
      <author>
         <name>gunny</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;CLEAR: both; TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;http://cfile29.uf.tistory.com/image/11757F3E4F201C7C2189AD&quot; alt=&quot;11757F3E4F201C7C2189AD&quot; width=&quot;424&quot; height=&quot;155&quot; style=&quot;&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;자작 크랙미 1&amp;nbsp;입니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;난이도 중하?&lt;br /&gt;안티디버깅 X&lt;br /&gt;패킹&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; O&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;CLEAR: both; TEXT-ALIGN: center&quot;&gt;&lt;a href=&quot;http://seestory.tistory.com/attachment/cfile26.uf@1108FC384F2124C8288999.exe&quot;&gt;&lt;img src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/exe.gif&quot; alt=&quot;exe.gif&quot; style=&quot;VERTICAL-ALIGN: middle&quot; /&gt; crake11.exe&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;br /&gt;&lt;span id=&quot;callbacknestseestorytistorycom421061&quot; style=&quot;FLOAT: right; WIDTH: 1px; HEIGHT: 1px&quot;&gt;&lt;/span&gt;&lt;br /&gt;패킹이 되있어서 쪼~끔 어려울수도 있습니다&lt;br /&gt;그래서 노패킹 버전도 같이 올립니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;CLEAR: both; TEXT-ALIGN: center&quot;&gt;&lt;a href=&quot;http://seestory.tistory.com/attachment/cfile4.uf@155E4F334F2124ED2D0ACA.exe&quot;&gt;&lt;img src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/exe.gif&quot; alt=&quot;exe.gif&quot; style=&quot;VERTICAL-ALIGN: middle&quot; /&gt; no_crake11.exe&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;strong&gt;혹시 위의 다운링크가 잘못되었으면 &lt;/strong&gt;&lt;a href=&quot;http://seestory.tistory.com/42&quot;&gt;&lt;em&gt;&lt;span style=&quot;FONT-SIZE: 12px; COLOR: #3a32c3; FONT-FAMILY: arial&quot;&gt;&lt;strong&gt;http://seestory.tistory.com/42&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;strong&gt;&amp;nbsp;링크에서 받아보세요&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;exe올리기전에 바이러스 검사&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;CLEAR: both; TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;http://cfile10.uf.tistory.com/image/201010454F201F0117465D&quot; alt=&quot;201010454F201F0117465D&quot; width=&quot;565&quot; height=&quot;427&quot; style=&quot;&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;자 당신의 실력을 보여주세요&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;MARGIN: 0px&quot;&gt;&lt;br /&gt;&lt;br /&gt;(답은 비밀댓글로....)&lt;br /&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;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>Duelist CrackMe 1번 ver.SelfKeyGen</title>
      <id>http://www.coolsoft2.com/929151</id>
      <published>2012-01-17T10:51:16+09:00</published>
      <updated>2012-02-01T10:08:28+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/929151"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/929151#comment"/>
      <author>
         <name>포도과즙</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;키젠은 기존 키생성 루틴을 이용하여 새롭게 만드는것이 일반적이다.&lt;/div&gt;&lt;div&gt;But, 이미 존재하는 키생성루틴을 이용하면 귀찮은 과정(프로그래밍)을 벗어나 좀더 쉽게 이용할 수 있다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://coolsoft2.com/?module=file&amp;amp;act=procFileDownload&amp;amp;file_srl=929163&amp;amp;sid=9d5ff4017a4700ebd6aee87ebfc07c51&quot;&gt;Duelist Crackme1번&lt;/a&gt;&amp;nbsp;문제를 이용해 설명하도록 한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/9c8b92e822d83566c11a843e10c2c99b.JPG&quot; alt=&quot;1.JPG&quot; width=&quot;568&quot; height=&quot;47&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;함수 GetDlgItemTextA는 Dialog Box에 존재하는 Edit Box에 기록된 문자열을 읽어들이는 역할을 한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Push 24(36) :: Hex(Dec)&lt;/div&gt;&lt;div&gt;최대 36자까지 읽어온다.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/73dfa84ca5701263f736e2e2311da4e2.JPG&quot; alt=&quot;2.JPG&quot; width=&quot;397&quot; height=&quot;12&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;XOR 연산을 통해 EAX값은 0이 되었다.(eax초기화)&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/7aeb64fcbbb6dd76dc773d4fa09d2121.JPG&quot; alt=&quot;3.JPG&quot; width=&quot;359&quot; height=&quot;65&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;버퍼값이 0인지 확인하며 0이아니라면 1씩 증가시켜 다시 검사를 한다.&lt;/div&gt;&lt;div&gt;(문자열의 마지막인지 확인하는 작업)&lt;/div&gt;&lt;div&gt;만약 0이라면 분기를 통하여 다음 작업으로 넘어갈 것이다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;문자가 들어있다면 하위의 코드를 실행하게 되어있는데&lt;/div&gt;&lt;div&gt;이 코드가 키를 생성하는 코드이다.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/7aeb64fcbbb6dd76dc773d4fa09d2121_1.JPG&quot; alt=&quot;4.JPG&quot; width=&quot;340&quot; height=&quot;104&quot; style=&quot;&quot; /&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/06b5415d00bfdb535a9b4d82eddf2fdc.JPG&quot; alt=&quot;4-1.JPG&quot; width=&quot;254&quot; height=&quot;14&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;실제로 문자열을 넣고 입력해보았다.&lt;/div&gt;&lt;div&gt;XOR을 하는 주소에는 분명 입력한 값이 들어있었다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;입력한 값을 3번 XOR하여 키를 생성하는 것이다.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/151061a626ada5f2a4c2d558a1b3ddb6.JPG&quot; alt=&quot;5.JPG&quot; width=&quot;589&quot; height=&quot;228&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;3가지의 메세지박스가 존재하는데,&lt;/div&gt;&lt;div&gt;문자열이 끝나고나면 CMP EAX,0으로 비교를 하여 문자열이 입력되었는가를 판별한다.&lt;/div&gt;&lt;div&gt;문자열이 입력되지 않았다면 첫번째 메세지박스를 출력한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;첫번째 메세지박스이래에 존재하는 함수는 문자를 비교하여 참,거짓을 판별하는 함수이다.&lt;/div&gt;&lt;div&gt;따라서, 이 함수에 의해 이후 어떤 메세지박스를 출력할지 결정하게 된다.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;------------------------------------------------------------------------------------&lt;/div&gt;&lt;div&gt;&lt;div&gt;키젠만들기&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;유저가 입력한 키값을 XOR로 암호화 하여 비교하여 참,거짓의 여부를 정한다&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;-&amp;gt; 즉, 원문은 이미 XOR로 암호화 되어있다.&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;-&amp;gt;복호화 할 수 있다.&lt;/div&gt;&lt;div&gt;XOR의 암호는 한번더 XOR를 거치면 복호화가 가능하다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;유저에게 보여지는 인터페이스가 필요하다.&lt;/div&gt;&lt;div&gt;오류문이 출력되는 부분을 이용할 수 있다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;원본&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/a2f385bf8f48d82580ad288c1b5cfb30.JPG&quot; alt=&quot;6.JPG&quot; width=&quot;432&quot; height=&quot;64&quot; style=&quot;&quot; /&gt;
&lt;/div&gt;&lt;div&gt;수정후&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/9a5e83ae247e1da5281d01d681d9b91e.JPG&quot; alt=&quot;6-1.JPG&quot; width=&quot;430&quot; height=&quot;46&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;문자열이 끝났는가의 여부&lt;/div&gt;&lt;div&gt;XOR의 부분을 수정해줄 필요가 있다.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;출력부분에 나타나게 해준다.&lt;/div&gt;&lt;div&gt;원본&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/20faf7a434a86a85f6a46c6e041596c9.JPG&quot; alt=&quot;7.JPG&quot; width=&quot;562&quot; height=&quot;50&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;수정후&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/b0651889bdca39ad8ad9fbc38e9363b3.JPG&quot; alt=&quot;7-1.JPG&quot; width=&quot;568&quot; height=&quot;66&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;http://coolsoft2.com/files/attach/images/897047/151/929/f3e9965a39578d1a23814b473a16b37f.JPG&quot; alt=&quot;8.JPG&quot; width=&quot;260&quot; height=&quot;155&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;에러메세지대신 키값이 나타나게 된다.&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>HAVU&apos;s CRACK ME 2</title>
      <id>http://www.coolsoft2.com/913218</id>
      <published>2011-12-18T22:34:24+09:00</published>
      <updated>2012-01-29T20:55:02+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/913218"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/913218#comment"/>
      <author>
         <name>HAVU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div class=&quot;preview &quot; id=&quot;preview_uploaded_1&quot;&gt;&lt;img style=&quot;width: 538px; height: 338px;&quot; src=&quot;http://www.coolsoft2.com/files/attach/images/897047/218/913/bf213f81d5a03bb897313adc0588f6de.JPG&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이번 크랙미는 약간의 난이도가 있습니다.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;**댓글에 정답은 쓰지 말아주세요ㅠㅠ**&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>HAVU&apos;s CRACK ME 1</title>
      <id>http://www.coolsoft2.com/913201</id>
      <published>2011-12-18T22:31:46+09:00</published>
      <updated>2011-12-18T22:31:50+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/913201"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/913201#comment"/>
      <author>
         <name>HAVU</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;img src=&quot;data:image/png;base64,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&quot; alt=&quot;&quot; /&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;p&gt;**댓글에 정답은 쓰지 말아주세요ㅠㅠ**&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>얜 어떻게 리버싱을 해야 할까? -2-</title>
      <id>http://www.coolsoft2.com/900930</id>
      <published>2011-11-05T08:18:12+09:00</published>
      <updated>2012-01-29T20:56:19+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/900930"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/900930#comment"/>
      <author>
         <name>쿨러</name>
                  <uri>http://hajunho.net</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;댓글로 해답을 찾아보자 2탄입니다. 우선 1탄 자료화면은&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;img src=&quot;http://coolsoft.kr/files/attach/images/897047/930/900/deff39890c6e9d448d8e8db554d8352a.jpg&quot; alt=&quot;1.jpg&quot; width=&quot;1382&quot; height=&quot;744&quot; style=&quot;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;구용. 올리디버거의 intermodules calls와 함수들을 좀 알아야 했습니다. 중요한건 자신의 프로그램 영역을 벗어나지 않고(다른 import 함수나 시스템 dll내부) 자기 프로그램안에 브레이크가 걸리도록 해야 한다는 것이죠. 물론 다른 함수들을 타고 찾아 들어가서 다 분석하면 좋겠지만 ^^; 자리를 찾은 다음에는 Name 입력 후 __vbaVarCmpNe 함수가 호출되었을 때 Stack에서 파라미터로 넘어온 Serial을 확인하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;다음 문제 나갑니다.&amp;nbsp;어떻게 풀어야 할까요? &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>얜 어떻게 리버싱을 해야 할까?</title>
      <id>http://www.coolsoft2.com/900889</id>
      <published>2011-11-05T00:53:29+09:00</published>
      <updated>2012-02-01T06:36:44+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/900889"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/900889#comment"/>
      <author>
         <name>쿨러</name>
                  <uri>http://hajunho.net</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;댓글로 답을 찾아보자 1탄 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;흠... 궁금점이 생겼습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;얜 팝업도 없고 문구를 찾아도 특이점이 없는데...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;고쳐야 할 곳을 어떻게 찾아야 할까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ㅠㅠ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;-----&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;FONT-FAMILY: &apos;맑은 고딕&apos;; FONT-SIZE: 10pt; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: &apos;Times New Roman&apos;; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: KO; mso-bidi-language: AR-SA&quot; lang=&quot;EN-US&quot;&gt;&lt;?xml:namespace prefix = v ns = &quot;urn:schemas-microsoft-com:vml&quot; /&gt;&lt;v:shapetype id=_x0000_t75 stroked=&quot;f&quot; filled=&quot;f&quot; path=&quot;m@4@5l@4@11@9@11@9@5xe&quot; o:preferrelative=&quot;t&quot; o:spt=&quot;75&quot; coordsize=&quot;21600,21600&quot;&gt;&amp;nbsp;&lt;v:stroke joinstyle=&quot;miter&quot;&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn=&quot;if lineDrawn pixelLineWidth 0&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;sum @0 1 0&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;sum 0 0 @1&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;prod @2 1 2&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;prod @3 21600 pixelWidth&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;prod @3 21600 pixelHeight&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;sum @0 0 1&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;prod @6 1 2&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;prod @7 21600 pixelWidth&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;sum @8 21600 0&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;prod @7 21600 pixelHeight&quot;&gt;&lt;/v:f&gt;&lt;v:f eqn=&quot;sum @10 21600 0&quot;&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype=&quot;rect&quot; gradientshapeok=&quot;t&quot; o:extrusionok=&quot;f&quot;&gt;&lt;/v:path&gt;&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:lock aspectratio=&quot;t&quot; v:ext=&quot;edit&quot;&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v style=&quot;WIDTH: 861pt; HEIGHT: 463.5pt&quot; id=&quot;_x0000_i1025&quot; type=&quot;#_x0000_t75&quot;&gt;&lt;v o:title=&quot;K-3&quot; src=&quot;file:///C:\Users\joe\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg&quot;&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>DLL을 이용한 함수 후킹 기법</title>
      <id>http://www.coolsoft2.com/899770</id>
      <published>2010-01-11T04:04:27+09:00</published>
      <updated>2012-02-06T13:55:32+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/899770"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/899770#comment"/>
      <author>
         <name>진혼이중주</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;게시판에 글을 바로 쓰려니까... &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;내용이 많고 예제랑 소스폴더까지... &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;같이 합치다보니 그냥 PDF파일로 제작해서... &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;같이 올려봅니다. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;참고로 글쓴이 Saber라고 써져 있는데 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;그 Saber는 저의 또다른 닉네임입니다 -ㅅ-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DLL을 이용하여 함수후킹의 원리 - &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;콜문이나 점프문에서의 나오는 주소값의 원리등을 실어보았습니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;그리고 그냥 올리디버그로 직접 수정하면 되지 - 뭐하러 이렇게 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;복잡하게 DLL을 이용하느냐 라는 말을 하냐면 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;일단 지금은 간단한 함수라 올리디버그로 수정하면 금방이다.&amp;nbsp; 그러나 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;새로&amp;nbsp; 설정해야 할 함수의 내용이 많다면... ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;어셈블리코딩과 C언어 코딩의 차이점은 많이 있지만 코드의 양도 있다는 것이다. - &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;그에따라 .. 만약에 함수의 내용은 변경된점은 없는데&amp;nbsp; 다른 부분이 수정되서 빌드되어서 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;나온다면!? 아마도 올리디버그로&amp;nbsp; 주소값들을 다시 찾아서 처음부터&amp;nbsp;코딩해줘야 할것이다.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;하지만 이러한 DLL기법을 쓴다면&amp;nbsp; 단순히 DLL을 후킹해서 연결시켜주고. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;바껴진 주소값만 변경시켜줘서 다시 컴파일 하면?&amp;nbsp; OK~!! 라는 것이다. &lt;/P&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>S/W 테스트 분류(화이트박스 테스팅, 블랙박스 테스팅)</title>
      <id>http://www.coolsoft2.com/899753</id>
      <published>2009-11-20T12:46:11+09:00</published>
      <updated>2011-12-16T14:09:07+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/899753"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/899753#comment"/>
      <author>
         <name>Ezbeat</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;font-weight: bold;&quot; class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-size: 14px;&quot; lang=&quot;EN-US&quot;&gt;S/W 테스트 분류&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;br  /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold;&quot; class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕; color: rgb(58, 50, 195);&quot;&gt;블랙박스 테스팅 : 소스코드가 없는 경우&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold;&quot; class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕; color: rgb(58, 50, 195);&quot;&gt;화이트박스 테스팅 : 소스코드가 있는 경우&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;br  /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;예를 들어서 개발자가 소프트웨어를 하나 만들었다고 합시다 ^^&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;&lt;img src=&quot;http://www.coolsoft2.com/files/attach/images/897047/753/899/f9e36ad82e72cc38fd5d1c7bc23c865c.jpg&quot; alt=&quot;11.jpg&quot; style=&quot;width: 694px; height: 403px;&quot; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;아주 간단한 패스워드 인증 프로그램입니다 -_-;; 그림은 넣어야겠는데 딱히 넣을게 없어서 넣어봤습니다..;;&lt;br  /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;만약 개발자가 3년이 지난 후 이 프로그램이 어떻게 돌아가는지 본다면 어찌해야 할까요?? 이미 소스 코드가 존재하므로 소스코드를 보면서 로직의 흐름을 확인해 보겠죠??&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;br  /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;위와 같은 경우는 화이트박스 테스팅 일까요? 블랙박스 테스팅 일까요? 당연히 소스코드를 가지고 있고 소스코드를 토대로 로직의 흐름을 점검해 보므로 &lt;span style=&quot;font-weight: bold;&quot;&gt;화이트박스 테스팅&lt;/span&gt;이 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;br  /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;그러면 여기서 문제입니다~!&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;집에서 띵가띵가 놀고있던 Ezbeat이 해당 프로그램을 보고 분석을 해보기위해 디버거로 &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;프로그램을 테스팅 해보기 시작합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;당연히 소스는 모르겠죠??^^&lt;br  /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;이 때 Ezbeat이 해보는 테스팅은 &lt;span style=&quot;font-weight: bold;&quot;&gt;블랙박스 테스팅&lt;/span&gt; 일까요?? &lt;span style=&quot;font-weight: bold;&quot;&gt;화이트박스 테스팅&lt;/span&gt; 일까요??&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;br  /&gt;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;정답은 일요일 쯤에 올려드리겠습니다. 나름대로 유추에서 댓글로 달아주세요~ ^^&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;(공부하다가 나온 용어라 모르시는 분들을 위해 재미나게 꾸며보기위해 문제 아닌 문제로 만들어보았습니다)&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;=========================&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;&lt;!--StartFragment--&gt;정답은 &lt;strong&gt;화이트박스 테스팅&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;소스코드 없이 테스팅 되기 때문에 블랙박스 테스팅이라고 많이들 생각 하셨겠지만, 제품을 역어셈블하여 어셈블리코드를 보면서 제품의 흐름을 테스팅 하므로 &lt;strong&gt;화이트박스 테스팅&lt;/strong&gt;입니다.&lt;/p&gt;
&lt;p class=&quot;바탕글&quot;&gt;결국 어셈블리도 소스코드이기 때문이죠?? ^^ 저도 처음에 이 문제를 들었을 때 블랙박스 테스팅이라고 생각했지만..아니었습니다~!&lt;/p&gt;&lt;span style=&quot;font-family: 바탕;&quot;&gt;&lt;/span&gt;
&lt;p class=&quot;바탕글&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>오목프로그램(못둘것이 없다)</title>
      <id>http://www.coolsoft2.com/899746</id>
      <published>2009-11-16T11:35:35+09:00</published>
      <updated>2012-02-03T16:44:09+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/899746"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/899746#comment"/>
      <author>
         <name>Pdmin</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;안녕하세요 눈팅Pdm1n입니다. &lt;/p&gt;
&lt;p&gt;눈팅벗어날려고 열심히 글씁니다.-_-ㅋ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오목프로그램 ...&lt;br  /&gt;&lt;br  /&gt;상황: 오목판 다른곳을 클릭하면 &quot;바둑판을 벗어났습니다&quot; 문자열 출력&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br  /&gt;그럼 생각해볼수있음&lt;br  /&gt;if(x &amp;lt; 0 ||&amp;nbsp;x &amp;gt; BOARD_x-1 ||&amp;nbsp;y &amp;lt; 0 ||&amp;nbsp;y &amp;gt; BOARD_t-1 )&lt;br  /&gt;{&lt;br  /&gt;&lt;/p&gt;
&lt;div style=&quot;MARGIN-LEFT: 4em&quot;&gt;push 바둑판 벗어남 &quot;바둑판을 벗어났습니다.&quot;&lt;br  /&gt;&lt;/div&gt;
&lt;div&gt;}&lt;br  /&gt;안벗어났으므로 아래루틴&lt;br  /&gt;if (바둑알이 없는지확인)&lt;br  /&gt;{&lt;br  /&gt;&lt;br  /&gt;없으면 바둑알놓는다&lt;br  /&gt;}&lt;br  /&gt;else&lt;br  /&gt;{&lt;br  /&gt;놓지않는다 &lt;br  /&gt;}&lt;br  /&gt;&lt;br  /&gt;문자열 추적&lt;br  /&gt;004036E9&amp;nbsp; |&amp;gt; 51&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH ECX&lt;br  /&gt;004036EA&amp;nbsp; |.&amp;nbsp; 8BCC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV ECX,ESP&lt;br  /&gt;004036EC&amp;nbsp; |.&amp;nbsp; 896424 30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV DWORD PTR SS:[ESP+30],ESP&lt;br  /&gt;004036F0&amp;nbsp; |.&amp;nbsp; 68 14924000&amp;nbsp;&amp;nbsp; PUSH EJEOmok.00409214&lt;br  /&gt;004036F5&amp;nbsp; |.&amp;nbsp; E8 982B0000&amp;nbsp;&amp;nbsp; CALL &amp;lt;JMP.&amp;amp;MFC42.#537&amp;gt;&lt;/div&gt;
&lt;div&gt;&lt;br  /&gt;offset 4036F0의 push 00409214를 덤프해보면 바둑판을 벗어났습니다. 문자열 확인&lt;br  /&gt;&lt;br  /&gt;그럼 004036E9로 내려온곳을 올라가면 안벗어난 루틴 발견가능성있음 올라가봄&lt;br  /&gt;004036E9&amp;nbsp; |&amp;gt; 51&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH ECX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //참조:Jumps from 004034B9, 004034C2, 004034CA, 004034D3&lt;br  /&gt;004036EA&amp;nbsp; |.&amp;nbsp; 8BCC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV ECX,ESP&lt;br  /&gt;004036EC&amp;nbsp; |.&amp;nbsp; 896424 30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV DWORD PTR SS:[ESP+30],ESP&lt;br  /&gt;004036F0&amp;nbsp; |.&amp;nbsp; 68 14924000&amp;nbsp;&amp;nbsp; PUSH EJEOmok.00409214&lt;br  /&gt;004036F5&amp;nbsp; |.&amp;nbsp; E8 982B0000&amp;nbsp;&amp;nbsp; CALL &amp;lt;JMP.&amp;amp;MFC42.#537&amp;gt;&lt;/div&gt;
&lt;div&gt;&lt;br  /&gt;올라갈곳은 Jumps from 004034B9, 004034C2, 004034CA, 004034D3 4군대 즉 &lt;br  /&gt;if(x &amp;lt; 0 ||&amp;nbsp;x &amp;gt; 보더_x-1 ||&amp;nbsp;y &amp;lt; 0 ||&amp;nbsp;y &amp;gt; 보더_y-1 )&lt;br  /&gt;&lt;br  /&gt;이부분을 생각해볼수있음&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;004034B7&amp;nbsp; |.&amp;nbsp; 85C9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST ECX,ECX&lt;br  /&gt;004034B9&amp;nbsp; |.&amp;nbsp; 0F8C 2A020000 JL EJEOmok.004036E9&lt;br  /&gt;004034BF&amp;nbsp; |.&amp;nbsp; 83F9 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP ECX,12&lt;br  /&gt;004034C2&amp;nbsp; |.&amp;nbsp; 0F8F 21020000 JG EJEOmok.004036E9&lt;br  /&gt;004034C8&amp;nbsp; |.&amp;nbsp; 85D2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST EDX,EDX&lt;br  /&gt;004034CA&amp;nbsp; |.&amp;nbsp; 0F8C 19020000 JL EJEOmok.004036E9&lt;br  /&gt;004034D0&amp;nbsp; |.&amp;nbsp; 83FA 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP EDX,12&lt;br  /&gt;004034D3&amp;nbsp; |.&amp;nbsp; 0F8F 10020000 JG EJEOmok.004036E9&lt;/div&gt;
&lt;div&gt;올라가면 이런 루틴이 존재...&amp;nbsp; 이조건의 만족하면 아래 루틴으로 흐름&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;004034D9&amp;nbsp; |.&amp;nbsp; 8D04C9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA EAX,DWORD PTR DS:[ECX+ECX*8]&lt;br  /&gt;004034DC&amp;nbsp; |.&amp;nbsp; 8D1C0A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA EBX,DWORD PTR DS:[EDX+ECX]&lt;br  /&gt;004034DF&amp;nbsp; |.&amp;nbsp; 8D0443&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA EAX,DWORD PTR DS:[EBX+EAX*2]&lt;br  /&gt;004034E2&amp;nbsp; |.&amp;nbsp; 8B9C86 C80400&amp;gt;MOV EBX,DWORD PTR DS:[ESI+EAX*4+4C8]&lt;br  /&gt;004034E9&amp;nbsp; |.&amp;nbsp; 85DB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST EBX,EBX&lt;br  /&gt;004034EB&amp;nbsp; |.&amp;nbsp; 8D8486 C80400&amp;gt;LEA EAX,DWORD PTR DS:[ESI+EAX*4+4C8]&lt;br  /&gt;004034F2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0F85 D3010000 JNZ EJEOmok.004036CB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; 빈돌인지 확인 하는 루틴임&lt;br  /&gt;&lt;br  /&gt;1.바둑판 안인지확인&lt;br  /&gt;2.바둑판 안에 마우스위치의 돌이있는지확인&lt;br  /&gt;3.돌이없으면 돌을놓음&lt;br  /&gt;&lt;br  /&gt;1.바둑판 안인지확인,&lt;br  /&gt;-----------------------------------------------&lt;br  /&gt;004034B7&amp;nbsp; |.&amp;nbsp; 85C9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST ECX,ECX&lt;br  /&gt;004034B9&amp;nbsp; |.&amp;nbsp; 0F8C 2A020000 JL EJEOmok.004036E9&amp;nbsp; //바둑판을 벗어났다는 내용 루틴&lt;br  /&gt;004034BF&amp;nbsp; |.&amp;nbsp; 83F9 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP ECX,12&lt;br  /&gt;004034C2&amp;nbsp; |.&amp;nbsp; 0F8F 21020000 JG EJEOmok.004036E9//바둑판을 벗어났다는 내용 루틴&lt;br  /&gt;004034C8&amp;nbsp; |.&amp;nbsp; 85D2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST EDX,EDX&lt;br  /&gt;004034CA&amp;nbsp; |.&amp;nbsp; 0F8C 19020000 JL EJEOmok.004036E9//바둑판을 벗어났다는 내용 루틴&lt;br  /&gt;004034D0&amp;nbsp; |.&amp;nbsp; 83FA 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP EDX,12&lt;br  /&gt;004034D3&amp;nbsp; |.&amp;nbsp; 0F8F 10020000 JG EJEOmok.004036E9//바둑판을 벗어났다는 내용 루틴&lt;br  /&gt;-------------------------------------------------&lt;br  /&gt;2.바둑판 안에 마우스위치의 돌이있는지확인&lt;br  /&gt;--------------------------------------------------&lt;br  /&gt;004034D9&amp;nbsp; |.&amp;nbsp; 8D04C9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA EAX,DWORD PTR DS:[ECX+ECX*8]&lt;br  /&gt;004034DC&amp;nbsp; |.&amp;nbsp; 8D1C0A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA EBX,DWORD PTR DS:[EDX+ECX]&lt;br  /&gt;004034DF&amp;nbsp; |.&amp;nbsp; 8D0443&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA EAX,DWORD PTR DS:[EBX+EAX*2]&lt;br  /&gt;004034E2&amp;nbsp; |.&amp;nbsp; 8B9C86 C80400&amp;gt;MOV EBX,DWORD PTR DS:[ESI+EAX*4+4C8]&lt;br  /&gt;004034E9&amp;nbsp; |.&amp;nbsp; 85DB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST EBX,EBX&lt;br  /&gt;004034EB&amp;nbsp; |.&amp;nbsp; 8D8486 C80400&amp;gt;LEA EAX,DWORD PTR DS:[ESI+EAX*4+4C8]&lt;br  /&gt;004034F2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0F85 D3010000 JNZ EJEOmok.004036CB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; 빈돌인지 확인 하는 루틴임 &lt;br  /&gt;------------------------------------------------------------&lt;br  /&gt;4034F2를 nop해주면 상대방이 논 돌에 나의 돌을 놓을수있음;;;&lt;br  /&gt;오프라인 오목프로그램 AI컴퓨터가 너무잘해서 공부해본 내용...&lt;br  /&gt;즉 어떤 오목이던 바둑이던&amp;nbsp; if(x &amp;lt; 0 ||&amp;nbsp;x &amp;gt; 보더_x-1 ||&amp;nbsp;y &amp;lt; 0 ||&amp;nbsp;y &amp;gt; 보더_y-1 )&lt;br  /&gt;이루틴을 찾는다면 모든게 만사오케임 &lt;br  /&gt;다른게임은 바둑돌이 있다는 표시를 메시지비프음같은걸로 하니...&lt;br  /&gt;비프음을 추적하면 되겠음...~&lt;br  /&gt;&lt;br  /&gt;재미있는 공부였음 :D&lt;/div&gt;
&lt;div&gt;출처: Pdm1n blog:http://pdm1n.tistory.com 재블로그임 ㅠ.ㅠ&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>총알피하기 최종목표도달..(총알맞아도 안죽기:일명무적)</title>
      <id>http://www.coolsoft2.com/899729</id>
      <published>2009-11-16T11:33:27+09:00</published>
      <updated>2012-02-06T12:09:03+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/899729"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/899729#comment"/>
      <author>
         <name>Pdmin</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;안녕하세요 눈팅Pdm1n입니다. &lt;/p&gt;&lt;br  /&gt;&lt;img src=&quot;http://minicube.kr/blog/attach/1/516943.gif&quot; alt=&quot;516943.gif&quot; style=&quot;&quot; /&gt;
 &lt;br  /&gt;
&lt;img src=&quot;http://pdm1n.tistory.com/admin/entry/filePreview/cfile3.uf@110D29184B02409F30B221.jpg&quot; /&gt;
&lt;p&gt;눈팅벗어날려고 열심히 글씁니다.-_-ㅋ 
&lt;div class=&quot;autosourcing-stub&quot;&gt;
&lt;div&gt;총알피하기 총알맞아도 안죽는걸 해보고싶어서 공부용으로 분석하였습니다.&lt;br  /&gt;대상:벫뗗(plane.exe)&lt;br  /&gt;죽는 루틴분석&lt;br  /&gt;-----------&lt;br  /&gt;위와 같이 수정하면 비행기가 총알을맞아도 안죽습니다.&lt;br  /&gt;&lt;br  /&gt;죽은 다음 뿌려주는 부분입니다. (DrawText함수로 뿌려줍니다)&lt;br  /&gt;죽은다음 뿌려주는 부분 offset 403D84&lt;br  /&gt;00403E08&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 68 25080000&amp;nbsp;&amp;nbsp; PUSH 825&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; /Flags = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX&lt;br  /&gt;00403E0D&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 8D4C24 08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEA ECX,DWORD PTR SS:[ESP+8]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |&lt;br  /&gt;00403E11&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 51&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH ECX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |pRect&lt;br  /&gt;00403E12&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 6A 04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |Count = 4&lt;br  /&gt;00403E14&amp;nbsp;&amp;nbsp; |.&amp;nbsp; A1 E4694000&amp;nbsp;&amp;nbsp; MOV EAX,DWORD PTR DS:[4069E4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |&lt;br  /&gt;00403E19&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 68 255D4000&amp;nbsp;&amp;nbsp; PUSH plane-15.00405D25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |Text = &quot;aaaa&quot;&lt;br  /&gt;00403E1E&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 50&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH EAX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |hDC =&amp;gt; D4011B0A&lt;br  /&gt;00403E1F&amp;nbsp;&amp;nbsp; |.&amp;nbsp; E8 3A0A0000&amp;nbsp;&amp;nbsp; CALL &amp;lt;JMP.&amp;amp;USER32.DrawTextA&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; DrawTextA&lt;br  /&gt;&lt;br  /&gt;원래는 403E19부분에 Text는 &quot;aaaa&quot;가아니라 한문인데 확인차 수정하였습니다.&lt;br  /&gt;●4020FB-&amp;gt;◎403400-&amp;gt;◇40362A-&amp;gt;◆404590-&amp;gt;■40464A-&amp;gt;△403D84&lt;br  /&gt;&lt;br  /&gt;이루틴으로 오기까지의 경로입니다. &lt;br  /&gt;&lt;br  /&gt;403E1F(DrawTextA)함수까지 오는 경로이지요 &lt;br  /&gt;&lt;br  /&gt;404590은 죽은후 기록,커서True,Bitbit,쓰레드정지 등등 루틴이있고&lt;br  /&gt;&lt;br  /&gt;위로올라가면 검은배경의 반짝이는 별생성루틴,총알생성루틴,죽은다음 처리하는 루틴 이렇게나뉩니다.&lt;br  /&gt;&lt;br  /&gt;바로 그루틴이 -&amp;gt;◎403400 이루틴입니다. 여길분석해보시면 알겠지만 별을 생성하고 움직이고 총알을 생성하고 움직이고 &lt;br  /&gt;&lt;br  /&gt;죽음(die)즉 총알맞았을경우의 분기문이있습니다. 저는 그부분을 간단하게 넘겨 총알을 맞아도죽지 않습니다.&lt;br  /&gt;&lt;br  /&gt;&lt;br  /&gt;&lt;strong&gt;여기서 중요한 루틴은 바로 ◎403400입니다&lt;br  /&gt;403400으로 들어오시면 &lt;br  /&gt;--총알생성루틴--&lt;br  /&gt;0040360A&amp;nbsp;&amp;nbsp; |&amp;gt;&amp;nbsp; E8 ADF9FFFF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL plane-15.00402FBC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이루틴은 총알생성 루틴 (nop하면 총알이 안나옵니다)&lt;br  /&gt;---------------------------------------------------------------&lt;br  /&gt;--별 움직임 빠르게 조작(어지럽게)&lt;br  /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;0040349F&amp;nbsp;&amp;nbsp; |. /EB 08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP SHORT plane-15.004034A9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; &lt;br  /&gt;004034AF&amp;nbsp;&amp;nbsp; |.&amp;nbsp; EB 07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP SHORT plane-15.004034B8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; &lt;br  /&gt;두주소를 nop로 채워주시면 더 어려운 버젼이됩니다.(어지럽슴)&lt;br  /&gt;-----------------------------------------------------------------------------------&lt;br  /&gt;기록 출력 루틴&lt;br  /&gt;00403527&amp;nbsp;&amp;nbsp; |.&amp;nbsp; E8 F4EBFFFF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL plane-15.00402120&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; nop하면 기록이안나옵니다.&lt;br  /&gt;------------------------------------------------------------------------------------&lt;br  /&gt;비행기가 총알을 맞았을때 터지는(죽는)루틴입니다.&lt;br  /&gt;0040362A&amp;nbsp;&amp;nbsp; |.&amp;nbsp; E8 610F0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL plane-15.00404590&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 죽는 비트맵 구현루틴&lt;br  /&gt;-------------------------------------------------------------------------------------&lt;br  /&gt;검은바탕색 별 안움직이게하기&lt;br  /&gt;0040340E&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 0F84 E7010000&amp;nbsp;&amp;nbsp;&amp;nbsp; JE plane-15.004035FB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nop하시면 됩니다. 별이안움직여요&lt;br  /&gt;----------------------------------------------------&lt;br  /&gt;그냥 검은 바탕색이 좋다 별없애자&lt;br  /&gt;0040341D&amp;nbsp;&amp;nbsp; |.&amp;nbsp; 0F87 86000000&amp;nbsp;&amp;nbsp;&amp;nbsp; JA plane-15.004034A9&amp;nbsp;&amp;nbsp; jmp 004034A9하시면 됩니다.&lt;br  /&gt;------------------------------------------------&lt;br  /&gt;비행기 터지는 루틴&lt;br  /&gt;00403616&amp;nbsp;&amp;nbsp; |. /74 3B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JE SHORT plane-15.00403653&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br  /&gt;00403618&amp;nbsp;&amp;nbsp; |. |83F8 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMP EAX,11&lt;br  /&gt;0040361B&amp;nbsp;&amp;nbsp; |. |75 17&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JNZ SHORT plane-15.00403634&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br  /&gt;0040361D&amp;nbsp;&amp;nbsp; |. |33D2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XOR EDX,EDX&lt;br  /&gt;0040361F&amp;nbsp;&amp;nbsp; |. |8915 906D4000&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV DWORD PTR DS:[406D90],EDX&lt;br  /&gt;00403625&amp;nbsp;&amp;nbsp; |. |A1 DC694000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV EAX,DWORD PTR DS:[4069DC]&lt;br  /&gt;0040362A&amp;nbsp;&amp;nbsp; |. |E8 610F0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL plane-15.00404590&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp;&amp;nbsp;총알맞고 죽을때 비행기 터지는화면루틴&lt;br  /&gt;------------------------------------------------------------------------------------------------------------&lt;br  /&gt;비행기가 총알을 맞아도 무한생명력을 지닐려면 403616과 40361B를 jne및 jmp 하시면 됩니다.&lt;br  /&gt;무적비행기 코드&lt;br  /&gt;--------------&lt;br  /&gt;offset 403616&lt;br  /&gt;jne 403653&lt;br  /&gt;offset 40361b&lt;br  /&gt;jmp 403634&lt;br  /&gt;------------&lt;br  /&gt;공부내용의 그림도 넣고 글도 상세하게 분석한걸 올릴수가없내요 군대라서..글을 길게쓰면 안올라가니 ~_~&lt;br  /&gt;&lt;/strong&gt;그래야 40362A루틴을 벗어나면서 죽는루틴으로 안갑니다. &lt;/p&gt;
&lt;p&gt;여러분들도 직접 해보시길 바래요 ~_~ &lt;br  /&gt;매우좋은 공부였습니다. :D&amp;nbsp; &lt;/p&gt;
&lt;p&gt;출처 pdm1n blog:http://pdm1n.tistory.com&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>abexcm1을 여러가지 풀어보자.</title>
      <id>http://www.coolsoft2.com/899709</id>
      <published>2009-11-05T10:01:20+09:00</published>
      <updated>2012-01-25T18:16:46+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/899709"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/899709#comment"/>
      <author>
         <name>Lr라</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;이번엔 여러가지 방법입니다.&lt;/p&gt;
&lt;p&gt;한개의 방법이 제시되는게 아니라 영상으로 많은 방법을 제시합니다.&lt;/p&gt;
&lt;p&gt;또다른 방법이 몇개 존재하나 다른 사이트와 겹치므로 올리지 않겠습니다.&lt;/p&gt;
&lt;p&gt;압축을 풀면 사이트로 되어있는 html 파일과 swf 파일이있는데..&lt;/p&gt;
&lt;p&gt;html 파일을 실행하셔서 보시길 바랍니다.&lt;/p&gt;
&lt;p&gt;그리고 두개중 하나라도 지우시면 안됩니다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>Simple Anti Reversing Techniques</title>
      <id>http://www.coolsoft2.com/899685</id>
      <published>2009-11-03T11:09:31+09:00</published>
      <updated>2012-02-08T17:57:32+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/899685"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/899685#comment"/>
      <author>
         <name>Ezbeat</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;예전에 제가 처음으로 책을 통해 안티 리버싱을 접했을 때 내용을 정리 해보기 위해 직접 작성한 문서 입니다 ^^&lt;/p&gt;
&lt;p&gt;전 제가 공부한 것을 문서화 하기 좋아해서요~!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;11월에 동아리 내부 세미나 하는데 간단하게 이걸 주제로 해볼려고 하네요~&lt;/p&gt;
&lt;p&gt;발표 할 때는 쫌 더 공부해서 패커 만드는 것과 재미있는 예제를 몇가지 더 넣어야 겠어요 ^^&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아~ 한가지 생각했는데 안티 디버깅 쪽 개념 설명할 때&lt;/p&gt;
&lt;p&gt;지뢰밭을 가지고 설명해볼껀데 괜찮은 예제겠죠? ~&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt; 한번 써본 것~! 지뢰 밭 사진 한장 떡 하니 놓구요 ^^;; &lt;/p&gt;
&lt;p&gt;설명&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;원하는 목적지에 도달 할 수 있는 길이 있다&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;그 길에 만약 지뢰가 없다면 &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;빠른 시간에 목적지에 도달 할 것이다&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;만약 지뢰가 있다면 지뢰 탐지기를 가지고 지뢰를 제거 하면서 아주 천천히 진행 할 수 있을 것이다&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;만약 지뢰를 밟는 다면 목적지에 가기 전에 죽게 될 것이다&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;마찬 가지로 크래커가 &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt;디버거를&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px;&quot;&gt; 가지고 분석을 하는데 프로그램 중간 중간 지뢰&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt; 즉 &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;안티&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt; 디버깅 코드가 심어져 있다면&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;천천히 &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;트레이스&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt; 하면서 분석을 할 수 밖에 없을 것이다&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;.&lt;span style=&quot;font-size: 12px;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;만약 &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;안티&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt; 디버깅 코드를 탐지하고 못하고 그대로 실행을 시켜버린다면 &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;디버거가&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;탐지 되 &lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;역분석을&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt; 성공하지 못하고 죽게 될 것이다&lt;/span&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: black; font-size: 12px; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: rgb(58, 50, 195); font-size: 12px; vertical-align: baseline;&quot;&gt;P.S 다른 재미있는 예제가 생각 나신다면 의견 주셔두 되요 ~!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: rgb(58, 50, 195); font-size: 12px; vertical-align: baseline;&quot;&gt;즐거운 하루 되세요 ^^; &lt;br  /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; margin-top: 4.32pt; unicode-bidi: embed; direction: ltr; margin-bottom: 0pt; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: 굴림; color: rgb(58, 50, 195); font-size: 12px; vertical-align: baseline;&quot;&gt;오타가 있더라도..;; 너그럽게 용서를..&lt;br  /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>안티 안티디버깅을 이용한 안티 디버깅 - GetTickCount / RDTSC</title>
      <id>http://www.coolsoft2.com/897481</id>
      <published>2010-09-25T01:03:38+09:00</published>
      <updated>2012-02-02T21:18:57+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/897481"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/897481#comment"/>
      <author>
         <name>퓨틱</name>
                  <uri>http://pyutic.tistory.com</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p/&gt;실로 오랜만의 강좌입니다!&lt;/p&gt;
&lt;p/&gt;&amp;nbsp;&lt;/p&gt;
&lt;p/&gt;초급으로할까 중급강좌로 할까 고민하다가&lt;/p&gt;
&lt;p/&gt;초급에 올립니다.&lt;/p&gt;
&lt;p/&gt;&amp;nbsp;&lt;/p&gt;
&lt;p/&gt;index.html을&amp;nbsp;보시면 되겠습니다&lt;/p&gt;
&lt;p/&gt;&amp;nbsp;&lt;/p&gt;
&lt;p/&gt;P.S 이런 식의 안티디버깅을 이름붙히자면&lt;/p&gt;
&lt;p/&gt;안티-안티-안티 디버깅인가요? -_-ㅋㅋ&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>themida 로 패킹된 파일 안티디버깅 우회하기(?)</title>
      <id>http://www.coolsoft2.com/897452</id>
      <published>2010-01-10T16:21:04+09:00</published>
      <updated>2012-01-25T17:58:08+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/897452"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/897452#comment"/>
      <author>
         <name>zhd5050</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;더미다 상위 버전은&lt;/P&gt;
&lt;P&gt;&lt;a href=&quot;http://www.coolsoft2.com/?mid=rversing_mb&amp;amp;document_srl=396698&quot;&gt;http://coolsoft2.com/?mid=rversing_mb&amp;amp;document_srl=396698&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;이 방법 만으로는 안됩니다. (디버거가 탐지됬다고 뜹니다)&lt;/P&gt;
&lt;P&gt;이 방법에다가 &lt;/P&gt;
&lt;P&gt;PhantOm 플러그인이 로드하는 드라이버의 이름들 (등)도&amp;nbsp;바꿔줘야 합니다.&lt;/P&gt;
&lt;P&gt;1. 올리디버거가 있는 폴더의&amp;nbsp;ollydbg.ini 파일을 엽니다.&lt;/P&gt;
&lt;P&gt;2. [Plugin PhantOm] 를 찾습니다.&lt;/P&gt;
&lt;P&gt;3. 2번에 속해 있는 HIDENAME 을 임의의 값으로 바꿔줍니다. (아마 디폴트로 extrem로 되어 있을 것입니다.)&lt;/P&gt;
&lt;P&gt;4. RDTSCNAME 을 임의의 값으로 바꿔줍니다. (아마 디폴트로 rdtsc로 되어 있을 것입니다.)&lt;/P&gt;
&lt;P&gt;5. CAPTEXT 를 임의의 값으로 바꿔줍니다.&lt;/P&gt;
&lt;P&gt;아마 될겁니다. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이런 뻘글 올려도 되나 모르겠네요. 올리면 안되면 게시글 이동해주시길.. ㅜㅜ&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>진혼이중주의 (컴백 스페셜)  리버스 엔지니어링 DLL Hook기법 2</title>
      <id>http://www.coolsoft2.com/897446</id>
      <published>2009-12-06T20:20:15+09:00</published>
      <updated>2011-11-07T11:11:31+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/897446"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/897446#comment"/>
      <author>
         <name>진혼이중주</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;저번시간에는&amp;nbsp; 간단한&amp;nbsp; 타겟 익스큐즈파일 (즉 실행파일)을 조작 하는 dll을 파일을 제작해보았습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이번에는 그 dll파일을 가지고 타겟파일과 연결시키는 작업을 해보겠습니다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1.엔트리 포인트를 찾는다...&lt;/p&gt;
&lt;p&gt;엔트리 포인트 005828E5 &amp;gt;/$ 55 push ebp&lt;/p&gt;
&lt;p&gt;메모해둔다.&lt;/p&gt;
&lt;p&gt;(엔트리 포인트라는것은 프로그램의 사작점을 가르킨다 일반적으로 올리디버그를 이용해 해당 파일을 열었을때&lt;/p&gt;
&lt;p&gt;처음&amp;nbsp;선택되어 있는 부분이 엔트리 포인트이다!)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2.텍스트 스티링으로 dll을 찾는다... (어셈부분을 오른쪽 클릭 -&amp;gt; 울트라 스트링 레퍼런스 -&amp;gt; 1 파인드 아스키 ) &lt;/p&gt;
&lt;p&gt;딱히 아무DLL도 상관 없습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;딜파일이름 아스키가&amp;nbsp;있는 곳에 있는 LoadLibraryA을 찾는다. 그러면 다음과 값이 나온다고 치자&lt;/p&gt;
&lt;p&gt;0057CC57 |. FF15 04CD650C call near dword ptr ds:[&amp;lt;&amp;amp;KERNEL32.LoadL&amp;gt;; LoadLibraryA&lt;/p&gt;
&lt;p&gt;어셈 명령어 call near dword ptr ds:[C65CD04] 를 메모해둔다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.바로 그 밑에 쯤에 있는 GetProcAddress을 텍스트 창에서 찾는다 그러면 다음과 같은 어셈문이 발견된다고 치자.&lt;/p&gt;
&lt;p&gt;0057CC7D |. FF15 00CD650C call near dword ptr ds:[&amp;lt;&amp;amp;KERNEL32.GetPr&amp;gt;; GetProcAddress&lt;/p&gt;
&lt;p&gt;어셈 명령어 call near dword ptr ds:[C65CD00] 를 메모해둔다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;4.어셈블리가가 없는 빈곳을 찾는다(DB 00) 여기서는 예를 들어 오프셋 주소 005BB87E주소에 입력했다&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기에 자신의 올리디버그 헥스 에디터로 자신이 만든 딜파일의 확장자를 포함한 이름을 적어 놓는다. &lt;/p&gt;
&lt;p&gt;(헥스에디터로 쓰기전에 꼭 팔로인 덤프를 하라!) &lt;/p&gt;
&lt;p&gt;시작할 어셈부분을 오른쪽 클릭 -&amp;gt; 팔로우 인 덤프 -&amp;gt; 셀렉션을 클릭하면 밑에 헥스창에 뜨면 헥스 창에 첫부분을 클릭하고 컨트롤 + E 누르면 에디터가뜬다&lt;/p&gt;
&lt;p&gt;여기서 아스키칸에다가 적으면 된다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;5.그 밑에 몇칸 내려와 C++로 소스를 짯던 extern &quot;c&quot; __declspec(dllexport) void config();에서 &lt;/p&gt;
&lt;p&gt;config를 헥스 에디터로 적는다. //엔트리 함수 이름이다.&lt;/p&gt;
&lt;p&gt;여기서는 예를 들어 오프셋 주소 005BB88E에다 썼다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;6.모두 저장한다음에 다시 올리디버그를 닫고 UDD폴더를 지운다. 그리고 다시 올리디버그로&lt;/p&gt;
&lt;p&gt;게임서버를 다시 실행시킨다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;7.다시 몇 칸 내려와서 DLL이름이 적힌 오프셋값을 메모리에 저장시킨다. 여기서는 005BB898을 썼다.&lt;/p&gt;
&lt;p&gt;어셈명령어로는 PUSH 딜파일명 오프셋 주소.... 여기서는 PUSH 005BB87E 이 된다.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;8.한칸내려와 LoadLibraryA의 어셈문을 입력해준다... call near dword ptr ds:[C65CD04]이지만 그대로 적으면 입력이 안된다. &lt;/p&gt;
&lt;p&gt;call near dword ptr ds:[0C65CD04] 이런식으로 오프셋주소 값 앞에 0을 넣어준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;9.한칸 내려와 어셈문 OR EAX,EAX 를 입력해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;10,한칸 내려와 JE 엔트리 포인트를 적어 준다. 여기서는 JE 005828E5 이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;11.한칸 내려와 PUSH 005BB88E 를 입력해준다.. 또 한칸 내려와 여기서의 주소값은 &lt;/p&gt;
&lt;p&gt;extern &quot;c&quot; __declspec(dllexport) void config(); 에서의 config이라고..... 썻던 엔트리 함수의 이름을 적어준다.&lt;/p&gt;
&lt;p&gt;헥스값을 입력했던 주소이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;12.한칸 내려와 eax값을 메모리에 저장해준다. 따라서 명령어는 PUSH EAX 이다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;13. 한칸 내려와 아까 찾은 GetProcAddress의 어셈문을 입력해준다..... &lt;/p&gt;
&lt;p&gt;따라서 어셈명령문은 call near dword ptr ds:[C65CD00]이지만... 역시 이대로 바로 &lt;/p&gt;
&lt;p&gt;입력하면 저장이 안되므로 call near dword ptr ds:[0C65CD00] 과 같이 오프셋 값 앞에 0을 넣어준다...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;14.한칸 내려와 아까 저장했던 eax값을 불러준다. 어셈문으로는 CALL EAX 이다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;15. 올리디버그의 어셈문 입력 작업은 거의 다끝났다 마지막으로 이제 어셈문의 작업들을 &lt;/p&gt;
&lt;p&gt;마치고 다시 엔트리 포인트로 보내주어야 한다. 따라서 점프 엔트리오프셋값 즉 &lt;/p&gt;
&lt;p&gt;JMP 005828E5 어셈문을 입력해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;16. 마지막으러 컨트롤 + A 를 눌러주어 어셈문에 이상이 없는지 디버깅한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;17. 모든값을 저장하고 올리디버그 UDD폴더안의 내용을 지운다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;18. 이제 LoadPE프로그램으로 엔트리 포인트를 바꾸어야 한다. LoadPE를 실행한다.&lt;/p&gt;
&lt;p&gt;PE Editor을 클릭하여 게임서버를 불러온다 &lt;/p&gt;
&lt;p&gt;LoadPE에서 어셈코딩의 시작점을 001BB898으로 엔트리 포인트를 바꿔주고 SAVE를 누르고 &lt;/p&gt;
&lt;p&gt;LoadPE를 닫아준다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&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;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;전체적인 구조츨 보면 이렇게 되겠지요&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;005828E5 원래의 엔트리 포인트 &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;005BB87E &quot;OSTeams.dll&quot;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;005BB88E &quot;config&quot;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PUSH 005BB87E &lt;/p&gt;
&lt;p&gt;call near dword ptr ds:[0C65CD04]&lt;/p&gt;
&lt;p&gt;OR EAX,EAX &lt;/p&gt;
&lt;p&gt;JE 005828E5 &lt;/p&gt;
&lt;p&gt;PUSH 005BB88E&lt;/p&gt;
&lt;p&gt;PUSH EAX &lt;/p&gt;
&lt;p&gt;call near dword ptr ds:[0C65CD00]&lt;/p&gt;
&lt;p&gt;CALL EAX &lt;/p&gt;
&lt;p&gt;JMP 005828E5 &lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>진혼이중주의 (컴백 스페셜)  리버스 엔지니어링 DLL Hook기법</title>
      <id>http://www.coolsoft2.com/897431</id>
      <published>2009-11-24T15:36:26+09:00</published>
      <updated>2012-02-01T18:20:01+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/897431"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/897431#comment"/>
      <author>
         <name>진혼이중주</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;안녕하세요 진혼군입니다. 저를 모르시는 분들이 많을거라고 생각 합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예전에 쿨소프트에서 많이 활동했었지요 - &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필자는 리버스 엔지니어링의 입문은 어떠한 프리서버와 만나면서 이루어졌습니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;라고는 해도 프리서버 운영은 해본적은 없네요. 코드를 짜서 넣고 배포만 했었지.. ㅎㅎ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필자의 리버스엔지니어링 기술은 전부 해외의 프리서버 전문 포럼 레지존에서 배웠다고 해도 과언이 아닙니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;오늘의 강좌는 보통은 HOOK기법이라고도 불리우는 C++소스 코드로 DLL을 만들어서 해당 EXE파일을 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;조작하는 간단한 소스를 만들어 볼까 합니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;준비물은 &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;비쥬얼 스튜디오 : 저는 주로 비쥬얼 스튜디오 2008을 사용합니다.&lt;/p&gt;
&lt;p&gt;비쥬얼 스튜디오 2008&amp;nbsp;90일 데모 버젼 다운로드 링크입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;정식버젼을 사용하고 싶으신분들은&amp;nbsp; p2p사이트에도 많이 올라가져 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=d95598d7-aa6e-4f24-82e3-81570c5384cb&amp;amp;DisplayLang=ko&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#0000ff&quot;&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=d95598d7-aa6e-4f24-82e3-81570c5384cb&amp;amp;DisplayLang=ko&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;참고로 이걸 정식버젼을 정품으로 사고 싶으시다는분... 굳이 말리지는 않겠습니다만... 가격이 상당합니다.&amp;nbsp; 90일버젼을 쓰시던지.. 아니면 어둠의 루트를... &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;올리디버거 &lt;/p&gt;
&lt;p&gt;LoadPE &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;이렇게 있으면 됩니다. 올리디버그랑 LoadPE는 실제 DLL을 만들어서 EXE 파일이랑 연결할때 필요한것이니 지금 당장은 필요하지 않습니다. &lt;/p&gt;
&lt;p&gt;(보통 DLL파일과 EXE를&amp;nbsp;강제로&amp;nbsp;연결시켜주는 작업을 후킹이라고 합니다.) &lt;/p&gt;
&lt;p&gt;(올리디버그로 값의 위치를 찾는거일도 하고 있으니 C언어로 작업을 한다고 해도 올리디버그는 필수 불가결로 필요하게됩니다. )&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;흔히&amp;nbsp; EXE파일의 코드를 수정할때&lt;/p&gt;
&lt;p&gt;ASM코딩을 직접 코딩이라고 부르기도 하고 &lt;/p&gt;
&lt;p&gt;C++코딩을 간접 코딩이라고 부르기도합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;그이유는 ASM코딩은 직접적으로 게임서버의 파일을 수정하기때문에 직접접근하는 방식이기때문이고&lt;/p&gt;
&lt;p&gt;C++은 DLL에 자신의 모든 코딩을 담아서 EXE파일과 DLL을 연결해서 DLL에서&amp;nbsp;EXE파일을 접근하는방식이기때문에 간접 접근하기때문입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;일단 &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;비쥬얼 스튜디오를 실행시키면 다음과 같은 모습이 나올겁니다. (처음 설치하고 실행했을때 베이스 언어를 C++로 해주시길 바랍니다.)&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;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://oinfoupload.infomaster.co.kr/editorImg/2009-11/fmgucuk_MC5KUEdfMTI1NzQ2MDQ0Ng==&quot; alt=&quot;fmgucuk_MC5KUEdfMTI1NzQ2MDQ0Ng==&quot; width=&quot;550&quot; style=&quot;&quot; /&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;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;여기서 메뉴바에서 파일-&amp;gt; 새로만들기 -&amp;gt; 프로젝트를 클릭합니다&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://oinfoupload.infomaster.co.kr/editorImg/2009-11/fmgucuk_MS5KUEdfMTI1NzQ2MDU5Mg==&quot; alt=&quot;fmgucuk_MS5KUEdfMTI1NzQ2MDU5Mg==&quot; width=&quot;550&quot; style=&quot;&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 프로젝트 옵션은 다음과 같이 잡아봅니다. 일단 예제로 저는 프로젝트 이름을 OSCTeams로 잡았습니다. &lt;/p&gt;
&lt;p&gt;이경우 나중에 컴파일해서 DLL파일이 만들어졌을때 OSCTeams.dll로 파일이 만들어지게 됩니다. &lt;/p&gt;
&lt;p&gt;프로젝트 형식에서 win32를 선택하고 오른쪽에서는 win32 프로젝트를 클릭합니다.&lt;/p&gt;
&lt;p&gt;밑에 위치는 프로젝트 생성 위치 디렉토리니깐 잘 기억해주세요.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://oinfoupload.infomaster.co.kr/editorImg/2009-11/fmgucuk_Mi5KUEdfMTI1NzQ2MTYwMA==&quot; alt=&quot;fmgucuk_Mi5KUEdfMTI1NzQ2MTYwMA==&quot; width=&quot;550&quot; height=&quot;362&quot; style=&quot;WIDTH: 925px; HEIGHT: 475px&quot; /&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;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&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;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://oinfoupload.infomaster.co.kr/editorImg/2009-11/fmgucuk_My5KUEdfMTI1NzQ2MTgyMw==&quot; alt=&quot;fmgucuk_My5KUEdfMTI1NzQ2MTgyMw==&quot; width=&quot;550&quot; height=&quot;418&quot; style=&quot;WIDTH: 1017px; HEIGHT: 509px&quot; /&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;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;빈프로젝트를 체크 하는이유는 빈프로젝트는 에서 소스파일들은 무조건 &lt;/p&gt;
&lt;p&gt;#incldue &quot;stdafx.h&quot; 를 인크루드 해야 합니다. 안그러면 컴파일할때 에러가 뜨죠 -&amp;nbsp; &lt;/p&gt;
&lt;p&gt;대충 미리 컴파일된 헤더파일 포함 뭐.. 이런식으로 생각하시면됩니다.&lt;/p&gt;
&lt;p&gt;stdafx.h는 미리 컴파일된 표준라이브러리를 포함시킬때 사용하면 유용합니다. &lt;/p&gt;
&lt;p&gt;stdio.h, widows.h등등의 헤더파일은 컴파일러에서 기본적으로 제공을 해주고 미리 컴파일이 되어 있습니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;미리컴파일된 헤더파일을 사용하면 컴파일의 시간을 단축 시킬수 있습니다만. 저희가 짜는 소스는 얼마 되지 않기에&lt;/p&gt;
&lt;p&gt;안해도 상관 없습니다.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&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;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://oinfoupload.infomaster.co.kr/editorImg/2009-11/fmgucuk_NC5KUEdfMTI1NzQ2MjAyNg==&quot; alt=&quot;fmgucuk_NC5KUEdfMTI1NzQ2MjAyNg==&quot; style=&quot;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;저는 임의 cpp파일을 만들었습니다. 이것은 제 임의대로 만든것이니 여러분이 맘에 드시는 이름을 선택하시면 됩니다. &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://oinfoupload.infomaster.co.kr/editorImg/2009-11/fmgucuk_NS5KUEdfMTI1NzQ2MjIyOA==&quot; alt=&quot;fmgucuk_NS5KUEdfMTI1NzQ2MjIyOA==&quot; width=&quot;550&quot; height=&quot;371&quot; style=&quot;WIDTH: 1262px; HEIGHT: 465px&quot; /&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;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음과 같이 이름을 적고 추가를 누르시면 오른쪽에 텍스트파일처럼 쓸수 있는 공간이 생길것입니다. 이렇게요 &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://oinfoupload.infomaster.co.kr/editorImg/2009-11/fmgucuk_Ni5KUEdfMTI1NzQ2MjQ1Mw==&quot; alt=&quot;fmgucuk_Ni5KUEdfMTI1NzQ2MjQ1Mw==&quot; style=&quot;&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;cpp문서안에다가 일단 다음과 같이 &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;타이핑을 하세요 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;예전에&amp;nbsp; 프리서버 수정하면서 만들었던 소스 코드입니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;#include &quot;windows.h&quot;&lt;/p&gt;
&lt;p&gt;&lt;br  /&gt;/*다음은 블러드 캐슬의 보상아이템을 수정하는 소스입니다. &lt;/p&gt;
&lt;p&gt;BC_DROP_ITEM 작성자 Saber*/&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#define GS_BC_DROP_ID (0x00531A98+1) //블러드 캐슬 보상아이템 타입 오프셋 &lt;br  /&gt;#define GS_BC_DROP_GROUP (0x00531A9A+1) // 블러드 캐슬 보상 아이템 인덱스 오프셋&lt;/p&gt;
&lt;p&gt;void BcDropIni ();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //블러드캐슬 보상아이템 수정하는 함수인 BcDropIni 함수의 원형선언&lt;/p&gt;
&lt;p&gt;extern&amp;nbsp; &quot;C&quot;&amp;nbsp; __declspec(dllexport) void config(); //익스트런 선언. config함수를 엔트리 함수로 하겠다는 선언 &quot;c&quot;는 엔트리 함수c스타일로 하겠다는 뜻 즉 c++의 함수오버로딩 사용 불가.&lt;/p&gt;
&lt;p&gt;&lt;br  /&gt;void config()&lt;br  /&gt;{&lt;br  /&gt;&amp;nbsp;DWORD OldProtect;&lt;br  /&gt;&amp;nbsp;LPVOID lpAddress = (LPVOID)0x00401000;&lt;br  /&gt;&amp;nbsp;if (VirtualProtect (lpAddress,0x246000,PAGE_EXECUTE_READWRITE,&amp;amp;OldProtect))&amp;nbsp; //VirtualProtect함수 메모리 접근권한의 변경 (읽고쓰기 사용 가능 -) &lt;br  /&gt;&amp;nbsp;{&amp;nbsp;&lt;br  /&gt;&amp;nbsp;&amp;nbsp;BcDropIni() ;&lt;br  /&gt;&amp;nbsp;}&lt;br  /&gt;&amp;nbsp;else&lt;br  /&gt;&amp;nbsp;{&lt;br  /&gt;&amp;nbsp;&amp;nbsp;MessageBox(NULL,TEXT(&quot;버츄얼 프로텍트 함수가 올바르게 호출되지 못했습니다.&quot;),TEXT(&quot;버츄얼프로텍트 오류&quot;),NULL); //에러 메세지박스 출력&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;::ExitProcess(0); // 게임서버 프로세스 강제 종료 &lt;br  /&gt;&amp;nbsp;}&lt;br  /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;br  /&gt;void BcDropIni ()&lt;br  /&gt;{&lt;br  /&gt;&amp;nbsp;BYTE Bc;&lt;br  /&gt;&amp;nbsp;Bc = GetPrivateProfileInt(TEXT(&quot;configs&quot;),TEXT(&quot;BCItemDropID&quot;),15,TEXT(&quot;OSCTeam.ini&quot;));// OSCTeam.ini문서에서 [configs]에 있는 BCItemDropID값을 읽어드림 &lt;br  /&gt;&amp;nbsp;*(unsigned char *) GS_BC_DROP_ID = Bc ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //부호없는 char형의 포인터로 강제적인 형변환 헤당 오프셋에 값 대입&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Bc = GetPrivateProfileInt(TEXT(&quot;configs&quot;),TEXT(&quot;BCItemDropGroup&quot;),12,TEXT(&quot;OSCTeam.ini&quot;));&lt;br  /&gt;&amp;nbsp;*(unsigned char *) GS_BC_DROP_GROUP =Bc ;&lt;br  /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;컴파일은 단축키 F7을 누르시면 컴파일이 됩니다. &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;그러면 당신의 프로젝트 생성했을때의 디렉토리로 가시면 Debug폴더가 생성되어 있고 그안으로 들어가면 &lt;/p&gt;
&lt;p&gt;OSTeams.dll파일이 있을껍니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;extern&amp;nbsp; &quot;C&quot;&amp;nbsp; __declspec(dllexport) void config();&amp;nbsp; dll에 파일에서&amp;nbsp;가장 중요한 부분입니다.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;extern&amp;nbsp;은 외부에서 접근이 가능하게 하다 뭐 이런뜻으로 생각 하면 됩니다. DLL관점에서 보면 게임서버는 외부에 있는 파일 이니까여 맞죠?&lt;/p&gt;
&lt;p&gt;&quot;C&quot;는 C스타일의 함수라고 정의 합니다. 이것이 뭐냐.. 라고 생각 하시는데.. C++은 함수 오버로딩이라는 게 있습니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;c에서는 &lt;/p&gt;
&lt;p&gt;int fnce() &lt;/p&gt;
&lt;p&gt;int fnce(int a, int b)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;비록 우리가 봤을때 함수를 호출할때 &lt;/p&gt;
&lt;p&gt;fnce(); 이렇게 하면 위에 함수를 호출하라는 거구나 알수 있지만 c에서는&amp;nbsp; 허용을 안합니다. &lt;/p&gt;
&lt;p&gt;하지만 c++에서는 허용을 하지요 이것이 함수 오버로딩이라는 것입니다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;물론 c뿐만 아니라 파스칼이나 다른 언어에서도 사용이 불가능 하다. 함수 오버로딩은 C++만의 고유 기능이기때문에 다른 언어와의 호환성을 위해 &quot;C&quot;을 붙혀줍니다&lt;/p&gt;
&lt;p&gt;함수오버로딩을 하지 않았다고 명시적으로 알려주는 것입니다.&lt;/p&gt;
&lt;p&gt;EXE파일은 파스칼 언어로 작성되었는데 DLL 파일은 C로 작성되어 있습니다..&amp;nbsp; 사용이 가능할까요? 당연히 사용이 가능합니다 &lt;/p&gt;
&lt;p&gt;어차피 C언어나 파스칼 언어나 일단 컴파일되면 기계어 코드로 수정되기때문입니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;__declspec(기억부류의 속성)은 엔트리 함수에 대한 정보를 제공한다&amp;nbsp;함수같아 보이지만 사실은 키워드입니다. &lt;/p&gt;
&lt;p&gt;저 가로안에 들어갈수 있는 인수는 4가지이지만 보통은 2개를 주로 사용합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;__declspec(dllexport) :&amp;nbsp;&amp;nbsp;DLL을 사용하는 클라이언트(EXE파일이거나 DLL을 필요로 하는 또다른 DLL)에게 DLL의 시작 엔트리 함수의 정보를 명시적으로 제공을 해줍니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;__declspec(dllimport):&amp;nbsp; DLL소스에내에서는 쓰이지않고, 베이스 파일에서 DLL을 호출 할때 쓰이는 문법입니다.. (하지만 우리가 타겟으로 하는 EXE파일은 우리가 직접 소스를 짜서 만들어진 파일이 아닌 완성된 파일이기에! 우리에게는 필요가 없습니다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그다음에 엔트리 포인트 함수의 원형을&amp;nbsp;적어주면 됩니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;extern &quot;C&quot; __declspec(dllexport) void config();&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;그리고 그다음으로 눈여겨 볼것은 VirtualProtect 프로텍터 함수입니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;VirtualProtect 프로텍트는 해당 오프셋 주소부분의 접근권한을 변경해주는 API함수입니다. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MSDN에서 자세히 보도록 해볼까요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;BACKGROUND-COLOR: #ddd&quot;&gt;&lt;pre class=&quot;libCScode&quot; id=&quot;ctl00_MainContent_ctl01_code&quot; style=&quot;WORD-BREAK: break-all; WORD-WRAP: break-word&quot; space=&quot;preserve&quot;&gt;HRESULT &lt;font style=&quot;BACKGROUND-COLOR: #3399fe&quot; color=&quot;#ffffff&quot;&gt;VirtualProtect&lt;/font&gt; (
    [in] void* lpAddress,
    [in] SIZE_T dwSize,
    [in] DWORD flNewProtect,
    [out] DWORD* pflOldProtect
);&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
&lt;h4 class=&quot;subHeading&quot;&gt;매개 변수&lt;/h4&gt;
&lt;div class=&quot;labelheading&quot;&gt;&lt;b&gt;&lt;!----&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;tableSection&quot;&gt;
&lt;table width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;매개 변수 &lt;/th&gt;
&lt;th&gt;설명 &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;parameter&quot;&gt;&lt;em&gt;lpAddress&lt;/em&gt;&lt;/span&gt; &lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;[in] 보호 특성을 변경할 가상 메모리의 기준 주소에 대한 포인터입니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;parameter&quot;&gt;&lt;em&gt;dwSize&lt;/em&gt;&lt;/span&gt; &lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;[in] 변경할 메모리 페이지 영역의 크기(바이트)입니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;parameter&quot;&gt;&lt;em&gt;flNewProtect&lt;/em&gt;&lt;/span&gt; &lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;[in] 적용할 메모리 보호 형식입니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;span class=&quot;parameter&quot;&gt;&lt;em&gt;pflOldProtect&lt;/em&gt;&lt;/span&gt; &lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;[out] 이전 메모리 보호 값에 대한 포인터입니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;span&gt;
&lt;div class=&quot;MTPS_CollapsibleRegion&quot;&gt;
&lt;div class=&quot;CollapseRegionLink&quot;&gt;&lt;!-- ApplyClick with current id --&gt;&lt;img src=&quot;http://i.msdn.microsoft.com/Global/Images/clear.gif&quot; alt=&quot;clear.gif&quot; style=&quot;BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px&quot; /&gt; &amp;nbsp;반환 값 &lt;/div&gt;
&lt;div class=&quot;MTPS_CollapsibleSection&quot; style=&quot;DISPLAY: block&quot;&gt;&lt;a name=&quot;returnValueToggle&quot;&gt;&lt;/a&gt;
&lt;div class=&quot;labelheading&quot;&gt;&lt;b&gt;&lt;!----&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;tableSection&quot;&gt;
&lt;table width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;HRESULT &lt;/th&gt;
&lt;th&gt;설명 &lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;S_OK&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;&lt;font style=&quot;BACKGROUND-COLOR: #3399fe&quot; color=&quot;#ffffff&quot;&gt;VirtualProtect&lt;/font&gt;&lt;/b&gt;에서 성공적으로 반환되었습니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;HOST_E_CLRNOTAVAILABLE&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;공용 언어 런타임이 프로세스에 로드되지 않았거나, 관리 코드를 실행할 수 없는 상태 또는 호출을 성공적으로 처리할 수 없는 상태입니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;HOST_E_TIMEOUT&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;호출 시간이 초과되었습니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;HOST_E_NOT_OWNER&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;호출자가 잠금을 소유하고 있지 않습니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;HOST_E_ABANDONED&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;차단된 스레드나 파이버가 기다리던 이벤트가 취소되었습니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;E_FAIL&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;알 수 없는 치명적인 오류가 발생했습니다. 메서드가 E_FAIL을 반환한 후에는 프로세스에서 공용 언어 런타임을 더 이상 사용할 수 없습니다. 호스팅 API에 대한 이후의 호출은 HOST_E_CLRNOTAVAILABLE을 반환합니다.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;span&gt;
&lt;div class=&quot;MTPS_CollapsibleRegion&quot;&gt;
&lt;div class=&quot;CollapseRegionLink&quot;&gt;&lt;!-- ApplyClick with current id --&gt;&lt;img src=&quot;http://i.msdn.microsoft.com/Global/Images/clear.gif&quot; alt=&quot;clear.gif&quot; style=&quot;BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px&quot; /&gt; &amp;nbsp;설명 &lt;/div&gt;
&lt;div class=&quot;MTPS_CollapsibleSection&quot; style=&quot;DISPLAY: block&quot;&gt;&lt;a name=&quot;remarksToggle&quot;&gt;&lt;/a&gt;
&lt;p&gt;이렇게 &lt;b&gt;&lt;font style=&quot;BACKGROUND-COLOR: #3399fe&quot; color=&quot;#ffffff&quot;&gt;VirtualProtect&lt;/font&gt;&lt;/b&gt;를 구현하면 HRESULT 값이 반환되지만 Windows 플랫폼 구현을 실행하면 작업이 성공할 경우 0이 아닌 값을 반환하고 실패할 경우 0을 반환합니다. 자세한 내용은 Windows 플랫폼 설명서를 참조하십시오.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;첫번째 인자로 0x00401000이 인자로 넘어갔네요 대부분 프로그램들은 올리디버그로 열어보면 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;스크롤을 맨 위로 올려보면 그 시작값이&amp;nbsp;0x00401000으로 되어 있을겁니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;두번째는 역시 올리디버그로 EXE파일 열어서 스크롤을 맨 아래로 내려놓고 나오는값을 가지고 시작인자값에서 빼주면 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;되겠지요?? 접근권한을 변경할 크기를 설정하는 부분이니까요 &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PAGE_EXECUTE_READWRITE&lt;/p&gt;
&lt;p&gt;3번째 인자는 페이지 익스큐즈 리드라이트 즉 실행파일의 코드를 읽고 쓸수 있는 권한으로 바꾸겠다는 뜻입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>계산기 건들여보기(깔짝)</title>
      <id>http://www.coolsoft2.com/897418</id>
      <published>2009-11-17T10:51:42+09:00</published>
      <updated>2012-02-06T13:59:15+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/897418"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/897418#comment"/>
      <author>
         <name>Pdmin</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;후.. 쿨소프트의 발전을 기원하면서 눈팅이어도 상관없어요 ㅎㅎ 서로 공유하고&lt;/p&gt;
&lt;p&gt;배우고 즐기는것이 목적이니까..ㅎ 열심히 글쓰고 배우고 읽고 그런거죠 머 ㅎㅎ아무튼&lt;/p&gt;
&lt;p&gt;계산기 공부했던 내용입니다.&lt;/p&gt;
&lt;p&gt;01002621&amp;nbsp; |. FF7424 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH DWORD PTR SS:[ESP+10]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; /Text&lt;br  /&gt;01002625&amp;nbsp; |. 8BF8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV EDI,EAX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |&lt;br  /&gt;01002627&amp;nbsp; |. 56&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH ESI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; |hWnd&lt;br  /&gt;01002628&amp;nbsp; |. FF15 10110001&amp;nbsp; CALL DWORD PTR DS:[1001110] //SetWindowTextW&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;01002628(SetWindowText)주소에 숫자 값이 들어가는데 SetwindowTextW에 브포걸고&lt;br  /&gt;스텍의 ESP+10부분을보니 &lt;/p&gt;
&lt;p&gt;ESP+10 0100490D RETURN to calc.0100490D from calc.01002604가 있었습니다.&lt;/p&gt;
&lt;p&gt;분명히 ESP+10부분엔 숫자부분이 있어야하는데 없는겁니다. 그래서 다시&lt;/p&gt;
&lt;p&gt;원래자리01002621(push dword ptr ss:[ESP+10])자리에 브포를거니&lt;/p&gt;
&lt;p&gt;ESP+10 자리에 숫자값이 재대로 나오더군요 그래서 왜 콜부분에 브포걸면 위치가다를까&lt;/p&gt;
&lt;p&gt;생각해보니 콜위에 PUSH가 2번들어갑니다. 스택주소하나당 4byte기때문에&lt;/p&gt;
&lt;p&gt;push 2개(4byte) -&amp;gt; EsP+10 + 8 = ESP+18 콜부분에 있더라구요 &lt;br  /&gt;&lt;/p&gt;
&lt;p&gt;01002621&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; E8 12120100&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL calc.01013838&lt;br  /&gt;01002626&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;br  /&gt;01002627&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;br  /&gt;01002628&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;br  /&gt;01002629&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;br  /&gt;0100262A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;br  /&gt;0100262B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;br  /&gt;0100262C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;br  /&gt;0100262D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;/p&gt;
&lt;p&gt;01013838&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FF7424 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH DWORD PTR SS:[ESP+14] //스택의 숫자 출력값&lt;br  /&gt;0101383C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8BF8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV EDI,EAX&lt;br  /&gt;0101383E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 56&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH ESI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Class=&apos;Edit&apos;의 핸들&lt;br  /&gt;0101383F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FF15 10110001&amp;nbsp; CALL DWORD PTR DS:[1001110]&amp;nbsp; USER32.SetWindowTextW //원래되로 출력후&lt;br  /&gt;01013845&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6A 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH 0&amp;nbsp; //메시지박스 스타일 확인버튼만&lt;br  /&gt;01013847&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 68 10390101&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH calc.01013910&amp;nbsp; //메시지박스 타이틀(ASCII로하면안됨 유니코드로..)&lt;br  /&gt;0101384C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FF7424 20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH DWORD PTR SS:[ESP+1C] //위의 숫자 출력값&lt;br  /&gt;01013850&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6A 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH 0&amp;nbsp; //핸들 NULL&lt;br  /&gt;01013852&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FF15 A8110001&amp;nbsp; CALL DWORD PTR DS:[10011A8];&amp;nbsp; USER32.MessageBoxW //메시지박스 출력&lt;br  /&gt;01013858&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETN // 복귀&lt;br  /&gt;01013859&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOP&lt;/p&gt;
&lt;p&gt;계산기의 숫자를 입력할떄마다 메시지를 뛰었습니다.숫자값과같이..&lt;br  /&gt;&lt;br  /&gt;공부하면서 궁금증&lt;br  /&gt;다른프로그램들은 주로 400100 이런식으로 4로 시작하는데&lt;br  /&gt;왜 calc.exe프로그램은 주소가 01012475이런식으로 시작하는지 궁금합니다.&lt;br  /&gt;스택도 0007FFE0이런식으로 시작하는지 궁금합니다. 주로 다른스택도 13FFC4이런식으로 &lt;br  /&gt;13으로 시작하는데 궁금하다..&lt;br  /&gt;&lt;br  /&gt;답: 일반적인 EXE파일의 ImageBase는 400000 이라는데 그건 개발도구에서 그렇게 세팅해서 란다 사용자가 원하면 고칠수도&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 있단다. 그리고 PE Header에 보면 스택의 시작위치가 명시되어 있지않다고 한다. (크기만 명시되어있다고한다)&lt;br  /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PE Loader에 스택 주소가 결정되는 알고리즘이 있다고한다.. &lt;br  /&gt;&lt;br  /&gt;예전의 공부한 내용입니다. :D&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>MFC프로그램(스도쿠 만져보기 : 깔짝..)</title>
      <id>http://www.coolsoft2.com/897414</id>
      <published>2009-11-17T10:40:08+09:00</published>
      <updated>2010-08-20T13:13:18+09:00</updated>
      <link rel="alternate" type="text/html" href="http://www.coolsoft2.com/897414"/>
      <link rel="replies" type="text/html" href="http://www.coolsoft2.com/897414#comment"/>
      <author>
         <name>Pdmin</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;img src=&quot;http://pds5.egloos.com/pds/200703/07/95/d0043695_10030349.jpg&quot; /&gt;
MFC라서 올딕벅으로 열어보면 &lt;br  /&gt;00406D3E&amp;nbsp;&amp;nbsp; $- FF25 E4814000 JMP DWORD PTR DS:[&amp;lt;&amp;amp;MFC42.#6215&amp;gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; MFC42.#6215&lt;br  /&gt;00406D44&amp;nbsp;&amp;nbsp; $- FF25 E8814000 JMP DWORD PTR DS:[&amp;lt;&amp;amp;MFC42.#3089&amp;gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; MFC42.#3089&lt;br  /&gt;00406D4A&amp;nbsp;&amp;nbsp; $- FF25 EC814000 JMP DWORD PTR DS:[&amp;lt;&amp;amp;MFC42.#1146&amp;gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&amp;nbsp; MFC42.#1146
&lt;p&gt;이런식으로 암호화된것처럼 되있다...&lt;br  /&gt;정답 체크를 누루면 가로,세로,9칸&amp;nbsp; 확인절차후 메시지박스를 뛰운다.&lt;br  /&gt;여기서 메시지박스를 브레이크포인트하고싶다. 3가지방법이있습니다.&lt;br  /&gt;&lt;br  /&gt;MFC메시지박스 bp걸기&lt;br  /&gt;1. 모든 MFC42#OOOO의 브레이크를겁니다.(비효율적인 방법인데 제가 처음에 그랬습니다.)&lt;br  /&gt;2. 스도쿠 프로그램의 메시지박스 갯수를 샌다 그후 메시지박스가 4개일경우&amp;nbsp;MFC42.#1200 호출부분이 4군대 있을것이다 추측 후 브레이크&lt;br  /&gt;3. MFC42.dll의 가서 Messagebox검색후 브포 그후 역으로 리턴어드레스를 보며 원래 처음 호출한곳으로 간다&lt;br  /&gt;저는 3번을 써서 이 프로그램의 메시지박스주소는&lt;br  /&gt;&lt;br  /&gt;00405FF7&amp;nbsp;&amp;nbsp; .&amp;nbsp; E8 3C0D0000&amp;nbsp;&amp;nbsp; CALL &amp;lt;JMP.&amp;amp;MFC42.#4224&amp;gt; 이주소가 MessageBox주소였습니다. 함수목록에도 4개정도있었구요 &lt;br  /&gt;&lt;br  /&gt;00405FE0&amp;nbsp;&amp;nbsp; .&amp;nbsp; 56&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH ESI&lt;br  /&gt;00405FE1&amp;nbsp;&amp;nbsp; .&amp;nbsp; 8BF1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV ESI,ECX &lt;br  /&gt;00405FE3&amp;nbsp;&amp;nbsp; .&amp;nbsp; E8 28000000&amp;nbsp;&amp;nbsp; CALL SuDoKoon.00406010 //정답맞는지 확인 루틴&lt;br  /&gt;00405FE8&amp;nbsp;&amp;nbsp; .&amp;nbsp; 85C0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST EAX,EAX //EAX가 0인가? (정답이아닐경우 EAX=FFFFFFFF임)&lt;br  /&gt;00405FEA&amp;nbsp;&amp;nbsp; .&amp;nbsp; 6A 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH 0&lt;br  /&gt;00405FEC&amp;nbsp;&amp;nbsp; .&amp;nbsp; 6A 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH 0&lt;br  /&gt;&lt;font style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=&quot;#e31600&quot;&gt;00405FEE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 75 0E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JNZ SHORT SuDoKoon.00405FFE // EAX값이 0이 아니면 점프 &lt;/font&gt;&lt;br  /&gt;00405FF0&amp;nbsp;&amp;nbsp; .&amp;nbsp; 68 C8B64000&amp;nbsp;&amp;nbsp; PUSH SuDoKoon.0040B6C8&lt;br  /&gt;00405FF5&amp;nbsp;&amp;nbsp; .&amp;nbsp; 8BCE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV ECX,ESI&lt;br  /&gt;&lt;font color=&quot;#3058d2&quot;&gt;00405FF7&amp;nbsp;&amp;nbsp; .&amp;nbsp; E8 3C0D0000&amp;nbsp;&amp;nbsp; CALL &amp;lt;JMP.&amp;amp;MFC42.#4224&amp;gt;&amp;nbsp; (정답입니다 메시지박스 루틴)&lt;/font&gt;&lt;br  /&gt;00405FFC&amp;nbsp;&amp;nbsp; .&amp;nbsp; 5E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; POP ESI&lt;br  /&gt;00405FFD&amp;nbsp;&amp;nbsp; .&amp;nbsp; C3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETN&lt;br  /&gt;00405FFE&amp;nbsp;&amp;nbsp; &amp;gt;&amp;nbsp; 68 BCB64000&amp;nbsp;&amp;nbsp; PUSH SuDoKoon.0040B6BC&lt;br  /&gt;00406003&amp;nbsp;&amp;nbsp; .&amp;nbsp; 8BCE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV ECX,ESI&lt;br  /&gt;&lt;font color=&quot;#5fb636&quot;&gt;00406005&amp;nbsp;&amp;nbsp; .&amp;nbsp; E8 2E0D0000&amp;nbsp;&amp;nbsp; CALL &amp;lt;JMP.&amp;amp;MFC42.#4224&amp;gt;&amp;nbsp;&amp;nbsp; (오답입니다 메시지박스 루틴)&lt;/font&gt;&lt;br  /&gt;0040600A&amp;nbsp;&amp;nbsp; .&amp;nbsp; 5E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; POP ESI&lt;br  /&gt;0040600B&amp;nbsp;&amp;nbsp; .&amp;nbsp; C3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETN&lt;br  /&gt;&lt;br  /&gt;&lt;font style=&quot;BACKGROUND-COLOR: #000000&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;font size=&quot;+0&quot;&gt;405FEE부분을 nop해주면 정답 메시지가뜨는군요..&lt;/font&gt;&lt;br  /&gt;&lt;/font&gt;&lt;/font&gt;&lt;br  /&gt;다음엔 정답확인 루틴이 어떤식으로 진행되는지 살펴봐야겠습니다.&lt;br  /&gt;&lt;br  /&gt;요번엔 글작성하는데 칼라를 넣었습니다. 칼라기능이있는줄 몰랐거든요 --;;&lt;br  /&gt;&lt;br  /&gt;MFC프로그램의대한 좋은공부였습니다.:D&lt;br  /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
</feed> 

