<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Hacker한 나라의 앨리스</title>
    <link>https://yem-yem.tistory.com/</link>
    <description>흰 토끼와 함께하는 Hacker한 나라 생존기</description>
    <language>ko</language>
    <pubDate>Sat, 27 Jun 2026 20:43:00 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>yem-yem</managingEditor>
    <image>
      <title>Hacker한 나라의 앨리스</title>
      <url>https://tistory1.daumcdn.net/tistory/8706312/attach/56b84fb9025e4649898ae11bb1253ed9</url>
      <link>https://yem-yem.tistory.com</link>
    </image>
    <item>
      <title>드림핵 Phase1_01</title>
      <link>https://yem-yem.tistory.com/2</link>
      <description>&lt;h1&gt;들어가며&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부를 시작하기 전에, 학습 흐름에 참고가 될 수 있도록 여태까지 학습 과정을 간단하게 정리하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;[기존 공부 스택]&lt;br /&gt;&lt;br /&gt;- 기간 : 2026.02 ~ 2026.05&lt;br /&gt;- 내용 : 정보통신개론 &lt;span style=&quot;background-color: #ffffff; color: #474747; text-align: start;&quot;&gt;&amp;rarr; 정보보안개론 &lt;span style=&quot;background-color: #ffffff; color: #474747; text-align: start;&quot;&gt;&amp;rarr; 드림핵(일부)&amp;nbsp;&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #474747; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; 정보보안기사필기이론서(법 제외) &lt;span style=&quot;background-color: #ffffff; color: #474747; text-align: start;&quot;&gt;&amp;rarr; K-Shield 주니어&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;- 드림핵 Path : Dream Beginners &lt;span style=&quot;background-color: #ffffff; color: #474747; text-align: start;&quot;&gt;&amp;rarr; Linux 101 &lt;span style=&quot;background-color: #ffffff; color: #474747; text-align: start;&quot;&gt;&amp;rarr; Building a Web Service&lt;br /&gt;- 특이사항 : 보안 공부 전에 Python, php, React 등 기초 수준의 공부 및 약간의 개발 했음&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #474747;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Hacker한 나라의 앨리스의 이론 공부는 &lt;b&gt;드림핵의 Path&lt;/b&gt;와 &lt;b&gt;자격증 공부&lt;/b&gt;를 기반으로 구성하였습니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #474747;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;b&gt;세부 학습 계획&lt;/b&gt;은 Phase가 바뀔 때마다 간단하게 소개할 예정입니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;[드림핵 Phase1]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Assembly Language&lt;/b&gt;&lt;br /&gt;&lt;b&gt;2. Security awareness training&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 앞으로의 포스팅은 공부 과정에서 정리한 원본을 기반으로 재구성한 &lt;b&gt;학습 기록&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요하실 경우, 흐름만 참고 부탁드립니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h1&gt;어셈블리어를 배우기 전에 알아야 할 컴퓨터 기초&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어셈블리어를 공부하다 보면 레지스터, 메모리, 주소, 비트 연산 같은 단어가 계속 등장한다. 처음부터 명령어를 외우려고 하면 금방 헷갈리기 때문에, 먼저 컴퓨터가 데이터를 어떻게 표현하고 다루는지 큰 그림을 잡아두는 편이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 어셈블리어를 읽기 전에 알아두면 좋은 기본 개념을 정리한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;진법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터는 데이터를 0과 1로 표현한다. 그래서 시스템 프로그래밍이나 리버싱을 공부할 때는 2진수와 16진수를 자주 보게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 64.7674%; height: 80px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 19.5092%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 진법 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 47.1574%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 의미 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 예시 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 19.5092%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 2진법 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 47.1574%; height: 21px; text-align: center;&quot;&gt;0과 1로 수를 표현&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;0b1010&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 19.5092%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 10진법 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 47.1574%; height: 21px; text-align: center;&quot;&gt;우리가 일상적으로 쓰는 숫자 표현&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.5092%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt; 16진법 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 47.1574%; height: 17px; text-align: center;&quot;&gt;0~9, A~F로 수를 표현&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;0xA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16진수는 2진수를 사람이 읽기 쉽게 줄여 쓰는 방식이라고 볼 수 있다. 예를 들어 2진수 &lt;code&gt;1010&lt;/code&gt;은 16진수로 &lt;code&gt;A&lt;/code&gt;이고, 보통 프로그래밍에서는 앞에 &lt;code&gt;0x&lt;/code&gt;를 붙여 &lt;code&gt;0xA&lt;/code&gt;처럼 표기한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;비트와 바이트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트(bit)는 컴퓨터가 다루는 가장 작은 데이터 단위다. 하나의 비트는 &lt;code&gt;0&lt;/code&gt; 또는 &lt;code&gt;1&lt;/code&gt; 중 하나의 값만 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이트(byte)는 8개의 비트로 구성된다.&lt;/p&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;1 byte = 8 bits&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8비트로 표현할 수 있는 경우의 수는 &lt;code&gt;2^8&lt;/code&gt;, 즉 256가지다. 그래서 1바이트는 &lt;code&gt;0~255&lt;/code&gt; 범위의 값을 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트를 읽을 때는 위치도 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 66.5098%; height: 59px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.4522%; text-align: center;&quot;&gt;&lt;b&gt; 용어 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 52.2144%; text-align: center;&quot;&gt;&lt;b&gt; 의미 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.4522%; text-align: center;&quot;&gt;&lt;b&gt; MSB &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 52.2144%; text-align: center;&quot;&gt;Most Significant Bit, 가장 왼쪽에 있는 비트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.4522%; text-align: center;&quot;&gt;&lt;b&gt; LSB &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 52.2144%; text-align: center;&quot;&gt;Least Significant Bit, 가장 오른쪽에 있는 비트&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부호가 있는 정수를 표현할 때는 보통 MSB를 부호 비트로 사용한다. MSB가 &lt;code&gt;0&lt;/code&gt;이면 양수, &lt;code&gt;1&lt;/code&gt;이면 음수로 해석한다. 음수 표현에는 2의 보수 방식이 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;바이트 오더링&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2바이트 이상의 데이터가 메모리에 저장될 때는 어떤 바이트를 낮은 주소에 먼저 둘지 정해야 한다. 이 방식을 바이트 오더링이라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 방식은 빅 엔디안과 리틀 엔디안이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 75.8134%; height: 63px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 15.5092%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 방식 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 29.7454%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 저장 순서 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.6734%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 주로 사용되는 곳 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 15.5092%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 빅 엔디안 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 29.7454%; height: 21px; text-align: center;&quot;&gt;최상위 바이트부터 낮은 주소에 저장&lt;/td&gt;
&lt;td style=&quot;width: 30.6734%; height: 21px; text-align: center;&quot;&gt;네트워크 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 15.5092%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 리틀 엔디안 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 29.7454%; height: 21px; text-align: center;&quot;&gt;최하위 바이트부터 낮은 주소에 저장&lt;/td&gt;
&lt;td style=&quot;width: 30.6734%; height: 21px; text-align: center;&quot;&gt;대다수 개인용 컴퓨터와 서버 CPU&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;code&gt;0x12345678&lt;/code&gt;이라는 값을 메모리에 저장한다고 생각해보자.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;빅 엔디안   : 12 34 56 78
리틀 엔디안 : 78 56 34 12&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열은 보통 사람이 읽는 순서대로 저장되지만, 정수처럼 여러 바이트로 구성된 데이터는 시스템의 바이트 오더링에 따라 메모리에서 보이는 순서가 달라질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;비트 연산&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트 연산은 값을 2진수로 보고 비트 단위로 계산하는 방식이다. 시스템 프로그래밍, 암호학, 리버싱, 익스플로잇 분석에서 자주 등장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 61.6279%; height: 101px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 연산자 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 의미 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; 설명 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;x | y&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;OR&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;둘 중 하나가 1이면 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;x &amp;amp; y&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;AND&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;둘 다 1이면 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;x ^ y&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;XOR&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;두 비트가 다르면 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;~x&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;NOT&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px; text-align: center;&quot;&gt;0은 1로, 1은 0으로 반전&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트 연산과 논리 연산은 비슷해 보이지만 목적이 다르다. 비트 연산은 실제 비트 단위 값을 계산하고, 논리 연산은 참과 거짓을 판단한다.&lt;/p&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;x &amp;amp; y   // 비트 단위 AND
x &amp;amp;&amp;amp; y  // 논리 AND&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시프트 연산도 자주 사용된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 58.6047%; height: 84px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;b&gt;연산자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;x &amp;lt;&amp;lt; n&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;비트를 왼쪽으로 n칸 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;x &amp;gt;&amp;gt; n&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;비트를 오른쪽으로 n칸 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 시프트는 보통 &lt;code&gt;2^n&lt;/code&gt;을 곱하는 효과가 있고, 오른쪽 시프트는 &lt;code&gt;2^n&lt;/code&gt;으로 나누는 효과가 있다. 특정 위치의 비트만 확인하고 싶을 때는 AND 연산과 시프트 연산을 조합해 비트 마스킹을 한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;인코딩과 디코딩&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터는 모든 데이터를 숫자로 다룬다. 사람이 읽는 문자도 내부적으로는 숫자로 저장된다. 이때 데이터를 특정 형식으로 바꾸는 과정을 인코딩, 다시 원래 의미로 해석하는 과정을 디코딩이라고 한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ASCII&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ASCII는 문자를 숫자로 표현하기 위한 표준 코드다. 7비트로 128개의 문자를 표현할 수 있고, 영어 알파벳과 숫자, 일부 특수문자를 포함한다.&lt;/p&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;'A' -&amp;gt; 65 -&amp;gt; 0x41&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Unicode와 UTF&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unicode는 전 세계의 문자를 하나의 표준으로 표현하기 위한 문자 집합이다. 각 문자는 &lt;code&gt;U+AC00&lt;/code&gt;처럼 고유한 번호를 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unicode를 실제 메모리나 파일에 저장하는 방식에는 여러 인코딩 형식이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 50.814%; height: 110px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.3455%; text-align: center;&quot;&gt;&lt;b&gt; 형식 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 72.6545%; text-align: center;&quot;&gt;&lt;b&gt; 특징 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.3455%; text-align: center;&quot;&gt;&lt;b&gt; UTF-8 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 72.6545%; text-align: center;&quot;&gt;가장 널리 쓰이는 가변 길이 인코딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.3455%; text-align: center;&quot;&gt;&lt;b&gt; UTF-16 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 72.6545%; text-align: center;&quot;&gt;16비트 단위 기반 인코딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.3455%; text-align: center;&quot;&gt;&lt;b&gt; UTF-32 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 72.6545%; text-align: center;&quot;&gt;모든 문자를 32비트로 표현&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;URL 인코딩과 Base64&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL에는 그대로 사용할 수 없는 문자가 있다. 공백이나 특수문자는 &lt;code&gt;%20&lt;/code&gt;처럼 퍼센트 인코딩으로 변환된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Base64는 이진 데이터를 ASCII 문자로 표현하는 인코딩 방식이다. 파일, 이미지, 바이너리 데이터를 텍스트 기반 환경에서 다룰 때 사용된다. 원본 데이터를 6비트씩 나누고, 각 값을 Base64 문자표의 문자로 바꾼다. 길이가 맞지 않으면 &lt;code&gt;=&lt;/code&gt; 문자를 패딩으로 붙인다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;운영체제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제는 하드웨어와 사용자 프로그램 사이에서 자원을 관리하는 소프트웨어다. CPU, 메모리, 입출력 장치 같은 하드웨어를 효율적으로 나누어 쓰게 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제의 주요 역할은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 프로세스에 CPU를 줄지 결정한다.&lt;/li&gt;
&lt;li&gt;각 프로세스에 메모리 공간을 할당하고 관리한다.&lt;/li&gt;
&lt;li&gt;입출력 장치와 프로그램 사이의 데이터 흐름을 관리한다.&lt;/li&gt;
&lt;li&gt;사용자와 컴퓨터 사이의 인터페이스를 제공한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제는 크게 커널과 셸로 나누어 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 57.2093%; height: 103px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.878%; text-align: center;&quot;&gt;&lt;b&gt; 구성 요소 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.122%; text-align: center;&quot;&gt;&lt;b&gt; 역할 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.878%; text-align: center;&quot;&gt;&lt;b&gt; 커널 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.122%; text-align: center;&quot;&gt;하드웨어와 소프트웨어 사이의 핵심 제어 담당&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.878%; text-align: center;&quot;&gt;&lt;b&gt; 셸 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.122%; text-align: center;&quot;&gt;사용자가 운영체제에 명령을 내릴 수 있게 해주는 인터페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 해킹에서 &quot;셸을 획득했다&quot;는 말은 공격자가 운영체제에 명령을 내릴 수 있는 실행 환경을 얻었다는 뜻이다. 그래서 어셈블리어를 공부할 때 운영체제와 셸의 개념은 단순한 배경지식이 아니라 실제 분석과 공격 흐름을 이해하는 데 중요한 기반이 된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어셈블리어는 CPU가 실제로 처리하는 명령에 가까운 언어다. 그래서 문법 자체보다도 컴퓨터가 데이터를 표현하는 방식, 메모리에 저장하는 순서, 비트 단위 연산, 운영체제의 역할을 먼저 이해하는 것이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서 정리한 핵심은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터는 데이터를 2진수로 표현하고, 사람은 16진수로 읽기 쉽게 다룬다.&lt;/li&gt;
&lt;li&gt;비트와 바이트는 메모리와 레지스터를 이해하는 기본 단위다.&lt;/li&gt;
&lt;li&gt;멀티바이트 데이터는 엔디안 방식에 따라 메모리 저장 순서가 달라진다.&lt;/li&gt;
&lt;li&gt;비트 연산은 마스킹, 플래그 확인, 암호화, 저수준 데이터 처리에 자주 쓰인다.&lt;/li&gt;
&lt;li&gt;인코딩은 문자와 바이너리 데이터를 컴퓨터가 다룰 수 있는 형식으로 바꾸는 과정이다.&lt;/li&gt;
&lt;li&gt;운영체제는 하드웨어 자원을 관리하고 사용자 프로그램이 실행될 수 있는 환경을 제공한다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>  토끼와의 여정</category>
      <author>yem-yem</author>
      <guid isPermaLink="true">https://yem-yem.tistory.com/2</guid>
      <comments>https://yem-yem.tistory.com/2#entry2comment</comments>
      <pubDate>Wed, 17 Jun 2026 11:42:18 +0900</pubDate>
    </item>
    <item>
      <title>Hacker한 나라의 앨리스</title>
      <link>https://yem-yem.tistory.com/1</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1차 프로젝트 개요&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본 프로젝트는 &lt;b&gt;2026년 하반기 동안 기술 컨설팅 및 모의해킹 직무 역량을 쌓기 위한 1차 학습 프로젝트&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기간 : 2026/06/04 ~ 2026/12/31&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;추진 배경 : &lt;/b&gt;보안은 웹, 네트워크, 시스템, 프로그래밍 등 &lt;b&gt;다양한 IT 지식을 기반&lt;/b&gt;으로 문제를 분석하고 해결하는 &lt;b&gt;응용 분야&lt;/b&gt;입니다. 저는 &lt;b&gt;비전공자로서&lt;/b&gt; 실습을 진행할수록 &lt;b&gt;기반 지식의 중요성을 체감&lt;/b&gt;하고 있습니다. 이에 &lt;b&gt;전문가의 피드백을 바탕&lt;/b&gt;으로 &lt;b&gt;학습 범위를 정리&lt;/b&gt;하고, 이를 &lt;b&gt;꾸준히 수행하기 위해&lt;/b&gt; 본 프로젝트를 시작했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;프로젝트 목표 : &lt;/b&gt;&lt;/b&gt;본 프로젝트는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;기술 컨설팅 및 모의해킹 직무&lt;/b&gt;를 위하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;기초 지식을 체계적으로 학습&lt;/b&gt;하는 것을 목표로 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기초 역량 확보&lt;/b&gt; : Web Hacking, System, Assembly 등 기반 지식 학습&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과물 축적&lt;/b&gt; : 블로그 기록, 자격증 취득, 개인 프로젝트 산출물 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로젝트 수행 계획&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;6~8월&lt;/b&gt; : 드림핵을 활용한 기초 공부&lt;/li&gt;
&lt;li&gt;&lt;b&gt;8~9월&lt;/b&gt; : 자격증 취득을 위한 공부&lt;/li&gt;
&lt;li&gt;&lt;b&gt;11~12월&lt;/b&gt; : 별도 자격증 취득을 위한 공부 예정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로젝트&lt;/b&gt; : 기간은 미정이지만, 6월 중 중순 이후 시작 예정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로젝트 블로그 구성 관련&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;앨리스의 모험 : 프로젝트 진행 중 느낀 점, 사담, 개인적 경험&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;토끼와의 여정 : Web/System/Assembly 등 보안 학습 기록&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모자 장수와의 티타임 :&lt;/b&gt; 외부 정보 정리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;하트 여왕의 심판 :&lt;/b&gt; 월간 회고, 중간 점검, 피드백 반영 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로젝트 관리 방식 : &lt;/b&gt;매월 말에는 학습한 내용, 완료한 목표, 미완료한 목표, 다음 달 계획을 정리하여 포스팅 예정입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;프로젝트 기대효과&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;기술 컨설팅 및 모의해킹 직무를 위한 기반 지식 함양&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;학습 과정 기록을 통한 꾸준한 동기부여&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;자격증, 문제 풀이, 개인 프로젝트를 통한 실질적인 결과물 확보&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비전공 보안 입문자들을 위한 참고자료 축적&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>୨୧ 앨리스의 모험</category>
      <category>1차 프로젝트 개요</category>
      <author>yem-yem</author>
      <guid isPermaLink="true">https://yem-yem.tistory.com/1</guid>
      <comments>https://yem-yem.tistory.com/1#entry1comment</comments>
      <pubDate>Wed, 10 Jun 2026 12:20:27 +0900</pubDate>
    </item>
  </channel>
</rss>