오늘은 어셈블리어 명령어 중 많이 쓰이는 MOV, 산술 연산, JMP, CMP, 조건 분기, PUSH, POP, CALL, RET 명령어에 대해서 쉽게 배워보는 시간을 가져보겠습니다. MOV 명령어 MOV 명령어는 데이터를 저장하거나 레지스터 간 이동을 수행합니다. 이 레지스터는 CPU 내부에 존재하는 메모리 공간으로, 데이터를 저장하거나 처리할 때 사용됩니다. MOV 명령어는 MOV 명령어 뒤에 저장하고자 하는 데이터와 대상 레지스터를 입력하는 것으로 사용할 수 있습니다. 위 코드는 5라는 값을 갖는 AX 레지스터를 생성합니다. 즉 AX 레지스터에 5라는 값을 저장하는 역할을 합니다. 산술 연산 명령어 CPU에서는 수학적 연산을 처리할 수 있는 명령어가 포함되어 있습니다. ADD, SUB, MUL, D..
안녕하세요! 지난번에는 지뢰찾기 게임을 리버싱 했었는데요, 오늘은 어렸을 때 많이 했던 피카츄배구를 분석하였습니다. 디버거 툴은 치트엔진을 사용하였고, 악용방지를 위해 구체적인 방법은 포스팅하지 않겠습니다^^ 각각의 플레이어의 스코어를 제어하는 부분은 쉽게 할 수 있었습니다. 스코어는 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가 영향을 받는..
- Total
- Today
- Yesterday
- 리눅스
- 해킹
- reversing
- jmp
- 스택
- 터미널
- 논리연산
- 어셈블러
- add
- 리눅스 시스템 콜
- 사이버공격
- ubuntu
- Push
- instruction
- 우분투
- mov
- 어셈블리
- vim
- 리버싱
- Sub
- 치트엔진
- system call
- gdb
- call
- 명령어
- nasm
- linux
- 리버스 엔지니어링
- cmp
- 어셈블리어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |