본문 바로가기

Reversing3

(REV) 간단한 지뢰찾기 코드인젝션 목차 찾은 개수 카운팅 변수 찾고 어디서 access 하는지 확인 지뢰 그려주는 함수 찾기 코드인젝션 일단, 치트엔진으로 분석을 시작했다. 찾은 개수 카운팅하는 변수를 찾고, 어디서 access 하는지 검색했다. 칸은 16*16 = 256 개고, 지뢰는 40개 이므로, 현재 찾은 개수와 찾아야 하는 개수를 비교해 같으면 mine.exe+347C 에 1을 넣어 호출해준다. EIP 조작해서 1넣고 호출해보면, 깃발로 모든 지뢰를 표시해준다. 0을 넣어서 호출하면 지뢰가 표시되고 게임이 끝난다. 0 or 1 으로 게임승리와 종료를 판별하는 것 같다. 다음으로, 웃는얼굴을 클릭했을 때 핸들러를 찾기 위해, 지뢰를 초기화해주는 initialize (임의로 명명) 함수의 xref 를 찾아가 봤더니 이렇게 생긴 함수.. 2022. 1. 11.
[Reversing] (Assembly) 어셈블리프로그래밍 - 별찍기 리눅스환경에서 실행됩니다 nasm 컴파일러를 이용해 컴파일 할껍니다. sudo apt-get install nasm nasm -f elf64 파일명.asm -o 파일명.o #64bit 파일 nasm -f elf 파일명.asm -o 파일명.o#32bit 파일 ld 파일명.o -o 파일명 -lc-dynamic-linker /lib64/ld-linux-x86-64.so.2 (ld 파일은 되는걸로 골라서 쓰자. 저게 안될수도 있다.) 섹션 우리가 만들 ELF 파일 섹션헤더에는 많은 헤더가 있는데, .data, .text 섹션이 핵심이다. .text 는 우리가 작성한 코드가 컴파일되어 들어가고 .data 에는 초기화된 전역변수, .bss 에는 초기화되지 않은 전역변수 등이 들어간다. nasm 으로 코딩할 때, 전.. 2021. 5. 31.
[Reversing] gdb debugging, no-symbol debugging, 실행 하는 법 간단한 .c 파일을 예제로 설명하겠다. gcc 로 컴파일 한다. gdb 명령어 다른 블로그에 좋은글이 많으니까 여기서는 자주 쓰는 것만 조금 정리할게요 r (run) : 바이너리를 실행한다. break point 가 없으면 끝까지 실행되고 종료된다 c (continue) : r 로 시작한 다음, break point 에서 멈추면 그 다음부터는 c 로 실행해야 한다. r 누르면 재시작 b *[주소 or 함수이름] (breakpoint) : 지정한 주소에 break point 를 건다. b *0x401000 b *main b *main+34 주로 이런식으로 사용 info b : break point 리스트를 보여준다. del [숫자] : break point 리스트에 고유번호로 break point 를 없앨.. 2021. 4. 9.