<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title type="text">심플스(Simples.Kr) - RSS</title>
      <subtitle type="html">심플스(Simples.Kr) - RSS</subtitle>
      <updated>2012-02-05T21:47:49+09:00</updated>
   <id>http://simples.kr/index.php?module=rss&amp;act=atom</id>
   <link rel="alternate" type="text/html" hreflang="ko" href="http://www.simples.kr/"/>
   <link rel="self" type="application/atom+xml" href="http://simples.kr/index.php?module=rss&amp;act=atom"/>
   <generator uri="http://www.xpressengine.com/" version="1.4.5.10">XpressEngine</generator>
   <entry>
      <title>dll injection, 루아</title>
      <id>http://simples.kr/42591</id>
      <published>2011-12-16T05:22:13+09:00</published>
      <updated>2011-12-16T10:52:47+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/42591"/>
      <link rel="replies" type="text/html" href="http://simples.kr/42591#comment"/>
      <author>
         <name>link9</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;이전에 이곳사이트에서 나디아님이 제작하신&lt;/p&gt;
&lt;p&gt;루아로 만든 dll injection 라이브러리?&lt;/p&gt;
&lt;p&gt;소스를 받아본적이 있었는데&lt;/p&gt;
&lt;p&gt;다시 볼 수 없을까요~ ㅜㅜ&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>Hex에디터의 일괄 변경 궁금합니다</title>
      <id>http://simples.kr/42279</id>
      <published>2011-12-05T11:51:16+09:00</published>
      <updated>2011-12-05T22:36:41+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/42279"/>
      <link rel="replies" type="text/html" href="http://simples.kr/42279#comment"/>
      <author>
         <name>밥도둑</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;아래 있는 Hex의 앞부분을 이용해서 특정 부분을 바꾸고싶습니다.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(255, 239, 0); &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(255, 239, 0); &quot;&gt;01 02 03&lt;/span&gt;&amp;nbsp;14 05 00 00 46 00 AC 0D 00 00 00 00 &lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;C0 3F&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt; 00 00 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;03&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt; 00 &lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;FF&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(255, 239, 0); &quot;&gt;찾는부분&lt;/span&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; &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;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;변경부분&lt;/span&gt; &amp;nbsp;↑&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;앞의 찾는부분&amp;nbsp;&lt;span style=&quot;background-color: rgb(255, 239, 0); &quot;&gt;01 02 03&lt;/span&gt;을 찾아서 &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;14 05 00 00 46 00 AC 0D 00 00 00 00&amp;nbsp;&amp;nbsp;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;C0 3F&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;&amp;nbsp;00 00&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;03&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;&amp;nbsp;00&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;FF&lt;/span&gt;&amp;nbsp;은 다른 600여개가 다른값입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;여기서&amp;nbsp;14 05 00 00 46 00 AC 0D 00 00 00 00 부분은 변경하지않고&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;C0 3F&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;&amp;nbsp;00 00&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;03&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;&amp;nbsp;00&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;FF&lt;/span&gt;&amp;nbsp;부분만 일괄적으로 수정하고싶습니다.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: rgb(255, 239, 0); &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;예)&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table style=&quot;background:#CCCCCC&quot; cellspacing=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;&amp;nbsp;Find&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&amp;nbsp;&lt;span style=&quot;background-color: rgb(255, 239, 0); &quot;&gt;01 02 03&lt;/span&gt;&amp;nbsp;?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??&amp;nbsp;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;C0 3F&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;&amp;nbsp;00 00&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;03&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;&amp;nbsp;00&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0); color: rgb(255, 255, 255); &quot;&gt;FF&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background:#FFFFFF&quot;&gt;&lt;td&gt;&lt;p&gt;&amp;nbsp;Replace&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&amp;nbsp;&lt;span style=&quot;background-color: rgb(255, 239, 0); &quot;&gt;01 02 03&lt;/span&gt;&amp;nbsp;?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??&amp;nbsp;&lt;span style=&quot;background-color: rgb(0, 0, 255); color: rgb(255, 255, 255); &quot;&gt;FF FF 00 00 FF 00 00&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;이런식으로 일괄 수정하고싶습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 울트라에디터와 010에디터로 와일드문자를 ##,??,** 으로 해본결과&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아예 찾지 못하던가 Replace 값 오류라고 뜹니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위 처럼 수정하는방법이 있을까요?&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>iOS5에서 잠금화면에서 알림메시지 온 앱으로 바로 이동하기</title>
      <id>http://simples.kr/41855</id>
      <published>2011-11-11T15:49:18+09:00</published>
      <updated>2011-11-11T15:49:18+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41855"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41855#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;iOS5에서는 잠금화면이라도 알림메시지가 오면&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;간략하게 앱의 아이콘과 요약된 메시지가 목록으로 나열이 되는데요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그 앱으로 바로 이동을 하고 싶을 경우에는 그 앱 아이콘을 우측으로 드래그해서 밀면&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;앱이 바로 실행됩니다. 참 편리하네요.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>운영자님, 문의사항입니다.</title>
      <id>http://simples.kr/41846</id>
      <published>2011-11-11T14:15:56+09:00</published>
      <updated>2011-11-11T14:38:04+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41846"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41846#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;br /&gt;이번에 삼성전자에서 주최하는 바다 2.0 파워 앱 레이스란 공모전이 진행 중입니다.&lt;br /&gt;bada 2.0 런칭을 기념하여 진행되는 글로벌 모바일 어플리케이션 공모전으로, bada 2.0 어플리케이션 중 Samsung Apps 에서 가장 먼저 10만 다운로드를 달성하는 어플리케이션에게 1억 원의 상금을 지급&lt;br /&gt;(선착순 총 10개의 어플리케이션, 각 1억 원)&lt;br /&gt;유능하신 많은 국내 개발자 분들이 참여 하실 수있게 공모전 내용을&lt;br /&gt;해당 커뮤니티에 기재해도 되는지 확인 부탁 드리며&lt;br /&gt;외부인이 올리는 부분에있어 문제가 있다면 공모전 내용을 파일로 전달 드리면&lt;br /&gt;기재를 해주실 수있는지 확인 부탁 드립니다.&lt;/p&gt;
&lt;p&gt;운영자님 연락처를 남겨 주시면&amp;nbsp; &lt;br /&gt;궁금하신 부분이나 자세한 내용을 다시 말씀 드리겠습니다.&lt;/p&gt;
&lt;p&gt;감사합니다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>캘린더 앱에서 일정 바로 추가하기</title>
      <id>http://simples.kr/41841</id>
      <published>2011-11-11T11:13:52+09:00</published>
      <updated>2011-11-11T11:13:52+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41841"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41841#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;날짜를 길게 누르고 있으면 바로 그 날짜에 일정을 추가할 수 있게 되었네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;갈수록 인터페이스가 상식적이면서도 심플하고 멋지게 변하네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;미리알림 기능도 좋긴한데 아직까진 캘린더만 써도 충분하네요.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>아이폰 음성명령으로 전화 걸기</title>
      <id>http://simples.kr/41832</id>
      <published>2011-11-10T15:31:46+09:00</published>
      <updated>2011-11-10T15:31:46+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41832"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41832#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;예전부터 홈버튼을 길게 누르고 있으면 음성명령이라고 나타나는데,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;전화걸려고 이름을 이야기 해도 잘 안될때가 있는데요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;연락처의 이름 부분이 잘 못적어져있거나 초성검색을 위해서 별명 필드에다가 ㄱㄴㄷㄹ 같은 식으로 문자가 들어가 있을 경우 인식이 안됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;별명을 먼저 검색을 하다보니 그런일이 발생한 것으로 보입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;정확하게 들어갔는지 확인하고 하면 음성으로 전화걸 수 있을 것 같습니다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>아이폰 문자앱에서 키패드 내리기</title>
      <id>http://simples.kr/41830</id>
      <published>2011-11-10T15:26:00+09:00</published>
      <updated>2011-11-10T15:26:00+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41830"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41830#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;문자를 확인할 때에 키보드가 올라가면 문자가 길면 전체적으로 확인이 안되서 불편했는데요.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;아마 기존엔 문자내용을 터치해서 봤지만, 이번부터는&amp;nbsp;키보드위의 화면빈곳을 터치해서 아래로 이동하면 바로 키보드가 내려가네요.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;점점 세세한 부분을 수정해줘서 편리하네요.&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>iOS5에서 앨범추가 하는 기능</title>
      <id>http://simples.kr/41828</id>
      <published>2011-11-10T15:21:22+09:00</published>
      <updated>2011-11-10T15:21:22+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41828"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41828#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;기존에도 노래재생목록이 추가안되다가 폰에서 바로 추가되서 정말 편리하다고 느꼈는데,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이번 iOS5에서는 사진 앨범을 폰에서 바로 추가할 수 있는 기능이 추가되었네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;정말 당연한거 같은 기능이 없어서 불편했는데 좋네요~&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>iOS5 사파리에서 복사방지 된 웹페이지 복사가 안될때</title>
      <id>http://simples.kr/41826</id>
      <published>2011-11-10T15:17:41+09:00</published>
      <updated>2011-11-10T15:17:41+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41826"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41826#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;iOS4까지는 언제든 글자를 한번 꾹 누르면 복사메뉴 떴지만,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;iOS5에선 복사방지가 없는 경우는 동일하게 되는데,&amp;nbsp;&lt;/div&gt;&lt;div&gt;복사방지가 되어있는 사이트는 &quot;더블탭으로 꾹 누르기&quot;를 하면 됩니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;아니면 귀찮으면 그냥 전원버튼과 홈버튼을 동시에 눌러 캡쳐를 해서 이미지로 저장하는 것도 좋습니다.&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>ios5 아이폰 카메라 새로운 팁</title>
      <id>http://simples.kr/41824</id>
      <published>2011-11-10T15:13:52+09:00</published>
      <updated>2011-11-10T15:13:52+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41824"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41824#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;iOS5부터는 카메라 어플에서 화면을 2~3초이상 터치후 떼어내면&amp;nbsp;AE/AF(&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 굴림, Gulim, AppleGothic; line-height: 19px; &quot;&gt;노출/초점)을 고정&lt;/span&gt;이 되네요.&lt;/div&gt;&lt;div&gt;&lt;br /&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;</content>
                  
   </entry>
   <entry>
      <title>iOS5 아이폰 알림 바로 사라지게 하는 법</title>
      <id>http://simples.kr/41820</id>
      <published>2011-11-10T15:00:12+09:00</published>
      <updated>2011-11-10T15:00:12+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41820"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41820#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;iOS5 로 업데이트를 한 후에 문자메시지, 트위터와 같은 기능에서 새로운 글이 들어오면 푸시로 배너알림이 됩니다.&lt;/div&gt;&lt;div&gt;&lt;br /&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;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>아이폰 ios5 진동 커스터마이징</title>
      <id>http://simples.kr/41818</id>
      <published>2011-11-10T14:55:28+09:00</published>
      <updated>2011-11-10T14:55:28+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41818"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41818#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;iOS5에서는 다양하게 진동설정을 할 수 있는데요.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; 설정-일반-순쉬운사용-진동사용자화를 켜고,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&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;</content>
                  
   </entry>
   <entry>
      <title>imessage 사용중, 실패한 문자 일반문자로 바로 보내기</title>
      <id>http://simples.kr/41816</id>
      <published>2011-11-10T14:29:07+09:00</published>
      <updated>2011-11-10T14:29:07+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41816"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41816#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;imessage로 전송이 되면 전송됨이라고 뜨는데,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;가끔 전송이 지연되고 있는 경우에는 전송됨이란 표시가 안떠서 당황하게 됩니다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&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;</content>
                  
   </entry>
   <entry>
      <title>크롬,사파리,파이어폭스의 숨겨진 키워드</title>
      <id>http://simples.kr/41754</id>
      <published>2011-11-08T10:58:46+09:00</published>
      <updated>2011-11-08T10:58:46+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41754"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41754#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;크롬,사파리,파이어폭스 구글검색창에&amp;nbsp;&lt;/div&gt;&lt;div&gt;do a barrel roll 이나 tilt 을 입력하면 재미난 모습이 나타나네요.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;귀찮으면 링크 클릭&lt;/div&gt;&lt;div&gt;&lt;div&gt;http://www.google.co.kr/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=do+a+barrel+roll&lt;/div&gt;&lt;div&gt;http://www.google.co.kr/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=tilt&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>아이패드2 iOS5의 신규로 생긴 편리한 터치기능</title>
      <id>http://simples.kr/41752</id>
      <published>2011-11-08T10:56:10+09:00</published>
      <updated>2011-11-08T10:56:10+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41752"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41752#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;div&gt;의외로 아이패드에서 4손가락 터치와 5손가락 터치로 하는 기능 동작이 편리한데,&amp;nbsp;&lt;/div&gt;&lt;div&gt;주변에 모르는 사람들이 많네요.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4손가락으로 좌로 쓸면 : 이전에 실행 앱으로 이동&lt;/div&gt;&lt;div&gt;5손가락을 가운데로 모으면 : 앱 종료 (홈버튼)&lt;/div&gt;&lt;div&gt;4손가락 위로 쓸면 : 홈버튼 더블클릭한 것 처럼 실행중인 앱 목록 나타남&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>닷넷 리버싱 질문 드립니다.</title>
      <id>http://simples.kr/41011</id>
      <published>2011-10-06T19:45:56+09:00</published>
      <updated>2011-10-06T19:45:56+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/41011"/>
      <link rel="replies" type="text/html" href="http://simples.kr/41011#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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;nop 등등 어셈은 msdn 찾으면 아오는데....&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;영문이나 숫자등을 제가 원하는 걸로 hex 편집 할려고 하는데&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;ㅠㅠ ida 에서 바로 편집되고 저장되면 좋으련만 안되네요 ㅠ&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://simples.kr/40503</id>
      <published>2011-09-07T10:17:59+09:00</published>
      <updated>2011-09-07T15:43:35+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/40503"/>
      <link rel="replies" type="text/html" href="http://simples.kr/40503#comment"/>
      <author>
         <name>sksqjcnsdnl</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://learn2crack.com&quot;&gt;http://learn2crack.com&lt;/a&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>ollydbg 에서 브레이크 포인트 해제에 대해서</title>
      <id>http://simples.kr/40425</id>
      <published>2011-08-31T22:45:24+09:00</published>
      <updated>2011-09-01T09:43:05+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/40425"/>
      <link rel="replies" type="text/html" href="http://simples.kr/40425#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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;우클릭 - breakpoint - hardware, write 부분에 걸었는데 해제는 어떻게 해요? 같은 위치에 remove 도 안뜨고... 왜 이러죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;breakpoint 윈도우에 들어가도 표시도 안나고... 좀 도와주세요 ~~&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>리버스 엔지니어링</title>
      <id>http://simples.kr/40140</id>
      <published>2011-08-12T19:06:26+09:00</published>
      <updated>2011-08-26T05:44:09+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/40140"/>
      <link rel="replies" type="text/html" href="http://simples.kr/40140#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;제가 프로그래밍 언어도 모르고 백지장 상태라고 보셔도 무방한데...&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>32비트 OS용 드라이버를 64비트 OS용으로 변경(개발) 가능한가요?</title>
      <id>http://simples.kr/39432</id>
      <published>2011-07-07T12:18:10+09:00</published>
      <updated>2011-07-07T19:01:06+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/39432"/>
      <link rel="replies" type="text/html" href="http://simples.kr/39432#comment"/>
      <author>
         <name>benkeii</name>
               </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;제가 Roland라는 전자악기 회사에서 나온 RS-70이란 키보드(신디사이저)를 사용중인데 윈XP(32비트)용 드라이버는 있습니다만&lt;/p&gt;
&lt;p&gt;윈7 64비트용 드라이버가 없습니다. 제조회사에 문의해봐도 더이상 RS-70을 지원할 수 없다는 얘기만 하네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;제가 개발하고 싶은 드라이버는 RS-70 키보드에 달린 USB단자와 컴퓨터의 USB단자를 연결하는&amp;nbsp;MIDI 신호 송수신 드라이버입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;제가&amp;nbsp;가지고 있는 것은 RS-70용 윈XP용 드라이버와 같은 회사의 다른 키보드의 윈7 64비트용 드라이버입니다.&lt;/p&gt;
&lt;p&gt;Roland에서 제공된 윈XP 드라이버나 윈7 64비트 드라이버는 모두 DLL, CPL, SYS, INF 등으로 파일도 몇개 되지 않습니다.&lt;/p&gt;
&lt;p&gt;사실 제가 다른 키보드의 윈7 64비트 드라이버의 INF 파일을 보고 참고해서 RS-70의 XP용 드라이버를 이것저것 수정해서&lt;/p&gt;
&lt;p&gt;셋업을 실행하니 설치가 거의 되는데 성공했지만 마지막에 &quot;이 플랫폼에서 사용할 수 없습니다&quot;라는 메시지가 나와 막혀버렸습니다.&lt;/p&gt;
&lt;p&gt;INF 파일 수정전까진 아예 설치조차 안됐었고요. 이 두가지 드라이버를&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;Unvalid PE File 이라고 나오네요. 이건 무슨 의미인지 모르겠네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;윈도7 64비트 드라이버가 제공되는 신형의 키보드를 구입할 여건은 안되고 또 예전부터 쭉 사용해오던 손에 익은 정이 많이 든 RS-70을&lt;/p&gt;
&lt;p&gt;썩히자니 아깝다는 생각도 들었습니다. 그래서&amp;nbsp;윈7 64비트용 드라이버를 만들어서라도 계속 사용하고 싶은데 좋은 방법이 없을런지요?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 혹 이 64비트 드라이버 개발건을 프로그래머에게 의뢰한다면 개발비는 얼마정도가 적당한지, 프로그래머가 많이 활동하는 사이트는 어딘지도 알고싶습니다.&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;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>Social Engneering (사회공학)에 대해.</title>
      <id>http://simples.kr/39352</id>
      <published>2011-07-04T02:11:02+09:00</published>
      <updated>2011-07-04T23:55:57+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/39352"/>
      <link rel="replies" type="text/html" href="http://simples.kr/39352#comment"/>
      <author>
         <name>$t@r3$</name>
                  <uri>http://www.stares.co.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;홈페이지를 초창기 운영할 때에, 한번의 실수로 중요한 회원이 자진탈퇴하고 나간적이 있습니다. 그 이유는 Social Engneering 비슷한 관계가 있었기 때문입니다.&lt;br /&gt;
&lt;br /&gt;
과연 Social Engneering 이란것은 무엇일까요??&lt;br /&gt;
아래설명을 보시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;컴퓨터 보안에서 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차 단. 우선 통신망 보안 정보에 접근 권한이 있는 담당자와 신뢰를 쌓고 전화나 이메일을 통 는 것이다. 상대방의 자만심이나 권한을 이용하는 것, 정보의 가치를 몰라서 보안을 소홀 청 등이 일반적인 사회 공학적 기술이다. 이 수단을 이용하여 시스템 접근 코드와 비밀번 으로 물리적, 네트워크 및 시스템 보안에 못지 않게 인간적 보안이 중요하다.&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이와같은 내용입니다. 필자가 겪었던 사건은 당시 호스팅서버에서 다른 호스팅 홈페이지가 과도한트래픽 발생으로 인해 강제삭제처리된다는 내용을 제 홈페이지에 있는 회원에게 전해달라 했고 저는 그 회원이 당사자가 맞는가 확인을 위해 여러가지를 묻다가 그사람이 Social Engneering 이라 생각하고 탈퇴했습니다.&lt;br /&gt;
&lt;br /&gt;
그 이후로 그것이 무엇인지 알아보고 다시는 이런 오해를 일으킬만한 일이 없도록 하기위해 조심조심 생활을 했습니다.&lt;br /&gt;
&lt;br /&gt;
여러분, 과연 여러분들은 이 내용에 대해 어찌 생각하시나요?? 공감가는 부분이 있으신가요?&lt;br /&gt;
Social Engneering 은 당장은 득이더라도 미래는 손해랍니다.&lt;br /&gt;
&lt;br /&gt;
혹시라도 지금 그러고있는분이 계시다면 진지하게 고민을 해보는것이 어떨까 싶습니다.&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>SCSI Miniport - IOCTL_SCSI_PASS_THROUGH_DIRECT ( Windows XP 64Bit, Windows 2003 Server 64Bit 버그 수정 )</title>
      <id>http://simples.kr/38951</id>
      <published>2011-06-11T10:27:09+09:00</published>
      <updated>2011-06-11T10:33:24+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38951"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38951#comment"/>
      <author>
         <name>lain</name>
                  <uri>http://lain32.egloos.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;/////////////////////////////////////////////////////////////////&lt;br /&gt;/////////////////////////////////////////////////////////////////&lt;br /&gt;&lt;br /&gt;// Windows Vista 64Bit 미만에 운영체제에서 ( Windows XP 64Bit, Windows 2003 Server 64Bit )&lt;br /&gt;// 32Bit 프로세스에서 IOCTL_SCSI_PASS_THROUGH_DIRECT 를 내릴 때 DeviceIoControl이 실패하게 되는데 이러한 문제점을 &lt;br /&gt;// 하드코딩하여 수정하는 코드입니다.&lt;br /&gt;//&lt;br /&gt;// 정확하게 말하자면 실패 위치는.. WinDbg로 디버깅을 하면서 차례대로 내려갔을 때..&lt;br /&gt;//&lt;br /&gt;// fffffadf`f543f48c e80ffaffff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; SCSIPORT!SpHandleIoctlScsiPassThrough (fffffadf`f543eea0)&lt;br /&gt;//&lt;br /&gt;// SCSIPORT!SpHandleIoctlScsiPassThrough:&lt;br /&gt;// fffffadf`f543eea0 4883ec28&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rsp,28h&lt;br /&gt;// fffffadf`f543eea4 48895c2438&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qword ptr [rsp+38h],rbx&lt;br /&gt;// fffffadf`f543eea9 4889742440&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qword ptr [rsp+40h],rsi&lt;br /&gt;// fffffadf`f543eeae 488bf1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rsi,rcx&lt;br /&gt;// fffffadf`f543eeb1 488b4940&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rcx,qword ptr [rcx+40h]&lt;br /&gt;// fffffadf`f543eeb5 48897c2448&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qword ptr [rsp+48h],rdi&lt;br /&gt;// fffffadf`f543eeba 488bfa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rdi,rdx&lt;br /&gt;// fffffadf`f543eebd e84e0b0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; SCSIPORT!SpSendPassThrough (fffffadf`f543fa10) &amp;lt;= 에러 발생위치&lt;br /&gt;//&lt;br /&gt;// fffffadf`f543fae2 e869720000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; SCSIPORT!PortSendPassThrough (fffffadf`f5446d50) &amp;lt; = 여기서 에러남&lt;br /&gt;//&lt;br /&gt;// fffffadf`f5446e8a e8a1000000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; SCSIPORT!PortPassThroughInitialize (fffffadf`f5446f30) &amp;lt;= 여기서 에러남&lt;br /&gt;//&lt;br /&gt;// SCSIPORT!PortPassThroughInitialize 함수내부에서&lt;br /&gt;// fffffadf`f5447151 3b4d08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx,dword ptr [rbp+8] ss:0018:fffffadf`f6ea0b6c=00000001&lt;br /&gt;// 다음과 같이 값을 비교하게 되는데 dword ptr [rbp+8] ss:0018:fffffadf`f6ea0b6c 에 값이 0x01이어서 조건문에 의해 에러가 발생하게 됩니다.&lt;br /&gt;//&lt;br /&gt;// 클론시디에 경우에는&lt;br /&gt;/*&lt;br /&gt;.text:0000000000011CC7&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; call&amp;nbsp;&amp;nbsp;&amp;nbsp; sub_16200&lt;br /&gt;.text:0000000000011CCC&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; lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rcx, [rsp+1D8h+var_158]&lt;br /&gt;.text:0000000000011CD4&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; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [rsp+1D8h+var_158], r12d&lt;br /&gt;.text:0000000000011CDC&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; call&amp;nbsp;&amp;nbsp;&amp;nbsp; cs:RtlGetVersion &amp;lt;= 버전을 비교하는 함수를 호출..&lt;br /&gt;.text:0000000000011CE2&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; cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, r15d&lt;br /&gt;.text:0000000000011CE5&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; jl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; short loc_11CF1&lt;br /&gt;.text:0000000000011CE7&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; cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [rsp+1D8h+var_154], 6 &amp;lt;= 6이라는 값을 비교하는걸 보니 dwMajorVersion와 비교할 가능성이 매우 높습니다.&lt;br /&gt;.text:0000000000011CEF&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; jnb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; short loc_11D0D // 부호 없는 데이터, 작지 않을 때&lt;br /&gt;.text:0000000000011CF1&lt;br /&gt;.text:0000000000011CF1 loc_11CF1:&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; ; CODE XREF: HwFindAdapter+F1j &amp;lt;= 작으면 이곳이 호출됩니다.&lt;br /&gt;.text:0000000000011CF1&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; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rax, [rbx+148h]&lt;br /&gt;.text:0000000000011CF8&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; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cs:qword_1A230, rax&lt;br /&gt;.text:0000000000011CFF&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; lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rax, SetHalGetAdapter &amp;lt;= 그리고 SetHalGetAdapter 에 주소를 넣습니다.&lt;br /&gt;.text:0000000000011D06&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; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [rbx+148h], rax&lt;br /&gt;.text:0000000000011D0D loc_11D0D:&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; ; CODE XREF: HwFindAdapter+FBj&lt;br /&gt;.text:0000000000011D0D&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; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, cs:dword_1A238&lt;br /&gt;.text:0000000000011D13&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; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [rsi+17F8h], eax&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;// 위에 코드가 실행 된 후에 HalGetAdapter 함수를 SCSIPort 내부에서 클론시디 드라이버에 있는 HalGetAdapter를 호출하게 되는데 어떻게 해서 그렇게 했는지 모르겠습니다.&lt;br /&gt;// 중요한것은 저렇게 루틴을 탔을 경우에만 IOCTL_SCSI_PASS_THROUGH_DIRECT가 전송이 되고 그렇지 않으면 전송이 되지 않습니다.&lt;br /&gt;//&lt;br /&gt;// dword ptr [rbp+8] ss:0018:fffffadf`f6ea0b6c &amp;lt;= 해당 주소를 조사한 결과&lt;br /&gt;// (UCHAR *)(g_pDriverObject-&amp;gt;DeviceObject-&amp;gt;DeviceExtension) + 0x3EC 위치에 값이 있었습니다.&lt;br /&gt;// 비교는 ecx 레지스터와 비교를 하게 되므로 32Bit 값일것입니다.&lt;br /&gt;// &lt;br /&gt;/////////////////////////////////////////////////////////////////&lt;br /&gt;/////////////////////////////////////////////////////////////////&lt;br /&gt;&lt;br /&gt;#define HACK_IOCTL_SCSI_PASS_THROUGH_DIRECT_OFFSET 0x3EC&lt;br /&gt;&lt;br /&gt;PVOID g_HackDeviceExtensionPointer = NULL;&lt;br /&gt;&lt;br /&gt;VOID Hack64BitIOCTL_SCSI_PASS_THROUGH_DIRECT()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (g_HackDeviceExtensionPointer != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;KdPrint((&quot;H.A.C.K IOCTL_SCSI_PASS_THROUGH_DIRECT\n&quot;));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(DWORD *)(((UCHAR *)g_HackDeviceExtensionPointer + HACK_IOCTL_SCSI_PASS_THROUGH_DIRECT_OFFSET)) = 0x00000011;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;VOID InitHack64BitIOCTL_SCSI_PASS_THROUGH_DIRECT(PDRIVER_OBJECT pDriverObject)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NTSTATUS ntStatus;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;RTL_OSVERSIONINFOW rtlOsVersionInfoW;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ntStatus = RtlGetVersion(&amp;amp;rtlOsVersionInfoW);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (NT_SUCCESS(ntStatus) == TRUE)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (rtlOsVersionInfoW.dwMajorVersion &amp;lt; 6)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;g_HackDeviceExtensionPointer = pDriverObject-&amp;gt;DeviceObject-&amp;gt;DeviceExtension;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;NOTHING&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;InitHack64BitIOCTL_SCSI_PASS_THROUGH_DIRECT 함수에 인자 pDriverObject는 DriverEntry에서 받은 DriverObject를 넣으면 되며, HwFindAdapter에서 호출되어야 합니다.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>커널레벨에서 IAT Hook</title>
      <id>http://simples.kr/38946</id>
      <published>2011-06-11T10:13:10+09:00</published>
      <updated>2011-06-11T10:13:10+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38946"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38946#comment"/>
      <author>
         <name>lain</name>
                  <uri>http://lain32.egloos.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;오래전에 작업하고 더 이상 쓰지 않고 놔뒹굴고 있어서 이곳에 정리합니다.&lt;/p&gt;&lt;p&gt;32Bit, 64Bit 둘 다 정상적으로 동작합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;물론 64Bit에서는 패치가드가 보호하는 모듈은 후킹을 시도하지 말아야겠죠.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;후킹하려는 대상 모듈이 scsiport.sys이고 이 모듈이 ntoskrnl!IoCreateSymbolicLink 함수를 호출하는 것을&lt;/p&gt;&lt;p&gt;모두 후킹하고 싶다면 다음과 같이 코드를 작성합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;#define SCSIPORT_SYS_FILEPATH L&quot;\\SystemRoot\\System32\\drivers\\scsiport.sys&quot;&lt;br /&gt;#define SCSIPORT_SYS_FILENAME &quot;ScsiPort.sys&quot;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;PVOID pScsiPortImageAddress;&lt;br /&gt;&lt;br /&gt;ULONG uIoCreateSymbolicLinkRVA;&lt;br /&gt;ULONG uImageSize;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 전체 파일경로로부터 특정 모듈에 대한 IAT 함수(IoCreateSymbolicLink) RVA를 가져옵니다.&lt;br /&gt;uIoCreateSymbolicLinkRVA = IATFunctionRVAFromFile(SCSIPORT_SYS_FILEPATH, &quot;ntoskrnl&quot;, &quot;IoCreateSymbolicLink&quot;);&lt;br /&gt;if (uIoCreateSymbolicLinkRVA == 0)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;KdPrint((&quot;HookIoCreateSymbolicLinkHookForScsiPort : IATFunctionRVAFromFile fail.\n&quot;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// 후킹하는 모듈에 메모리 주소를 가져옵니다.&lt;br /&gt;pScsiPortImageAddress = GetImageAddress(SCSIPORT_SYS_FILENAME, &amp;amp;uImageSize);&lt;br /&gt;if (pScsiPortImageAddress == NULL)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;KdPrint((&quot;HookIoCreateSymbolicLinkHookForScsiPort : GetImageAddress fail.\n&quot;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// RVA가 이미지 크기보다 크다면 잘 못 된 값을 가져온 것입니다.&lt;br /&gt;if (uIoCreateSymbolicLinkRVA &amp;gt;= uImageSize)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;KdPrint((&quot;HookIoCreateSymbolicLinkHookForScsiPort : uIoCreateSymbolicLinkRVA &amp;gt;= uImageSize\n&quot;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// IAT 후킹을 하며, Scsiport.sys에서 IoCreateSymbolicLink 함수를 호출 시 DummyIoCreateSymbolicLink함수가 호출되게 됩니다.&lt;br /&gt;ExchangeProtectedIATPointer((PVOID)((ULONG_PTR)pScsiPortImageAddress + (ULONG_PTR)uIoCreateSymbolicLinkRVA), DummyIoCreateSymbolicLink);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;NTSTATUS &lt;br /&gt;&amp;nbsp; DummyIoCreateSymbolicLink(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IN PUNICODE_STRING&amp;nbsp; SymbolicLinkName,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IN PUNICODE_STRING&amp;nbsp; DeviceName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NTSTATUS ntStatus;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; KdPrint((&quot;hi DummyIoCreateSymbolicLink :)\n&quot;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ntStatus = MyIoCreateUnprotectedSymbolicLink(SymbolicLinkName, DeviceName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NT_SUCCESS(ntStatus))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; KdPrint((&quot;Successed.\n&quot;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ntStatus;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/////////////////////////////////////////////////////////////////////////////////////////&lt;/p&gt;&lt;p&gt;// 여기서부터 불러다 쓰면 되는 함수가 정의되어 있습니다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/////////////////////////////////////////////////////////////////////////////////////////&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ULONG IATFunctionRVAFromFile(WCHAR *FileName, UCHAR *ModuleName, UCHAR *FunctionName)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NTSTATUS ntStatus;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; HANDLE FileHandle;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IMAGE_DOS_HEADER DosHeader;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 참고 !! : NtImage.h 헤더를 Include하였고 내부적으로 64비트인지 32비트인지에 따라서 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // IMAGE_NT_HEADERS는 IMAGE_NT_HEADERS32, IMAGE_NT_HEADERS64로 나누어집니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IMAGE_NT_HEADERS NTHeader;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IMAGE_SECTION_HEADER ImageSectionHeader;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IMAGE_IMPORT_DESCRIPTOR ImageImportDescriptor;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PUCHAR pImageImportByNameBuffer;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG ImageImportByNameBufferLength;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG FunctionNameLength;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PUCHAR pModuleNameBuffer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG ModuleNameLength;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG ImportTableRVA;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG ImportNameTableRVA;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // ImportNameTable 각 배열의 크기는 32비트 PE Format에 경우 32비트이며 64비트에 경우 64비트입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG_PTR ImportNameTable;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LARGE_INTEGER Offset;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LARGE_INTEGER SectionHeaderOffset;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LARGE_INTEGER ImportDescriptorOffset;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LARGE_INTEGER ImportNameTableOffset;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int j;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int iCount;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FileName == NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ModuleName == NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FunctionName == NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FunctionNameLength = strlen(FunctionName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FunctionNameLength == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleNameLength = strlen(ModuleName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ModuleNameLength == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ntStatus = IoOpenNormalFile(FileName, &amp;amp;FileHandle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NT_SUCCESS(ntStatus) == FALSE)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FileHandle == NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageImportByNameBufferLength = FunctionNameLength + sizeof(USHORT);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageImportByNameBuffer = ExAllocatePoolWithTag(PagedPool, ImageImportByNameBufferLength, POOL_TAG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pImageImportByNameBuffer == NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ZwClose(FileHandle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pModuleNameBuffer&amp;nbsp; = ExAllocatePoolWithTag(PagedPool, ModuleNameLength, POOL_TAG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pModuleNameBuffer == NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ExFreePoolWithTag(pImageImportByNameBuffer, 0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ZwClose(FileHandle);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; __try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Offset.QuadPart = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (IoReadNormalFile(FileHandle, &amp;amp;DosHeader, &amp;amp;Offset, sizeof(DosHeader)) == FALSE)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 올바른 시그내쳐를 갖고 있는지 확인합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (DosHeader.e_magic != 0x5A4D)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; KdPrint((&quot;Invalid dos_header.\n&quot;));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // NTHeader 파일 오프셋을 구합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Offset.QuadPart = DosHeader.e_lfanew;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (IoReadNormalFile(FileHandle, &amp;amp;NTHeader, &amp;amp;Offset, sizeof(NTHeader)) == FALSE)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 올바른 시그내쳐를 갖고 있는지 확인합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (NTHeader.Signature != 0x00004550)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; KdPrint((&quot;Invalid nt_header\n&quot;));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (NTHeader.FileHeader.NumberOfSections == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 섹션의 개수가 0입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; KdPrint((&quot;Invalid NumberOfSections\n&quot;));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Import Table에 RVA 주소를 저장합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ImportTableRVA = NTHeader.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SectionHeaderOffset.QuadPart = Offset.QuadPart + sizeof(NTHeader);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; (int)NTHeader.FileHeader.NumberOfSections; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (IoReadNormalFile(FileHandle, &amp;amp;ImageSectionHeader, 
&amp;amp;SectionHeaderOffset, sizeof(ImageSectionHeader)) == FALSE)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if 
((NTHeader.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress
 &amp;gt;= ImageSectionHeader.VirtualAddress)&lt;br /&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; &amp;amp;&amp;amp; 
(NTHeader.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress
 &amp;lt; (ImageSectionHeader.VirtualAddress + 
ImageSectionHeader.Misc.VirtualSize)))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; // 임포트 테이블에 해당하는 섹션을 찾았습니다.&lt;br /&gt;
&lt;br /&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; // IMAGE_IMPORT_DESCRIPTOR 구조체가 있는 파일 오프셋을 구합니다.&lt;br /&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; ImportDescriptorOffset.QuadPart = 
NTHeader.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress
 - ImageSectionHeader.VirtualAddress + 
ImageSectionHeader.PointerToRawData;&lt;br /&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; &lt;br /&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; for (j = 0; j &amp;lt; 10; j++)&lt;br /&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; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (IoReadNormalFile(FileHandle, 
&amp;amp;ImageImportDescriptor, &amp;amp;ImportDescriptorOffset, 
sizeof(ImageImportDescriptor)) == FALSE)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (ImageImportDescriptor.OriginalFirstThunk == 0x00000000)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // NULL 임포트 디스크립터라면 임포트 테이블을 모두 순회한 것입니다.&lt;br /&gt;
&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 라이브러리 이름 RVA 주소에 대한 파일 오프셋을 구합니다.&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; Offset.QuadPart = ImageImportDescriptor.Name - 
ImageSectionHeader.VirtualAddress + ImageSectionHeader.PointerToRawData;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (IoReadNormalFile(FileHandle, pModuleNameBuffer, &amp;amp;Offset, ModuleNameLength) == FALSE)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (memcmp(pModuleNameBuffer, ModuleName, ModuleNameLength) == 0)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // ntoskrnl 이 맞다면 원하는 임포트 디스크립터 테이블을 찾은 것입니다. ( RVA 주소에 대한 파일 오프셋을 구합니다. )&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ImportNameTableOffset.QuadPart = 
ImageImportDescriptor.OriginalFirstThunk - 
ImageSectionHeader.VirtualAddress + ImageSectionHeader.PointerToRawData;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iCount = 0;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (TRUE)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (IoReadNormalFile(FileHandle, 
&amp;amp;ImportNameTable, &amp;amp;ImportNameTableOffset, 
sizeof(ImportNameTable)) == FALSE)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (ImportNameTable == 0)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 값이 0 이라면 모두 순회한 것입니다.&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // IMAGE_IMPORT_BY_NAME 오프셋을 구합니다. ( RVA 주소에 대한 파일 오프셋을 구합니다.&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Offset.QuadPart = ImportNameTable - 
ImageSectionHeader.VirtualAddress + ImageSectionHeader.PointerToRawData;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (IoReadNormalFile(FileHandle, 
pImageImportByNameBuffer, &amp;amp;Offset, ImageImportByNameBufferLength) ==
 FALSE)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (memcmp(pImageImportByNameBuffer + sizeof(USHORT), FunctionName, FunctionNameLength) == 0)&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; &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;
&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; return (ImageImportDescriptor.FirstThunk
 + (iCount *&amp;nbsp; sizeof(PVOID))/* + NTHeader.OptionalHeader.ImageBase*/);&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ImportNameTableOffset.QuadPart += sizeof(ImportNameTable);&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iCount++;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 위에 while 문으로터 검색에 실패하였습니다.&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 다음 임포트 디스크립터를 검색합니다.&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; ImportDescriptorOffset.QuadPart += sizeof(ImageImportDescriptor);&lt;br /&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; }&lt;br /&gt;
&lt;br /&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; // 위에서 루프를 돌았지만 검색에 실패하였습니다.&lt;br /&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; return 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 다음 섹션을 검사합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SectionHeaderOffset.QuadPart += sizeof(ImageSectionHeader);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; __finally&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (pModuleNameBuffer != NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ExFreePoolWithTag(pModuleNameBuffer, POOL_TAG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (pImageImportByNameBuffer != NULL)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ExFreePoolWithTag(pImageImportByNameBuffer, POOL_TAG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ZwClose(FileHandle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;
}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;PVOID GetImageAddress(CHAR *ImageFileName, ULONG *pImageSize)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NTSTATUS Status;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRTL_PROCESS_MODULES ModuleInfo;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRTL_PROCESS_MODULE_INFORMATION ModuleEntry;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG ReturnedLength;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG i;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PVOID pImageAddress;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Figure out how much size we need&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Status = ZwQuerySystemInformation(SystemModuleInformation,&lt;br /&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;&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; NULL,&lt;br /&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;&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; 0,&lt;br /&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;&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;amp;ReturnedLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Status != STATUS_INFO_LENGTH_MISMATCH) return NULL;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Allocate a buffer large enough&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ModuleInfo = RtlAllocateHeap(RtlGetProcessHeap(), 0, ReturnedLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleInfo = (PRTL_PROCESS_MODULES)ExAllocatePoolWithTag(NonPagedPool, ReturnedLength, POOL_TAG);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!ModuleInfo) return NULL;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Now query the data again&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Status = ZwQuerySystemInformation(SystemModuleInformation,&lt;br /&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;&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; ModuleInfo,&lt;br /&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;&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; ReturnedLength,&lt;br /&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;&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;amp;ReturnedLength);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!NT_SUCCESS(Status))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ExFreePoolWithTag(ModuleInfo, POOL_TAG);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Loop all the drivers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; ModuleInfo-&amp;gt;NumberOfModules; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the current entry and check if the pointer is within it&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleEntry = &amp;amp;ModuleInfo-&amp;gt;Modules[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (_stricmp(ModuleEntry-&amp;gt;FullPathName + ModuleEntry-&amp;gt;OffsetToFileName, ImageFileName) == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 주소를 미리 얻은 후에 ExFreePoolWithTag 함수를 호출해야 합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // ( 그렇지 않으면 블루 스크린이 발생할 수 있습니다. )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pImageAddress = ModuleEntry-&amp;gt;ImageBase;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (pImageSize != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&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; *pImageSize = ModuleEntry-&amp;gt;ImageSize;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ExFreePoolWithTag(ModuleInfo, POOL_TAG);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (pImageAddress);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExFreePoolWithTag(ModuleInfo, POOL_TAG);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NULL;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;void ExchangeProtectedIATPointer(PVOID IATPointerAddress, PVOID NewAddress)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PMDL pMdl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUCHAR pBuffer;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pMdl = IoAllocateMdl(IATPointerAddress, sizeof(PVOID), FALSE, FALSE, NULL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pMdl == NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MmBuildMdlForNonPagedPool(pMdl);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pBuffer = MmMapLockedPagesSpecifyCache(pMdl, KernelMode, MmNonCached, NULL, FALSE, NormalPagePriority);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pBuffer == NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IoFreeMdl(pMdl);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // InterlockedExchangePointer(&amp;amp;pBuffer, NewAddress);&amp;nbsp; &amp;lt;= 이렇게 하면 안되고&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // InterlockedExchangePointer(pBuffer, NewAddress); &amp;lt;= 이렇게 해야 합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 포인터의 값을 바꾸는것이 아니라 포인터가 가르키는 실제 값을 바꾸는 것이기 때문입니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 꼭 Interlocked 함수를 사용하지 않고 바로 대입해도 상관이 없습니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 그러나 한 번에 대입되는 방식이 아닌 Byte단위나 Word 단위 등에 방식은 동기화 문제를 발생시킬 수 있습니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InterlockedExchangePointer((PVOID *)pBuffer, NewAddress);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MmUnmapLockedPages(pBuffer, pMdl);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IoFreeMdl(pMdl);&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>DEVICE_OBJECT에 대한 보안 디스크립터 변경</title>
      <id>http://simples.kr/38943</id>
      <published>2011-06-11T09:42:12+09:00</published>
      <updated>2011-06-11T09:42:26+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38943"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38943#comment"/>
      <author>
         <name>lain</name>
                  <uri>http://lain32.egloos.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;SCSI Miniport와 같은 프레임 워크를 이용하여 개발을 할 때 내부 프레임 워크에서 자동으로 DEVICE_OBJECT를 생성하게 됩니다.&lt;/p&gt;&lt;p&gt;이 때 생성되는 DEVICE_OBJECT에 보안 디스크립터 설정이 기본적으로 높게 잡혀져 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;따라서 어플리케이션에서 생성 된 DEVICE_OBJECT와 통신할 때 비스타 이상에서는 관리자 권한으로 실행하여,&lt;/p&gt;&lt;p&gt;해당 DEVICE_OBJECT와 통신을 해야 하는데, 이미 만들어진 DEVICE_OBJECT에 대한 보안 디스크립터 권한을&lt;/p&gt;&lt;p&gt;최소로 할당하여, 관리자 권한없이 접근할 수 있게 만들어주는 함수입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;BOOLEAN SetUnprotectedSecurityDescriptor(PDEVICE_OBJECT pDeviceObject)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HANDLE FileHandle;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SECURITY_DESCRIPTOR SecurityDescriptor;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NTSTATUS ntStatus;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 보호되지 않은 보안 디스크립터를 만드는 방법은 IoCreateUnprotectedSymbolicLink Windows 2000 소스코드를 참고하였습니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(&amp;amp;SecurityDescriptor, 0, sizeof(SECURITY_DESCRIPTOR));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ntStatus = RtlCreateSecurityDescriptor(&amp;amp;SecurityDescriptor, SECURITY_DESCRIPTOR_REVISION1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NT_SUCCESS(ntStatus) == FALSE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ntStatus = RtlSetDaclSecurityDescriptor(&amp;amp;SecurityDescriptor,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TRUE,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NULL,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TRUE);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //does not over-ride inheritable protection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NT_SUCCESS(ntStatus) == FALSE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileHandle = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ntStatus = ObOpenObjectByPointer(pDeviceObject,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; OBJ_KERNEL_HANDLE,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NULL,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WRITE_DAC,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; KernelMode,&lt;br /&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;FileHandle);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NT_SUCCESS(ntStatus) == FALSE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FileHandle == NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ntStatus = ZwSetSecurityObject(FileHandle, DACL_SECURITY_INFORMATION, &amp;amp;SecurityDescriptor);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ZwClose(FileHandle);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NT_SUCCESS(ntStatus);&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>IE Cache 경로 변경하기</title>
      <id>http://simples.kr/38909</id>
      <published>2011-06-09T18:43:08+09:00</published>
      <updated>2011-06-09T18:51:16+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38909"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38909#comment"/>
      <author>
         <name>lain</name>
                  <uri>http://lain32.egloos.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;IE Cache 경로를 변경하는 것은 문서화되어 있지 않으며, 분석을 통해서 진행하였습니다.&lt;/p&gt;&lt;p&gt;( 레지스트리 값을 바꾸는 방식이 아니라 인터넷 옵션에서 바로 변경하는 방식 )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;분석 된 코드를 올립니다. ( Windows XP용 )&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;추가적인 내용은 아래에 주소에서 찾을 수 있습니다.&lt;/p&gt;&lt;p&gt;http://msdn.microsoft.com/en-us/library/ms905660.aspx&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/*&lt;br /&gt;인터넷 익스폴로러 등록정보에서 캐시폴더의 위치를 변경하면 다음과 같은 함수를 이용하여 변경을 합니다.&lt;br /&gt;그러나 UpdateUrlCacheContentPath 함수가 Undocumented 되어 있으며 그냥 Undocumented되어 있는정도가 아니라&lt;br /&gt;이 함수를 사용하는 어떠한 정보도 MS및 구글에 없습니다. ReactOS에도 없습니다.&lt;br /&gt;다행이 인자가 엄청나게 간단해서 함수를 호출하는 방법을 알 수 있었습니다.&lt;br /&gt;&lt;br /&gt;UpdateUrlCacheContentPath 함수를 호출할때의 스택입니다.&lt;br /&gt;이 함수는 완전히 Undocumented 되어 있는 함수입니다.&lt;br /&gt;0007D664&amp;nbsp;&amp;nbsp; 69488538&amp;nbsp; RETURN to inetcpl.69488538 from inetcpl.6948EC10&lt;br /&gt;0007D668&amp;nbsp;&amp;nbsp; 0007DEB4&amp;nbsp; ASCII &quot;E:\Temporary Internet Files&quot; ( 유니코드가 아닙니다. 그냥 아스키문자열입니다. )&lt;br /&gt;0007D66C&amp;nbsp;&amp;nbsp; 00000001&lt;br /&gt;0007D670&amp;nbsp;&amp;nbsp; 00000000&lt;br /&gt;0007D674&amp;nbsp;&amp;nbsp; 000BDB98&lt;br /&gt;0007D678&amp;nbsp;&amp;nbsp; 00000001&lt;br /&gt;0007D67C&amp;nbsp;&amp;nbsp; 00000013&lt;br /&gt;0007D680&amp;nbsp;&amp;nbsp; 00000000&lt;br /&gt;0007D684&amp;nbsp;&amp;nbsp; 00000002&lt;br /&gt;0007D688&amp;nbsp;&amp;nbsp; 00000280&lt;br /&gt;0007D68C&amp;nbsp;&amp;nbsp; 005AE668&lt;br /&gt;0007D690&amp;nbsp;&amp;nbsp; 0007D6D4&lt;br /&gt;&lt;br /&gt;// UpdateUrlCacheContentPath 다음과 같은 방식으로 호출합니다.&lt;br /&gt;// 이전에도 말햇듯이 이 함수는 완전히 Undocumented 되어 있는 함수이므로 어떠한 문서에도 이 함수사용방법이 나와 있지 않습니다.&lt;br /&gt;6948EC0B&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC0C&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC0D&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC0E&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC0F&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC10&amp;nbsp;&amp;nbsp; 8BFF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV EDI,EDI&lt;br /&gt;6948EC12&amp;nbsp;&amp;nbsp; 55&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; PUSH EBP&lt;br /&gt;6948EC13&amp;nbsp;&amp;nbsp; 8BEC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV EBP,ESP&lt;br /&gt;6948EC15&amp;nbsp;&amp;nbsp; A1 A02D4A69&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV EAX,DWORD PTR DS:[694A2DA0]&lt;br /&gt;6948EC1A&amp;nbsp;&amp;nbsp; 85C0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST EAX,EAX&lt;br /&gt;6948EC1C&amp;nbsp;&amp;nbsp; 75 1B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JNZ SHORT inetcpl.6948EC39&lt;br /&gt;6948EC1E&amp;nbsp;&amp;nbsp; 68 28264869&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH inetcpl.69482628&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; ; ASCII &quot;WININET.DLL&quot;&lt;br /&gt;6948EC23&amp;nbsp;&amp;nbsp; FF15 68104869&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL DWORD PTR DS:[&amp;lt;&amp;amp;KERNEL32.LoadLibrar&amp;gt;; kernel32.LoadLibraryA&lt;br /&gt;6948EC29&amp;nbsp;&amp;nbsp; 33C9&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 ECX,ECX&lt;br /&gt;6948EC2B&amp;nbsp;&amp;nbsp; 85C0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST EAX,EAX&lt;br /&gt;6948EC2D&amp;nbsp;&amp;nbsp; 0F95C1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SETNE CL&lt;br /&gt;6948EC30&amp;nbsp;&amp;nbsp; A3 A02D4A69&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV DWORD PTR DS:[694A2DA0],EAX&lt;br /&gt;6948EC35&amp;nbsp;&amp;nbsp; 85C9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST ECX,ECX&lt;br /&gt;6948EC37&amp;nbsp;&amp;nbsp; 74 22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JE SHORT inetcpl.6948EC5B&lt;br /&gt;6948EC39&amp;nbsp;&amp;nbsp; 8B0D DC2D4A69&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV ECX,DWORD PTR DS:[694A2DDC]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; WININET.UpdateUrlCacheContentPath&lt;br /&gt;6948EC3F&amp;nbsp;&amp;nbsp; 85C9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST ECX,ECX&lt;br /&gt;6948EC41&amp;nbsp;&amp;nbsp; 75 1E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JNZ SHORT inetcpl.6948EC61&lt;br /&gt;6948EC43&amp;nbsp;&amp;nbsp; 68 AC264869&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH inetcpl.694826AC&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; ; ASCII &quot;UpdateUrlCacheContentPath&quot;&lt;br /&gt;6948EC48&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUSH EAX&lt;br /&gt;6948EC49&amp;nbsp;&amp;nbsp; FF15 08114869&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL DWORD PTR DS:[&amp;lt;&amp;amp;KERNEL32.GetProcAdd&amp;gt;; kernel32.GetProcAddress&lt;br /&gt;6948EC4F&amp;nbsp;&amp;nbsp; 8BC8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV ECX,EAX&lt;br /&gt;6948EC51&amp;nbsp;&amp;nbsp; 85C9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST ECX,ECX&lt;br /&gt;6948EC53&amp;nbsp;&amp;nbsp; 890D DC2D4A69&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV DWORD PTR DS:[694A2DDC],ECX&lt;br /&gt;6948EC59&amp;nbsp;&amp;nbsp; 75 06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JNZ SHORT inetcpl.6948EC61&lt;br /&gt;6948EC5B&amp;nbsp;&amp;nbsp; 33C0&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 EAX,EAX&lt;br /&gt;6948EC5D&amp;nbsp;&amp;nbsp; 5D&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; POP EBP&lt;br /&gt;6948EC5E&amp;nbsp;&amp;nbsp; C2 0400&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETN 4&lt;br /&gt;6948EC61&amp;nbsp;&amp;nbsp; 5D&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; POP EBP&lt;br /&gt;6948EC62&amp;nbsp;&amp;nbsp; FFE1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP ECX&lt;br /&gt;6948EC64&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC65&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC66&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC67&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;6948EC68&amp;nbsp;&amp;nbsp; CC&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; INT3&lt;br /&gt;&lt;br /&gt;// 위 함수에 리턴타입은 void 형인 것 같으며. ( 아직 확실하지 않음.. ) 인자는 PCHAR를 인자로 받습니다.&lt;br /&gt;// 6948EC62&amp;nbsp;&amp;nbsp; FFE1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMP ECX ( JMP [WININET.UpdateUrlCacheContentPath] )&lt;br /&gt;// 이 부분이 이 함수를 호출하는 부분입니다.&lt;br /&gt;// 그러나 CALL 명령어로 해야맞는걸로 알고 있습니다.&lt;br /&gt;// 위에서는 직접 CALL명령어 자체를 구현하고 있는 것으로 보이며 XP SP3에서는 바로 CALL를 합니다.&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;void&amp;nbsp; WalkCache()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 중국넘들이 작성한 소스코드입니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 그냥 URL캐시 리스트를 출력하는 코드이지만 Undocumented된 API를 호출하기 위해서&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 반드시 필요합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BYTE byBuffer[20480];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPINTERNET_CACHE_ENTRY_INFO lpInfo = LPINTERNET_CACHE_ENTRY_INFO(byBuffer);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD dwSize =&amp;nbsp; sizeof(byBuffer);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lpInfo-&amp;gt;dwStructSize = sizeof(INTERNET_CACHE_ENTRY_INFO);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HANDLE h;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BOOL bSuccess&amp;nbsp; = TRUE;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for&amp;nbsp;&amp;nbsp; (h = FindFirstUrlCacheEntryEx(NULL, 0, URLCACHE_FIND_DEFAULT_FILTER, 0, lpInfo, &amp;amp;dwSize, 0, 0, 0); h &amp;amp;&amp;amp; bSuccess;&amp;nbsp; bSuccess = FindNextUrlCacheEntryEx(h, lpInfo, &amp;amp;dwSize, 0, 0, 0))&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dwSize = sizeof(byBuffer);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TRACE(&quot;%s\n&quot;, lpInfo-&amp;gt;lpszSourceUrlName);&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FindCloseUrlCache(h);&amp;nbsp; &lt;br /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;typedef int (__stdcall *UpdateUrlCacheContentPath)(CHAR *lpPath);&lt;br /&gt;BOOL SetInternetExplorerCacheFolder(CString strPath, BOOL bBackup)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HMODULE hModule;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpdateUrlCacheContentPath pUpdateUrlCacheContentPath;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BOOL bResult;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bResult = TRUE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strPath.GetLength() &amp;gt; 3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (strPath.Right(1) == _T(&quot;\\&quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strPath = strPath.Left(strPath.GetLength() - 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CStringA strAPath;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hModule = ::LoadLibrary(_T(&quot;wininet.dll&quot;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (hModule == NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pUpdateUrlCacheContentPath = (UpdateUrlCacheContentPath)::GetProcAddress(hModule, &quot;UpdateUrlCacheContentPath&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pUpdateUrlCacheContentPath == NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ::FreeLibrary(hModule);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strAPath = strPath;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 주의 !! 이 함수 ( WalkCache )는 단순히 URL캐시를 출력하기 위한 용도로 호출하는 것이 아닙니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // UpdateUrlCacheContentPath함수를 호출하기전에 반드시 이 함수를 호출해주어야 합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // UpdateUrlCacheContentPath함수 내부적으로 글로벌 전역변수가 선언되어 있고 이 함수를 호출 시 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ECX레지스트리에 그 값을 저장하여 추후에 그 값을 액세스하게 됩니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 그러나 이 값은 NULL포인터를 기본적으로 갖고 있으며 WalkCache()함수를 호출해야 이값이 어떠한 포인터값을 가지게 됩니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 따라서 WalkCache와 UpdateUrlCacheContentPath함수는 하나에 통합된 함수라고 봐도 될 것 입니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MS쪽에서 보자면 상당히 지저분하게 만들어진 Undocumented 된 API라고 볼 수 있습니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // UpdateUrlCacheContentPath함수는 모듈화가 전혀되어 있지 않습니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 단, XP SP3이상부터는 모듈화가 되어 있어서 UpdateUrlCacheContentPath이 함수하나만 호출하여도 동작합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WalkCache();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pUpdateUrlCacheContentPath(strAPath.GetBuffer());&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ::FreeLibrary(hModule);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>32Bit 윈도우즈에서 실제 물리메모리크기 얻어오기</title>
      <id>http://simples.kr/38898</id>
      <published>2011-06-09T18:14:03+09:00</published>
      <updated>2011-06-09T18:32:50+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38898"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38898#comment"/>
      <author>
         <name>lain</name>
                  <uri>http://lain32.egloos.com/</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;32Bit 윈도우즈 에서는 4GB 이상에 물리 메모리가 장착되어 있을 때 사용가능한 물리 메모리가 3.25GB 정도로 표시가 됩니다.&lt;/p&gt;&lt;p&gt;( 단, 이 사용가능한 물리메모리는 PC 하드웨어에 따라서 약간 달라질 수 있습니다. )&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다음은 32Bit 윈도우즈 에서 4GB이상에 물리 메모리가 장착되어 있고 PAE 옵션이 활성화되어 있다면,&lt;/p&gt;&lt;p&gt;실제 물리 메모리크기를 읽어오는 방법입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MmGetPhysicalMemoryRanges 함수를 이용해서 윈도우즈에서 표시되는 실제 물리메모리 크기를 읽어오며,&lt;/p&gt;&lt;p&gt;그 후에 윈도우즈에서 인식하지 못 하는 물리 메모리크기를 추가로 얻어온 후 이를 합치게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;GetPhysicalMemorySize 함수에 리턴값은 실제 물리메모리의 전체크기이며,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;인자로 들어가는 &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;uWindowsReservedSize는 윈도우즈에서 인식하지 못 한 메모리 크기입니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;해당 소스는 커널레벨에서 작동하는 코드이며, 유저레벨에서 사용할 수 없습니다.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;#define MEMORY_SCAN_START_ADDRESS ((ULONG64)4 * 1024 * 1024 * 1024)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;#define MEMORY_SCAN_BLOCK_SIZE ((ULONG64)1024 * 1024 * 16)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;// 이러한 상수는 적용해서는 안됩니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;// 3.25GB인 경우도 있고 3.5GB인 경우도 있고 PC마다 다르게 맵핑이 되어 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;//#define MEMORY_3_25GB_4GB_HARDWARE_MAPPED_IO_SIZE ((ULONG64)1024 * 1024 * 768);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;//#define MEMORY_HARDWARE_MAPPED_IO_START_ADDRESS ((ULONG64)3328 * 1024 * 1024);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;#define MI_CONVERT_PHYSICAL_TO_PFN(Va) (((ULONG)Va &amp;lt;&amp;lt; 3) &amp;gt;&amp;gt; 15) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;typedef struct _PHYSICAL_MEMORY_RUN&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PFN_NUMBER BasePage;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PFN_NUMBER PageCount;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;} PHYSICAL_MEMORY_RUN, *PPHYSICAL_MEMORY_RUN;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;typedef struct _PHYSICAL_MEMORY_DESCRIPTOR &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG NumberOfRuns;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PFN_NUMBER NumberOfPages; // NumberOfPages * PAGE_SIZE is physical memory size.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PHYSICAL_MEMORY_RUN Run[1]; // NumberOfRuns is the total entries.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;} PHYSICAL_MEMORY_DESCRIPTOR, *PPHYSICAL_MEMORY_DESCRIPTOR;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;ULONG64 GetPhysicalMemorySize(ULONG64 *uWindowsReservedSize);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;BOOLEAN IsPAEEnable()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // CR4 레지스터를 체크하는 방법도 있지만 커널내부에서 체크를 해주는 함수가 지원됩니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 추후에 64비트 포팅을 위해 어셈블리 및 기계어는 사용하지 않는게 좋습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (ExIsProcessorFeaturePresent(PF_PAE_ENABLED));&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;ULONG64 GetPhysicalMemorySize(ULONG64 *uWindowsReservedSize)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PPHYSICAL_MEMORY_RANGE MmPhysicalMemoryRange;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PHYSICAL_ADDRESS AboveAddress;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIZE_T MemoryBlockSize;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PFN_NUMBER NumberOfPages;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG64 uPhysicalMemorySize;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG64 uPhysicalMemoryBlockCount;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG NumberOfRuns;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ULONG Run;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uPhysicalMemorySize = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MmPhysicalMemoryRange = MmGetPhysicalMemoryRanges();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (MmPhysicalMemoryRange == NULL)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NumberOfRuns = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NumberOfPages = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((MmPhysicalMemoryRange[NumberOfRuns].BaseAddress.QuadPart != 0) &amp;amp;&amp;amp; (MmPhysicalMemoryRange[NumberOfRuns].NumberOfBytes.QuadPart != 0))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NumberOfRuns++;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NumberOfPages += (PFN_NUMBER)BYTES_TO_PAGES(MmPhysicalMemoryRange[NumberOfRuns].NumberOfBytes.QuadPart);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (NumberOfRuns == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemoryBlockSize = sizeof(ULONG) + sizeof(PFN_NUMBER) + sizeof(PHYSICAL_MEMORY_RUN) * NumberOfRuns;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MmPhysicalMemoryBlock = ExAllocatePoolWithTag(NonPagedPool, MemoryBlockSize, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MmPhysicalMemoryBlock-&amp;gt;NumberOfRuns = NumberOfRuns;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MmPhysicalMemoryBlock-&amp;gt;NumberOfPages = NumberOfPages;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Run = 0; Run &amp;lt; NumberOfRuns; Run++)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MmPhysicalMemoryBlock-&amp;gt;Run[Run].BasePage = (PFN_NUMBER)MI_CONVERT_PHYSICAL_TO_PFN(MmPhysicalMemoryRange[NumberOfRuns].BaseAddress.QuadPart);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MmPhysicalMemoryBlock-&amp;gt;Run[Run].PageCount = (PFN_NUMBER)BYTES_TO_PAGES(MmPhysicalMemoryRange[Run].NumberOfBytes.QuadPart);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uPhysicalMemorySize = MmPhysicalMemoryBlock-&amp;gt;NumberOfPages * PAGE_SIZE;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExFreePoolWithTag(MmPhysicalMemoryBlock, 0);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DbgPrint(&quot;Windows Based Memory Size : uPhysicalMemorySize %I64u\n&quot;, uPhysicalMemorySize);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 4GB 주소부터 메모리를 스캔합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AboveAddress.QuadPart = MEMORY_SCAN_START_ADDRESS;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (IsPAEEnable() == TRUE)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 반드시 PAE가 활성화되어 있을 경우에만 접근합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 만약 PAE가 비활성화되어 있을 때 접근하게 되면 KMODE_EXCEPTION_NOT_HANDLED 블루스크린이 발생 할 수 있습니다. ( Windows 2000 계열에서 해당 블루 스크린이 발생하여 PAE를 체크하도록 변경한 것입니다. )&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (TRUE)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PVOID pVirtualAddress;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pVirtualAddress = MmMapIoSpace(AboveAddress, MEMORY_SCAN_BLOCK_SIZE, MmNonCached);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (pVirtualAddress != NULL)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; PVOID pCheckAddress;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; ULONG uOldData;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; // 참고...&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; // MmMapIoSpace 리턴받은 가상주소는 결국에는 물리 메모리주소를 가르키게 됩니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; // 여기서 중요한 부분은 만약 물리 메모리주소가 실제 하드웨어에 6GB 메모리가 설치되어 있고 7GB주소에 접근하려고 하여도&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; // 에러가 발생하지 않습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; // 이것은 윈도우즈 운영체제에서 관리하는 것이 아니며 CPU에서 발생하는 것입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; // 존재하지 않은 메모리에 접근하였다면 일반적으로 읽어온 데이터는 비트가 모두 1을 가집니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; pCheckAddress = (UCHAR *)pVirtualAddress;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; uOldData = *(ULONG *)pCheckAddress;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; // xor 연산을 한 후 값을 씁니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; *(ULONG *)pCheckAddress = *(ULONG *)pCheckAddress ^ 0x55AA55AA;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; if (*(ULONG *)pCheckAddress == uOldData)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; // xor연산을 하여 값을 썼음에도 불구하고 이전 데이터와 동일하다면 이 메모리 주소는 존재하지 않는 메모리주소를 말합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; MmUnmapIoSpace(pVirtualAddress, MEMORY_SCAN_BLOCK_SIZE);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 이 메모리 영역이 존재합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; MmUnmapIoSpace(pVirtualAddress, MEMORY_SCAN_BLOCK_SIZE);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&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; break;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AboveAddress.QuadPart += (ULONG64)((ULONG64)16 * 1024 * 1024);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (AboveAddress.QuadPart &amp;gt; MEMORY_SCAN_START_ADDRESS)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 4GB이후에 메모리 영역이 존재합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 적절한 계산을 통해 메모리 크기를 가져옵니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; uPhysicalMemorySize = AboveAddress.QuadPart - MEMORY_SCAN_START_ADDRESS + uPhysicalMemorySize;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (uWindowsReservedSize != NULL)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *uWindowsReservedSize = (AboveAddress.QuadPart - MEMORY_SCAN_START_ADDRESS);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; KdPrint((&quot;PhysicalMemorySize : %I64uMB, ReservedSize : %I64u\n&quot;, uPhysicalMemorySize / 1024 / 1024, *uWindowsReservedSize / 1024 / 1024));&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; KdPrint((&quot;PhysicalMemorySize : %I64uMB\n&quot;, uPhysicalMemorySize / 1024 / 1024));&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return uPhysicalMemorySize;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>가끔가다(특히 언패킹할때) Analyze가 안될때가 있는데 어떻게 하시나요?</title>
      <id>http://simples.kr/38844</id>
      <published>2011-06-06T01:38:35+09:00</published>
      <updated>2011-06-06T12:05:23+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38844"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38844#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;JMP 이후의 위치를 보여주는 기능이나 Reference가 동작하지않아서 불편하네요&lt;/p&gt;
&lt;p&gt;해결책이 있나요?&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>messgae 관련 질문입니다.</title>
      <id>http://simples.kr/38536</id>
      <published>2011-05-28T20:27:45+09:00</published>
      <updated>2011-09-07T03:29:31+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38536"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38536#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;&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;위 스크린샷은 ollydbg로 메모장을 열어서&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F9로 실행 후 일시정지 눌러서&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;message 부분이 아니라 정상 코드를 보고 싶은데&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;현재 저 message 있는 부분에서 더이상 진행을 못하고 있습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;코드를 계속 진행하다보면 getmessage 함수가 나오면서 저 부분을 무한루프하네요...&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;이게 ollydbg나 ida상에서 쓰는 게 아니라 뭐 다르게 작동시키는 것 같더군요&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;메모장 역시 마찬가지인걸로 보아 뭔가 이벤트 기다리는 프로그램은 다 이런거 같네요..&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;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>언패킹에 대해 질문드리겠습니다.</title>
      <id>http://simples.kr/38525</id>
      <published>2011-05-28T13:04:50+09:00</published>
      <updated>2011-06-01T11:39:44+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38525"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38525#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;웹에 쳐보면 upx언패킹만 언급하던데 굳이 이거 말고 다른 언패킹은 없는겁니까?&lt;/p&gt;&lt;p&gt;그러니까 웹에 나오는 upx언패킹 방법만 알아도 다른 언패킹도 가능하다는 뜻입니까?&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>나는 가수다 5월22일자 다음 공식 무편집 영상</title>
      <id>http://simples.kr/38394</id>
      <published>2011-05-23T12:49:11+09:00</published>
      <updated>2011-05-23T12:49:11+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38394"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38394#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;&lt;a href=&quot;http://media.daum.net/entertain/showcase/singer/mission#66&quot;&gt;http://media.daum.net/entertain/showcase/singer/mission#66&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다음에서 고화질로 영상들이 올라왔네요. 정말 최고의 가수들의 영상을 한번 감상해보시죠.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;임재범님의 여러분은 정말 최고중의 최고 였습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아쉽게 탈락한 김연우님의 나와같다면은 감동 그 자체였구요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다들 정말 프로다운 모습을 보여주신 것 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;=======&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이소라&lt;/p&gt;&lt;p&gt;송창식 &apos;사랑이야&apos;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;BMK&lt;/p&gt;&lt;p&gt;이선희 &apos;아름다운..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;윤도현&lt;/p&gt;&lt;p&gt;소녀시대 &apos;Run..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;김연우&lt;/p&gt;&lt;p&gt;김장훈 &apos;나와 같다..&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;김범수&lt;/p&gt;&lt;p&gt;조관우 &apos;늪&apos;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;박정현&lt;/p&gt;&lt;p&gt;부활 &apos;소나기&apos;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;임재범&lt;/p&gt;&lt;p&gt;윤복희 &apos;여러분&apos;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;a href=&quot;http://media.daum.net/entertain/showcase/singer/mission#66&quot;&gt;&lt;/a&gt;&lt;p&gt;&lt;a href=&quot;http://media.daum.net/entertain/showcase/singer/mission#66&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://media.daum.net/entertain/showcase/singer/mission#66&quot;&gt;&lt;/a&gt;


&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>5·18 광주 민주화 운동에 대해서...</title>
      <id>http://simples.kr/38248</id>
      <published>2011-05-19T14:29:04+09:00</published>
      <updated>2011-05-19T14:29:04+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38248"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38248#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;어제는 5.18, 1980년에 광주 민주화 운동이 있었던 날입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아는 사람은 한번씩이라도 생각을 깊게 하고 묵념을 했을 날이고, 모르는 사람에게는 그냥 아무 별일없는 맑은 날이였을 것이라고 생각이 듭니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;최근에 뉴스에서 자주 보이는 군사정권의 나라들에서 내분이 일어나서 전쟁하듯이 사람들이 죽어나는 장면들이 나오는데, 불과 30여년전에만해도 우리나라도 같은 일이 있었다는 것 입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;말그대로 이런 역사를 모르면 똑같은 일이 반복 될 수도 있다는 것을 뜻합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래와 같이 잘 정리된 자료들이 있어서 글을 적습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위키디피아에 자세하게 역사적인 기록이 남아있고요.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://ko.wikipedia.org/wiki/5%C2%B718_%EA%B4%91%EC%A3%BC_%EB%AF%BC%EC%A3%BC%ED%99%94_%EC%9A%B4%EB%8F%99&quot;&gt;http://ko.wikipedia.org/wiki/5%C2%B718_%EA%B4%91%EC%A3%BC_%EB%AF%BC%EC%A3%BC%ED%99%94_%EC%9A%B4%EB%8F%99&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위키트리의&amp;nbsp;강풀 만화로 보는 5.18 광주 민주화운동이 아래 링크에 있어서 같이 올립니다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://wikitree.co.kr/main/news_view.php?id=35331&quot;&gt;http://wikitree.co.kr/main/news_view.php?id=35331&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://www.simples.kr/files/attach/images/58/248/038/8c06b1691ff63891f8dd6c1edf9b4b3d.jpg&quot; alt=&quot;1.jpg&quot; title=&quot;1.jpg&quot; width=&quot;500&quot; height=&quot;8533&quot; style=&quot;&quot; /&gt;
&lt;img src=&quot;http://www.simples.kr/files/attach/images/58/248/038/69d7dacfdc5ace35d60d11b14d9bd501.jpg&quot; alt=&quot;2.jpg&quot; title=&quot;2.jpg&quot; width=&quot;499&quot; height=&quot;7962&quot; style=&quot;&quot; /&gt;
&lt;img src=&quot;http://www.simples.kr/files/attach/images/58/248/038/86cfc37b09252974b9fd3be048c210bd.jpg&quot; alt=&quot;3.jpg&quot; title=&quot;3.jpg&quot; width=&quot;500&quot; height=&quot;8822&quot; style=&quot;&quot; /&gt;
&lt;img src=&quot;http://www.simples.kr/files/attach/images/58/248/038/8ef4afb1b25990fa32be1a8326aaebae.jpg&quot; alt=&quot;4.jpg&quot; title=&quot;4.jpg&quot; width=&quot;500&quot; height=&quot;9095&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>MS, 검색시장서 페이스북과 연합해 구글과 경쟁</title>
      <id>http://simples.kr/38246</id>
      <published>2011-05-19T11:20:25+09:00</published>
      <updated>2011-06-01T11:44:47+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38246"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38246#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;기사 원문 :&amp;nbsp;&lt;a href=&quot;http://www.yonhapnews.co.kr/international/2011/05/18/0619000000AKR20110518002100091.HTML&quot;&gt;http://www.yonhapnews.co.kr/international/2011/05/18/0619000000AKR20110518002100091.HTML&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;기사를 보면 MS가 만든 빙검색엔진에 페이스북 데이터를 잘 활용하나 보다라고 생각할 수 있겠는데요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;생각해보니 왜 페이스북, 트위터 + 트윗픽 이런 서비스들이 무료로 광고도 달지 않고 마구 사용자 데이터를 수집하는 서버를 제공했나 보니... 다 이렇게 활용하기 위함이였네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;요즘들어 개인 정보는 기업이 받으면 다 활용해서 여기저기 검색되게 하고,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;지들 기업 페이지뷰를 늘려서 돈을 버는 구조로 가져가는 것 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;외부에 글을 쓸 때는 상당히 더 조심해야 할 것 같습니다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.yonhapnews.co.kr/international/2011/05/18/0619000000AKR20110518002100091.HTML&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>구글 크롬 해킹됐다...샌드박스도 뚫려</title>
      <id>http://simples.kr/38244</id>
      <published>2011-05-19T11:17:39+09:00</published>
      <updated>2011-05-19T11:17:39+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38244"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38244#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;기사원문 :&amp;nbsp;&lt;a href=&quot;http://www.boannews.com/media/view.asp?page=&amp;amp;gpage=&amp;amp;idx=26040&amp;amp;search=&amp;amp;find=&quot;&gt;http://www.boannews.com/media/view.asp?page=&amp;amp;gpage=&amp;amp;idx=26040&amp;amp;search=&amp;amp;find=&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;object style=&quot;height: 390px; width: 640px&quot; width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/c8cQ0yU89sk?version=3&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://www.youtube.com/v/c8cQ0yU89sk?version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;/&gt;&lt;/object&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;유튜브 영상을 보시면 아시겠지만, 특정 사이트에 접속만 했는데 계산기가 뜨는 장면입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;구글 크롬에는 플러그인과 응용프로그램이라는 것이 구분이 되어있는데요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;말그대로 웹스토어 라는 컨셉을 살리기 위해서 특정 링크를 받으면,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다운로드 받고, 실행을 시켜주는 구조입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;암튼 크롬이 곧 패치 버전을 내놓겠죠. 크롬 너무 잘 쓰고 있는데, 보안 이슈가 떠서 살짝 걱정이네요.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.boannews.com/media/view.asp?page=&amp;amp;gpage=&amp;amp;idx=26040&amp;amp;search=&amp;amp;find=&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>철권 태그 토너먼트2 아케이드</title>
      <id>http://simples.kr/38205</id>
      <published>2011-05-17T17:27:30+09:00</published>
      <updated>2011-05-17T17:27:30+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/38205"/>
      <link rel="replies" type="text/html" href="http://simples.kr/38205#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;


&lt;/p&gt;&lt;p&gt;720 HD화질, 전체화면으로 봐보세요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예전에 철권 태그 정말 재밌게 했었는데, 2가 나왔나보네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;동영상만 봐도 신나네요~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;object width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/b6bwNTWT2_E&amp;amp;rel=0&amp;amp;hl=ko_KR&amp;amp;feature=player_embedded&amp;amp;version=3&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://www.youtube.com/v/b6bwNTWT2_E&amp;amp;rel=0&amp;amp;hl=ko_KR&amp;amp;feature=player_embedded&amp;amp;version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;/&gt;&lt;/object&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>인기상품이라며, 사용자 속인 오픈마켓(G마켓, 옥션, 11번가)</title>
      <id>http://simples.kr/37209</id>
      <published>2011-04-26T11:37:48+09:00</published>
      <updated>2011-04-26T11:41:12+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/37209"/>
      <link rel="replies" type="text/html" href="http://simples.kr/37209#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 :&amp;nbsp;http://www.etnews.co.kr/news/detail.html?id=201104250082&amp;amp;&amp;amp;mc=m_013_00004&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp;&lt;a href=&quot;http://www.ytn.co.kr/_ln/0102_201104251302417864&quot;&gt;http://www.ytn.co.kr/_ln/0102_201104251302417864&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&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;br /&gt;&lt;/p&gt;&lt;p&gt;G마켓과 옥션은 둘다 이베이가 운영하는거니깐 같은 정책을 썼을테고,&amp;nbsp;&lt;/p&gt;&lt;p&gt;11번가는 이베이도 그렇게 하니깐 따라한걸까요?&lt;/p&gt;&lt;p&gt;암튼.. 씁슬하네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;게다가&amp;nbsp;업계 1위인 이베이G마켓의 2009년 매출은 3천140억원, 이베이 옥션은 2천250억원에 달하고, 3위인 SKT텔레콤 11번가도 적어도 2천억원은 된다고 통계를 낸 공정위가 이런 정보를 속여 부당이익을 올린 회사에 처벌한 것은 고작 과태료 몇 백만원 이였네요.&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;기사내용에서도 아래와 같이 표현하고 있네요.&lt;/p&gt;&lt;p&gt;==&lt;/p&gt;&lt;p&gt;소비자들을 속여 수천억원의 부당매출을 올렸는데 처벌수위가 고작 공표명령 2~3일에 과태료 500만~800만원 부과라면 누가 그 법을 지키겠느냐는 지적이 자연스럽게 제기되고 있다.&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;/p&gt;&lt;p&gt;아직 밝혀지지 않은 불편한 진실들이 얼마나 많은걸까 하는 생각을 해보면 정말 무섭네요..&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>웹페이지를 스크롤캡쳐 하면 웬 메모장이 같이 캡쳐되나요?</title>
      <id>http://simples.kr/37143</id>
      <published>2011-04-25T19:05:34+09:00</published>
      <updated>2011-05-06T10:06:32+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/37143"/>
      <link rel="replies" type="text/html" href="http://simples.kr/37143#comment"/>
      <author>
         <name>소천</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;현재 v1.4.4를 오랫동안 탈없이 고맙게 쓰고 있는 상태입니다.&lt;/p&gt;
&lt;p&gt;최신 버전(4.1)이 나왔다는 사실을 알고 새 버전을 설치했는데 좀 이상하군요.&lt;/p&gt;
&lt;p&gt;웹페이지를 스크롤캡쳐 하면 웬 메모장이 뜨면서 빈 메모장이 같이 캡쳐되는군요.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;여러번 반복해봐도,&lt;/p&gt;
&lt;p&gt;설치후 재부팅해봐도 그렇고, 삭제후 새로 설치해도 마찬가집니다.&lt;/p&gt;
&lt;p&gt;일반 상식으로는 전혀 이해할수 없는 현상입니다.&lt;/p&gt;
&lt;p&gt;&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;&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;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>시대정신 3편 - ZEITGEIST:Moving forward</title>
      <id>http://simples.kr/37043</id>
      <published>2011-04-23T09:45:39+09:00</published>
      <updated>2011-04-23T09:45:39+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/37043"/>
      <link rel="replies" type="text/html" href="http://simples.kr/37043#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;


&lt;/p&gt;&lt;p&gt;시대정신3편이 나왔었네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;시대정신이라는 다큐는&amp;nbsp;돈과 역사, 종교에 대한 부분들이 어떻게 흘러왔는지,&amp;nbsp;&lt;/p&gt;&lt;p&gt;기득권 세력들이 어떻게 세상을 지배하는지에 대한 이야기 입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1편은&amp;nbsp;&lt;/p&gt;&lt;p&gt;http://simples.kr/4007&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2편은&lt;/p&gt;&lt;p&gt;http://simples.kr/4008&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그리고 아래 영상이 3편입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래 영상은 한글 자막이 있는 영상들입니다.&lt;/p&gt;&lt;p&gt;같은 영상이고, 56.com과 엠군 두곳에 있는 것인데 속도가 더 빠른 곳을 골라서 보시면 될 것 같습니다.&lt;/p&gt;&lt;p&gt;참고로 상영시간은 2시간 41분입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;embed src=&quot;http://player.56.com/v_58797433.swf&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;680&quot; height=&quot;500&quot; allownetworking=&quot;all&quot; allowscriptaccess=&quot;always&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;object id=&quot;mgoonPlayer&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; width=&quot;680&quot; height=&quot;500&quot; align=&quot;middle&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;movie&quot; value=&quot;http://play.mgoon.com/Video/V4399947@0&quot;/&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot;/&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#000000&quot;/&gt;&lt;embed src=&quot;http://play.mgoon.com/Video/V4399947@0&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; quality=&quot;high&quot; bgcolor=&quot;#000000&quot; width=&quot;680&quot; height=&quot;500&quot; name=&quot;mgoonPlayer&quot; align=&quot;middle&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot;/&gt;&lt;/object&gt;
&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>2011년 최대기대작 &apos;블레이드앤소울&apos; 플레이 영상</title>
      <id>http://simples.kr/36984</id>
      <published>2011-04-22T16:15:00+09:00</published>
      <updated>2011-04-23T00:22:34+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/36984"/>
      <link rel="replies" type="text/html" href="http://simples.kr/36984#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 :&amp;nbsp;http://game.chosun.com/article/view.php?no=75350&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;유튜브에 올라온 직업별 플레이 영상들 입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;정말 기존과는 많이 다른 차원의 게임이 될 것 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;p align=&quot;center&quot;&gt;&lt;embed height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;600&quot; src=&quot;http://www.youtube.com/v/0hpFJISAgZA?fs=1&amp;amp;hl=ko_KR&amp;amp;rel=0&amp;amp;hd=1&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;p align=&quot;center&quot;&gt;&lt;embed height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;600&quot; src=&quot;http://www.youtube.com/v/s3yJGZz5ut8?fs=1&amp;amp;hl=ko_KR&amp;amp;rel=0&amp;amp;hd=1&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;embed height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;600&quot; src=&quot;http://www.youtube.com/v/gpIRczB2FBQ?fs=1&amp;amp;hl=ko_KR&amp;amp;rel=0&amp;amp;hd=1&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot;/&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;embed height=&quot;340&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;600&quot; src=&quot;http://www.youtube.com/v/NEvzhbPnL3Y?fs=1&amp;amp;hl=ko_KR&amp;amp;rel=0&amp;amp;hd=1&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot;/&gt;&lt;/p&gt;
&lt;p&gt;[&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>[기사] 美 IT 빅4, 순이익 168억달러… 세계의 절반(글로벌 30대 IT 기업)</title>
      <id>http://simples.kr/36982</id>
      <published>2011-04-22T16:11:15+09:00</published>
      <updated>2011-04-22T16:11:15+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/36982"/>
      <link rel="replies" type="text/html" href="http://simples.kr/36982#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 :&amp;nbsp;http://news.chosun.com/site/data/html_dir/2011/04/22/2011042200275.html&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;별 다른 이야기는 아닙니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;미국이 어떻게 소프트웨어 저작권을 중요하게 생각하고 있고,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;개발자들이 얼마나 자신의 가치를 인정받고 있는지 생각해볼만한 기사인 것 같네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;미국이라는 나라가 외국하고 무역을 하거나 협상을 하면 항상 먼저 저작권 보호를 거는 것을 보면&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;정말 잘 될 수 밖에 없는 나라라는 것을 알 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>10년을 거꾸로 돌리는 MB악법(카툰릴레이)</title>
      <id>http://simples.kr/36979</id>
      <published>2011-04-22T15:59:05+09:00</published>
      <updated>2011-04-22T15:59:05+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/36979"/>
      <link rel="replies" type="text/html" href="http://simples.kr/36979#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;2009년에 유명 웹툰 작가들이 모여서 MB악법이라는 릴레이 카툰을 만들어 배포한 적이 있었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;요즘들어 그런 법안들을 다시 생각하게끔 하는 일들이 벌어지고 있는데요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;시간날 때 보고 어떻게 인생을 살아야 할지 고민해봐야겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px; &quot;&gt;&lt;b&gt;릴레이 카툰 잘 정리된 곳 :&amp;nbsp;http://www.pressian.com/article/critics_article_list.asp?series_idx=364&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;관련 책자 :&amp;nbsp;http://book.daum.net/detail/book.do?bookid=KOR9788990816825&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://www.simples.kr/files/attach/images/58/979/036/1.png&quot; alt=&quot;1.png&quot; title=&quot;1.png&quot; class=&quot;iePngFix&quot; width=&quot;459&quot; height=&quot;693&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>[기사] 한게임은 합법? 골드 환전상 활개 &apos;안방카지노&apos;</title>
      <id>http://simples.kr/36428</id>
      <published>2011-04-18T10:48:30+09:00</published>
      <updated>2011-04-18T10:48:30+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/36428"/>
      <link rel="replies" type="text/html" href="http://simples.kr/36428#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 :&amp;nbsp;http://news.mt.co.kr/mtview.php?no=2011041715591114282&amp;amp;vgb=column&amp;amp;code=column131&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;요약하자면 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;============================&lt;/p&gt;&lt;p&gt;&lt;p&gt;NHN측은 실제 돈이 아니라 ‘사이버 머니’로 게임을 하기 때문에 합법적이라고 주장하고 있다. 그러나 PC 접속만으로 안방에서 누구나 쉽게 포커를 즐길 수 있는데다 이를 곧바로 실제 돈으로 현금화할 수 있는 길이 열려있어 불법 도박장과 다를 바 없다.&amp;nbsp;&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;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;도박게임으로 포인트를 얻어 그 포인트를 현금화 하는 행위가 일어나는 걸 뻔히 알고, 이미 이렇게 기사까지 나는대로 그대로 두는 걸 보면 또 어떤 권력의 힘에 의해 돌아가는건지 생각하기 힘들정도네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;암튼 작게하면 범죄, 크게하면 합법이 되는 세상인 것 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;사실 구글도 검색엔진을 만들어서 전세계 사이트를 다 퍼가는데, 검색봇 표준이 있다지만,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;퍼가는게 기본이고, 못퍼가게 하려면 운영자가 알아서 막아야 한다는게 참 애매한 기준이네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>[기사] 교과서 왜 비싼가 했더니…뒷 돈 받아 흥청망청</title>
      <id>http://simples.kr/36424</id>
      <published>2011-04-18T10:41:47+09:00</published>
      <updated>2011-04-18T10:41:47+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/36424"/>
      <link rel="replies" type="text/html" href="http://simples.kr/36424#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 :&amp;nbsp;http://news.nate.com/view/20110418n02914?mid=n0400&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;주요 내용은 아래와 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;===========&lt;/p&gt;&lt;p&gt;&lt;p&gt;국정교과서를 만들어 파는 한국검정교과서 직원들이 업체로부터 10억 원대의 뇌물을 받았습니다. 이 돈으로 룸살롱가고 해외 여행도 했는데, 때문에 학생들 교과서 값이 크게 비싸졌습니다.&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;b&gt;우리나라는 어케 뒷돈 관련안된 것들이 없냐 ㅡㅡ;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;라는 댓글을 보니 세상은 얼마나 많은 위험한 일들이 숨겨져 있을지 겁이 나네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;불편한 진실...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;남들보다 돈을 더 벌기 위해서는 어떤 먼가가 있어야 하는데,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;혁신적이거나 완전 부폐하거나...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;암튼 씁쓸하네요..&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>스트리트파이터 X 철권 (Street Fighter X Tekken)</title>
      <id>http://simples.kr/36037</id>
      <published>2011-04-13T13:13:24+09:00</published>
      <updated>2011-04-13T13:13:24+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/36037"/>
      <link rel="replies" type="text/html" href="http://simples.kr/36037#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;정말 빅매치네요. 스트리트파이터 캐릭터와 철권 캐릭터와의 한판 승부.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;일단 스트리트파이터 스타일에 철권을 입힌 버전이 먼저 나왔나보네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;철권 스타일에 스트리트파이터를 입힌 버전도 나온다고 하네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;게임 영상 자체가 최고의 광고네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;object width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/X6_P8acVyOQ&amp;amp;hl=ko_KR&amp;amp;feature=player_embedded&amp;amp;version=3&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://www.youtube.com/v/X6_P8acVyOQ&amp;amp;hl=ko_KR&amp;amp;feature=player_embedded&amp;amp;version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래는 실재 게임영상이 포함된 동영상입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;object style=&quot;height: 390px; width: 640px&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/2DJzwy-BgdU?version=3&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://www.youtube.com/v/2DJzwy-BgdU?version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;/&gt;&lt;/object&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>현대 Accent 멋진 광고</title>
      <id>http://simples.kr/35929</id>
      <published>2011-04-12T10:32:54+09:00</published>
      <updated>2011-04-12T10:37:35+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/35929"/>
      <link rel="replies" type="text/html" href="http://simples.kr/35929#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;


&lt;/p&gt;&lt;p&gt;3D영상으로 저런 멋진 광고를 찍다니 신기하네요 ~&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;object width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/tu0TRA6a21Q&amp;amp;hl=ko_KR&amp;amp;feature=player_embedded&amp;amp;version=3&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://www.youtube.com/v/tu0TRA6a21Q&amp;amp;hl=ko_KR&amp;amp;feature=player_embedded&amp;amp;version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>강점을 강조하되 약점을 고치지도 마라.</title>
      <id>http://simples.kr/35547</id>
      <published>2011-04-08T14:23:33+09:00</published>
      <updated>2011-04-08T14:35:36+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/35547"/>
      <link rel="replies" type="text/html" href="http://simples.kr/35547#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;&lt;strong&gt;&lt;span style=&quot;background-color: rgb(228, 255, 117); color: rgb(0, 0, 0); &quot;&gt;강점을 강조하되 약점을 고치지도 마라.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;심플스의 운영자 esniper(박병익)입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 19px;&quot;&gt;이제 컴퓨터를 시작해서 공부하는 분들의 마인드 컨트롤에 도움이 될만한 이야기가 생각이 나서 이렇게 글 한번 적어봅니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;이 글의 제목은 제가 요즘에 가장 마음에 와닿은 글귀이기도 합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;왜냐면 저도 은근히 제 약점들을 고치기 위해서 엄청난 시간을 보내왔고,&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;아마도 앞으로도 평생이 걸려도 모든 약점을 고치지 못할 것입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;그런데 약점을 고치는데 열중하다보니 내 자신이 가진 강점들을 더 강조하는 것에는 소홀 했던 것입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;현실적으로 보자면, 토익점수, 자격증, 학력이 약점이라고 생각하는 분들은 자꾸 그곳에 엄청난 시간을 할애하게 되어있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;하지만 주변에 성공한 분들을 보시면 절대 그런것에 연연하지 않습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;왜냐면 그냥 자기의 강점을 살려서 좋아하는 일하면서 돈벌면 되거든요.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;이 말이&amp;nbsp;인생에서&amp;nbsp;상당히 중요한 부분을 알려주는 것 입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;저는 20대 초반까지도 절대 이해할 수 없던 부분입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;하지만 결혼을 하고 주변 지인들이 젊은나이에 세상을 떠나는 모습을 보면서 알 았습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;절대로 우리가 생각한 만큼 시간이 여유롭지 않다는 점입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;약점이라고 생각이 드는 부분들을 다 다음 세상에서 고치든지 어쩌든지 하고,&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;일단은 자신이 가장 재밌게 느끼는 부분, 자신이 남들보다 훨씬 잘한다고 믿는 그 강점들 더 발전시켜야 합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;분명 본인들이 더 잘아실 겁니다. 자신이 잘하는 일을 할때 더 재밌고, 더 빨리 그 분야에서는 최고가 될 수 있다는 것을...&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;하지만 알고 있으면서도 못하는건 시간이 없어서 이지만, 그렇게 시간이 없게 만드는건 자신이 느끼고 있었던 그 약점들을 고치기 위해서 써버린 시간 때문일 것입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;지금이라도 자신들이 좋아했던일이 무엇있는지 생각해보시고, 그것이 자신이 강점이라면 반드시 그것을 가장 최우선입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;그리고 항상 건강관리는 필수입니다. 꾸준한 운동과 규칙적인 생활습관을 유지하고, 새벽늦게까지 잠을 안잔다거나 식사를 거르거나 하는 것은 절대 있어선 안됩니다. 몸이 아픈상태로 잘되면 뭐하러 지금 몸 성할때 고생합니까?&lt;/p&gt;&lt;p style=&quot;line-height: 19px; &quot;&gt;나중에 병원에 입원한 후에 주변 사람들을 슬프게 하는 것만큼 힘든일이 없습니다. 컴퓨터 하시는 분들 반드시 건강 신경쓰시길 바라면서 이만 글을 줄이겠습니다.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>[기사] 개인정보 &apos;줄줄&apos;…스마트폰 앱은 조사중</title>
      <id>http://simples.kr/35496</id>
      <published>2011-04-08T09:56:48+09:00</published>
      <updated>2011-04-08T09:56:48+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/35496"/>
      <link rel="replies" type="text/html" href="http://simples.kr/35496#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;기사원문 :&amp;nbsp;http://biz.chosun.com/site/data/html_dir/2011/04/07/2011040701001.html&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;주 내용은&lt;/p&gt;&lt;p&gt;온라인 음악서비스업체 판도라의 애플리케이션(응용프로그램·이하 ‘앱’)은 이용자가 서비스 등록을 할 때 나이·성별·위치 같은 정보를 모은 뒤, 
이를 광고 회사로 자동 전송하도록 설계됐다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위와 같은데, 또 어떤 앱들이 저런식으로 구현되었을지 생각만 해도 끔찍하네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;사실 요즘 온라인 사이트 가입할때 꼭 필수로 확인해야 하는 부분이 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;제3자 정보제공 동의&lt;/b&gt; 체크 부분인데요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이거는 사실 반드시 체크하지 않아도 되는 부분인데도 반드시 해야하는 것처럼 가입할때 사용자 스스로 개인정보를 파는걸 허가한 것처럼 유도하고 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;세상 참 많이 무서워졌네요.&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>[기사] 구글, 1억弗 들여 유튜브에 프리미엄 채널 신설</title>
      <id>http://simples.kr/35494</id>
      <published>2011-04-08T09:54:11+09:00</published>
      <updated>2011-04-08T09:54:11+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/35494"/>
      <link rel="replies" type="text/html" href="http://simples.kr/35494#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;기사 원문 :&amp;nbsp;http://www.edaily.co.kr/news/NewsRead.edy?newsid=01767926596213824&amp;amp;SCD=DD41&amp;amp;DCD=A00301&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;주 내용은&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;p&gt;신설되는 채널은 약 20여개로 방송되는 분야는 예술과 스포츠 등 다양하다. 구글은 이를 위해 현재 관련 전문 인력을 채용하고 있으며 프리미엄 채널의 콘텐츠 제작에만 1억달러 이상을 사용할 계획이다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위와 같고, 지금도 동영상 스트리밍 시장을 거의 독점하듯이 하고 있는 유튜브인데.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이제는 TV방송국과 같은 형태의 채널을 전문적으로 운영한다고 하네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;구글 TV가 이제 거의 모든 세상에 퍼지고, 세계적인 매체들이 유입되겠네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;정말 시대가 급변하다는걸 실감하게 되네요.&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>해커의 유혹에 빠지기 쉬운 청소년들에게, 순간의 선택이 평생을 좌우한다</title>
      <id>http://simples.kr/35403</id>
      <published>2011-04-07T16:46:40+09:00</published>
      <updated>2011-04-07T16:46:40+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/35403"/>
      <link rel="replies" type="text/html" href="http://simples.kr/35403#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;원문 :&amp;nbsp;&lt;a href=&quot;http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?curPage=1&amp;amp;menu_dist=2&amp;amp;seq=17643&amp;amp;dir_group_dist=0&quot;&gt;http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?curPage=1&amp;amp;menu_dist=2&amp;amp;seq=17643&amp;amp;dir_group_dist=0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;안철수연구소의 컬럼글 제목입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 글중에 가장 중요한 부분은 다음 부분이다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;===================================&lt;/p&gt;&lt;p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Dotum, Verdana; font-size: 12px; line-height: 20px; color: rgb(102, 102, 102); border-collapse: collapse; &quot;&gt;&lt;strong style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; word-spacing: -0.1em; line-height: 20px; &quot;&gt;역지사지로 생각해보는 윤리의식&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Dotum, Verdana; font-size: 12px; line-height: 20px; color: rgb(102, 102, 102); border-collapse: collapse; &quot;&gt;&lt;br /&gt;그렇다면 어떻게 내가 하려는 행위가 악의적인 행위인지를 알 수 있을까? 이와 관련해서는 각각의 상황이 워낙 다양해 하나 하나 열거 하기가 힘들다. 이때 적용해 볼 수 있는 필자만의 방법이 있는데, &lt;b&gt;&lt;span style=&quot;background-color: rgb(228, 255, 117); color: rgb(0, 0, 0); &quot;&gt;“남이 나에게 이런 행위를 한다면 과연 나는 괜찮을까?”&lt;/span&gt;&lt;/b&gt; 그리고 “실제 세계에서 이런 일이 발생한다면 어떻게 될까?”를 생각해 본다. 이런 생각들을 종합해 보면 조금은 더 쉽게 판단할 수 있다.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Dotum, Verdana; font-size: 12px; line-height: 20px; color: rgb(102, 102, 102); border-collapse: collapse; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 18px; border-collapse: separate; color: rgb(0, 0, 0); font-family: Gulim; &quot;&gt;===================================&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Dotum, Verdana; font-size: 12px; line-height: 20px; color: rgb(102, 102, 102); border-collapse: collapse; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 18px; border-collapse: separate; color: rgb(0, 0, 0); font-family: Gulim; &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; &quot;&gt;보안 공부를 하는 학생들은 반드시 이 글을 명심해야 한다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; &quot;&gt;특히 리버싱을 공부하는 학생들은 내가 고생해서 만든 프로그램을 다른 사람이 조작하면 어떨지 기분을 생각해봐야 한다.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; &quot;&gt;물론 보안이 아니더라도 남의 글을 퍼가거나 저작권의 개념이 없는 사용자들도 똑같다.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; &quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 12px; &quot;&gt;요즘들어 가장 중요한 이야기가 아닌가 생각해본다.&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?curPage=1&amp;amp;menu_dist=2&amp;amp;seq=17643&amp;amp;dir_group_dist=0&quot;&gt;&lt;/a&gt;


&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>이젠 HTML5의 시대네요. 브라우저로 괴혼을 즐기기</title>
      <id>http://simples.kr/35367</id>
      <published>2011-04-07T13:17:38+09:00</published>
      <updated>2011-04-07T17:09:01+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/35367"/>
      <link rel="replies" type="text/html" href="http://simples.kr/35367#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;파이어폭스4, 구글크롬을 쓰면 HTML5가 기본지원이 되는데요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;CANVAS나 VIDEO같은 태그가 정말 강력하네요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;IE9도 HTML5를 지원하지만 아직 사용자가 그리 많지 않으니 구글크롬을 통해 아래 예제들을 실험해보시길 권장합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예쁜시계 예제&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://j.mearie.org/post/2395094598/ikamusume-5k&quot;&gt;http://j.mearie.org/post/2395094598/ikamusume-5k&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://cosmic.mearie.org/2010/12/ika5k/&quot;&gt;http://cosmic.mearie.org/2010/12/ika5k/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;브라우저로 괴혼 즐기기&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://kr.engadget.com/2011/03/15/katamari-hack-rolls-across-your-favorite-websites-leaving-swath/&quot;&gt;http://kr.engadget.com/2011/03/15/katamari-hack-rolls-across-your-favorite-websites-leaving-swath/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;지금 바로 아래 스크립트만 주소창에 붙여넣으면 실행됩니다.&lt;/p&gt;
&lt;br /&gt;
&lt;xmp&gt;
javascript:var i,s,ss=[&apos;http://kathack.com/js/kh.js&apos;,&apos;http://ajax.googleapis.com/ajax/libs/
jquery/1.5.1/jquery.min.js&apos;];
for(i=0;i!=ss.length;i++){s=document.createElement(&apos;script&apos;);s.src=ss[i];
document.body.appendChild(s);}void(0);
&lt;/xmp&gt;&lt;/div&gt;</content>
                  
   </entry>
   <entry>
      <title>탁구 치고 싶어지는 영상</title>
      <id>http://simples.kr/35286</id>
      <published>2011-04-06T13:39:53+09:00</published>
      <updated>2011-04-06T13:39:53+09:00</updated>
      <link rel="alternate" type="text/html" href="http://simples.kr/35286"/>
      <link rel="replies" type="text/html" href="http://simples.kr/35286#comment"/>
      <author>
         <name>esniper</name>
                  <uri>http://simples.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;


&lt;object style=&quot;height: 390px; width: 640px&quot; width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/QLB9VO0jkNY?version=3&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://www.youtube.com/v/QLB9VO0jkNY?version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;/&gt;&lt;/object&gt;


&lt;br /&gt;&lt;br /&gt;

&lt;object style=&quot;height: 390px; width: 640px&quot; width=&quot;640&quot; height=&quot;390&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/PtWc3hobzW8?version=3&quot;/&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed src=&quot;http://www.youtube.com/v/PtWc3hobzW8?version=3&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;390&quot;/&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;별거 아닌 것 같은데, 상당히 따라해보고 싶어지네요 ㅋ&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;왠지 재미날것 같다는~&lt;/p&gt;&lt;/div&gt;</content>
                  
   </entry>
</feed> 

