http://cdpython.tistory.com/35

 

http://ha.ckwith.me/entry/열혈강의-파이썬-간단한-명령어-해석기-설계

탐험을 많이 경험한 사람의 말 한마디, 한마디를 내 생활에 되새겨보자.

 

 

with anysia :)

 

핵심 부분만 확인해보려고 한다.

분석할 파일은 Input으로 값을 받고, Serial까지 입력 받는 프로그램이다.

이 때, Serial은 Text 파일에 정해져 있고, 그 Serial에 맞는 Input 값을 구하라는 것이 이 문제의 내용이다.

 

그러다면 Serial은 정해져있고, Input 값은 사용자가 맞추는 것이므로 Input 값에 대한 어떤 뭐시기, 거시기가 있은 뒤에 Serial 값과 같은지 아닌지 비교를 하는 루틴이 있을 것이라 예상해볼 수 있다.

 

그렇다면 Input 값을 어떻게 조작하는지 살펴보는 것이 제일 중요한 루틴이라고 할 수 있겠다.

아래 그림을 살펴보자.

 

 

 

일단 왼쪽 옆구리를 보면 시커먼 선이 있는 것으로 봐서 루프를 돌고 있는 것이 확인된다.

그리고 CMP 명령어를 뭔지 모르지만 보면 3번 주기 혹은 반복하는 루틴일 것이다.

 

위에서 XOR 연산에 대해서 주목할 필요가 있다.

XOR EAX, EAX 와 같이 쓰이는 경우와 XOR EAX, 43 혹은 XOR EAX, key value 등의 형식으로 표현되어 자주 사용되는 XOR은 후자의 경우 특정 값에 대해 간단히 암/복호화 할 때 사용되곤 한다.

 

이때, 원파일은 Input이고, Key는 10, 20, 30 로 input 값이 1byte 씩 바뀔 때마다 바뀐다.

그렇다면 Serial 또한 똑같이 첫번째 byte는 10로, 두번째 byte는 20로, 세번째 byte는 30로 xor 해보자

 

주어진 Serail = 5B 13 49 77 13 5E 7D 13

 

XOR 5B, 10 = 4B 'K'

XOR 13, 20 = 33 '3'

XOR 49, 30 = 79 'y'

XOR 77, 10 = 67 'g'

XOR 13, 20 =  33 '3'

XOR 5E, 30 = 6E 'n'

XOR 7D, 10 = 6D 'm'

XOR 13, 20 =  33 '3'

 

결과 : K3yg3nm3

 

 

 

 

 

 

 

 

 


새로운 꿈을 꿀 수 있다는 생각을 갖게 해준 주한이의 소식을 페이스북을 통해서 알게 됐다. 

항상 새로 배우는 것에 열정적이고, 즐거워하고, 모험을 즐기며, 사람들과의 만남을 즐기던 친구

나에게 나중에 먼 훗날 우리 모두 전문가가 되어 우리가 배운 지식을 나눠주는 학교를 세우자고 했던 친구


그 때 그 이야기를 해준 그 친구에게 참 고맙다. 

나에게도 그런 생각을 갖게 해준 친구라서 참 고맙고, 그 꿈을 공유해준 친구라서 고마웠다.


그로부터 약 4년이 지나고 

참 나는 꿈을 향해 조금 더 나아가지 못하고 

하루 살이에 불평, 불만으로 가득찬 삶을 살고 있지 않나 생각된다.


새로운 배움에 목마르지 않고, 

삶의 불만만 가득한채..


타지에서 그 친구의 기쁜 소식을 듣는다.

너무나 멋지고, 꿈을 공유받은 내가 참 작아보인다.


그 친구가 꿈을 공유해준 것을 후회하지 않도록

나도 조금씩 나를 바꾸고, 배우고, 나눠야겠다.





+ Recent posts