안녕하세요! 지난번에는 지뢰찾기 게임을 리버싱 했었는데요, 오늘은 어렸을 때 많이 했던 피카츄배구를 분석하였습니다. 디버거 툴은 치트엔진을 사용하였고, 악용방지를 위해 구체적인 방법은 포스팅하지 않겠습니다^^ 각각의 플레이어의 스코어를 제어하는 부분은 쉽게 할 수 있었습니다. 스코어는 4byte일 확률이 매우 높기 때문에 쉽게 접근할 수 있었고 초기 값과 변하는 값을 계속 확인할 수 있어서 금방 메모리 주소를 찾을 수 있었습니다. 총 점수 역시 5점, 10점, 15점으로 제한이 걸려있었고, 초기 값을 임의로 두고 값을 계속 변화시키면서 메모리 주소 값을 쉽게 찾을 수 있었습니다. 조금 시간이 걸린 부분은 게임 속도를 제어하는 부분이었습니다. 속도는 초기 값이 주어지지 않았고 저는 빨라지면 찾고자 하는 어..
안녕하세요! 동계 방학을 맞아 리버싱을 공부하고 있는 충남대 컴퓨터공학과 박경신입니다. 이번 시간에는 잠깐 쉬어갈 겸 제가 왜 수 많은 컴퓨팅 기술 중에서 리버싱을 공부하는지에 대해서 소개를 드리려고 합니다. 리버스 엔지니어링의 사전적 의미는 다음과 같습니다. ●리버스 엔지니어링(reverse engineering) : 소프트웨어 공학의 한 분야로, 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다. 이것은 시스템을 이해하여 적절히 변경하는 소프트웨어 유지보수 과정의 일부이다. 정보 보안 전문가에는 여러가지 직무가 있는데 크게 분석과 해킹으로 구분을 할 수 있습니다. 각각의 직무들이 필요한 기술들을 알아보면 다음과 같습니다. ● 분석 - Windows ● ..
안녕하세요! 오늘은 지금까지 배웠던 어셈블리어 명령어들을 응용하여 난독화 프로그램을 만들어보겠습니다. ●난독화 (Obfuscation) ●難(어려울 난) + 讀 (읽을 독) = 코드를 읽기 어렵게 만드는 것. ●왜?? 코드를 보호하거나 알아보기 힘들게 하기 위해 난독화를 진행한다. ●누가?? 악성코드 제작자, 소프트웨어 개발자 등등 xor 명령어를 응용하여 "hello world!"를 난독화해서 출력하는 프로그램을 만들어보겠습니다. 다음과 같은 어셈블리 프로그램을 구현해봤습니다. 지금까지 작성해왔던 프로그램과는 다른점은 main section뿐만 아니라 임의로 loop이라는 section을 추가했다는 점입니다. 코드를 분석을 해보면, hello world! 문자열을 가진 message를 스택에 push ..
안녕하세요! 오늘은 어셈블리어 inc, cmp, test, dec, jcc, call, jmp 명령어에 대해서 알아보겠습니다. ● x86 명령어 레퍼런스에 대한 자세한 내용은 이곳을(http://kernfunny.org/x86) 참고하세요. INC : 피연산자의 값을 1 증가시킴. # OF, SF, ZF, AF, PF에 영향 DEC : 피연산자의 값을 1 감소시킴. # OF, SF, ZF, AF, PF에 영향 INC나 DEC는 보통 반복문에서 많이 쓰입니다. CMP : 두 값을 비교 # cmp 레지스터, 상수값 # cmp r/m32, 상수값 # cmp r/m32, 레지스터 # cmp 레지스터, r/m32 # 참고 레퍼런스에 따르면 Source1에서 Source2를 뺀 결과에 의해 Flags가 영향을 받는..
안녕하세요! 지난 시간에 이어서 오늘은 어셈블리어 명령어 중 lea, and, or, xor 명령어에 대해서 알아보겠습니다. LEA (Load Effective Address) : 유효 주소 로드 # 출발지는 r/m32 # 목적지는 레지스터 # 레지스터 연산 결과를 레지스터에 저장(not 포인터) MOV와 무엇이 다른가?? # MOV는 값을 로드한다. mov eax, [ebx+ecx] # LEA는 유효 주소를 로드한다. lea eax, [ebx+ecx] lea 명령어를 사용해서 프로그램을 짜보겠습니다. gdb를 사용하여 분석을 하기전에 이 프로그램이 어떻게 동작할지 미리 고민을 해보시기 바랍니다. mov연산을 실행하고 나서 eax에는 1, ebx에는 4, ecx에는 7이 저장될 것입니다. 위에서 설명했듯..
- Total
- Today
- Yesterday
- system call
- 우분투
- mov
- 스택
- jmp
- 터미널
- call
- ubuntu
- 리눅스
- 리눅스 시스템 콜
- 치트엔진
- reversing
- 사이버공격
- linux
- 어셈블리어
- add
- 논리연산
- 어셈블러
- nasm
- 명령어
- 해킹
- vim
- instruction
- gdb
- 리버싱
- 리버스 엔지니어링
- cmp
- 어셈블리
- Push
- Sub
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |