본문 바로가기

리버싱19

리버싱 7(수정 예정) [2024.08.19]  local1이 30, local2가 501D가 29고  프로그램은 현재 실행 흐름을 중단하고0x404006 주소로 점프하여 그 위치에 있는 코드를 실행하게 된다  현재 코드에서 명령어를 조작하여 출력 값을 20으로 만드는 것을 연습한다  해당 부분을 JLE가 아닌 JG로 바꾸게 되어도 값이 20으로 출력된다  명령어 조작 후 출력된 값을 확인했을 때 20이라는 값이 나온 걸 확인할 수 있다  해당 부분에서 JLE가 아닌 JGE로 수정시켜도 값이 20으로 출력된다  위의 코드에서 CRACK을 진행하는데, 변경된 메모리 값과 코드를 드래그 후오른쪽 마우스를 클릭하고 Edit에서 Copy to executable을 선택한다   그렇게 되면 선택한 화면들이 나열되고 그 각각의 화면에서 .. 2024. 8. 19.
리버싱 6 [2024.08.16] [C Code]   [Assem Compile 32Bit] # nasm -f elf32 hello.asm -o hello.o# gcc -m32 -o hello hello.o #apt-get -y install gcc-multilib #apt-get -y install nasm   dev c++ 프로그램에서 Hello World를 출력하는 소스 코드를 생성한다  ollydbg에서도 파일을 열어 Hello World가 나오는 것을 확인하고 Kali Linux로 넘어간다  hello.c라는 파일을 생성하고  화면과 같이 입력해 주고 저장한다  파일명을 hello.asm으로 변경시켜 주고  필요한 개발 도구를 설치시킨다  어셈블리어로 작성된 hello.asm 파일을 32비트ELF(Exec.. 2024. 8. 16.
리버싱 5 [2024.08.14]   지난 시간에 이어서 오늘도 복습 시간을 가져 본다F2를 눌러 블랙 포인트를 설정한다 블랙 포인트는 특정 명령어에 도달할 때 프로그램 실행을 중지하도록 설정하는 중단점이며,이를 통해 디버깅 시 원하는 위치에서 코드 실행을 멈추고 상태를 검사할 수 있다  F9 키를 누르면 프로그램 실행이 시작된다프로그램은 설정한 블랙 포인트까지 실행되고,해당 블랙 포인트에 도달하면 자동으로 멈추게 된다 *이 과정은 디버깅할 때 코드의 특정 지점까지 빠르게 이동하는 데 유용하다  그런 다음 F8로 실행해 주게 되면 EBP-C, 8, 4에 각각 값이 저장된다  현재 EAX와 EDX를 더하여 레지스터 값이 현재 2가 되었다  mov 명령어를 통해 3을 만들어 준다  과정을 다 거친 후 실행 파일을 보게.. 2024. 8. 14.
리버싱 4 [2024.08.13] [데이터 전송 명령어] 01. mov 02. add  메모리와 메모리끼리는 더하기가 불가하다  03. sub   오늘은 지난 시간에 이어 사칙연산을 연습해 보는 실습 시간을 가진다먼저 mov를 이용해 eax 레지스터에 10을 저장시키고 sub로 eax에서 5를 뺀다   10에서 5를 빼면 5라는 결과값이 나오기 때문에 eax 레지스터 값은 5가 된다  다시 5를 빼서 6이라는 숫자를 저장하게 되고  현재 상태에서 3을 두 번 빼서 eax 레지스터 값을 0으로 만든다   이번에는 eax에 10, ecx에 5, edx에 3이라는 값을 넣고,[402000]의 메모리 주소 헥사값을 5로 만든다    이미지에서 볼 수 있는 것처럼, 마지막 명령어 실행 이후 32비트의 음수 값으로 16진수 .. 2024. 8. 14.
리버싱 3 [2024.08.12] [레지스터] > CPU가 사용하는 임시 기억 장치> 특정 작업 수행  01. 범용 레지스터> 다양한 목적으로 사용 1) AX(Acuumulator Register) > 산술 연산용 누산기로 사용, 입출력 연산에도 사용> AX: 16비트> EAX: 32비트> RAX: 64비트 2) BX(Base Register) > 메모리 주소 계산 시 베이스로 주로 사용> BX: 16비트> EBX: 32비트> RBX: 64비트 3) CX(Count Register) > 반복 명령어에서 카운터로 주로 사용> CX: 16비트> ECX: 32비트> RCX: 64비트 4) DX(Data Register) > 입출력 명령어에 사용 곱셈과 나눗셈 연산에서 추가적인 데이터 레지스터로 사용> DX: 16비트> .. 2024. 8. 13.
리버싱 2 [2024.08.09] [실습 환경 설정] 01. 프로그램 설치 1) Windows 10 2) Kali Linux 3) DEV C++ 4) OllyDBG    리눅스와 유닉스는 ELF로, Windows의 경우에는 PE라고 볼 수 있다PE라는 건 윈도우 실행 파일의 구조다  우리가 실습을 진행할 것은 EXE, DLL이다  처음에는 PEview, PEid로 사용한다  Security 53 65 63 75 72 69 74 79   가상 주소이기도 하지만 절대 주소이기도 하다   create 함수가 무슨 역할을 하는지는 구글에 한 번씩 검색해 보는 게 좋다  DLL이란 프로그램들이 동시에 사용할 수 있는 코드, 데이터, 함수를 포함한 라이브러리다자체 DLL 파일을 사용하는 경우도 있다는 것을 알고 있으면 좋다 .. 2024. 8. 9.