0x02 Reverse Engineer(126)
-
[Rootme] Go lang Basic
오류가 떠서 pdf로 흐흫
2019.01.31 -
[CodeEngn Basic Final]
2N이라는 동생이 코드 피드백을 해달라고 해서 문제가 기억이 안나서 다시 풀어보았다.. 문제 설명 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 문구가 출력되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 “문구 : Cracked by : CodeEngn!" 문제 컨셉 : KEY 값을 통해 바이너리에서 메시지박스를 출력시킬 수 있는가? CRACKME3.KEY를 생성해두어야 한다 이유 : OPEN_EXISTING(3) CRACKME3.KEY 내부 바이트는 18바이트가 되어야 한다. 18바이트가 아닐 경우, 프로그램은 종료된다. 초기화 작업을 거치고, .KEY에 있는 값[ESP+4]을 4바이트씩 ESI로 복사한다. 그 후 0x41값을 BL에 복사하게 되면 402041주소가 ..
2019.01.31 -
Simple VM solve 공개용
root 권한으로 실행 한 후 gcore를 이용하여 덤프를 뜨고 분석을 하면 된다. 여러가지 문자열들이 xor 처리 되면, 성공, 실패, 에러 등의 구문이 된다. 이런것으로 어디 루틴에 들어가면 안되는지 판단 한 후, 정적으로 리버싱을 한다. 정적으로 리버싱 하다보면, 200바이트를 가지고 노는 부분이 있는데 asm으로 살펴보면 이를 아주 많이 이용함을 볼 수 있다. 200바이트를 테이블로 만들고, 특정 함수에서 여러개로 분기되는 부분이 있고, 연산하는 부분이 있다. 그 부분들을 잘 캐치해서 코드를 작성하면 키를 구할 수 있다.
2018.12.24 -
어셈 64비트 구구단
후 스스로 했다 뿌듯 뿌듯 뿌듯 !!!! x86_64에서 호출 규약 이건 깨뜨리면 안 되는듯 ; 64bit is rdi -> rsi -> rdx -> rcx -> r8 -> r9 ; how to compile ; nasm -f elf64 -o test -l test.lst test.asm ;how to linker ; ld --dynamic-linker /lib64/ld-linux-x86-64.so.2 -o test /usr/lib/x86_64-linux-gnu/crtn.o test.o -lc global _start extern printf extern exit section .data message: db "%ld x %ld = %ld",10,00 ; \x0a\x00 i: dq 2 ; long int..
2018.07.13 -
어셈 32bit 구구단
#include #define INIT (1)char format[] ="result = %d x %d = %d\n";char end_print[] = "good bye\n";int j = 1;int i = 2;int result = 0;int main(){__asm{jmp _init_init:xor eax,eaxxor ecx,ecxxor edx,edxxor edi,edi jmp row_init row_init:mov ecx, i // x jmp row_comp row_comp:cmp ecx, 0x9 // 9단인지 비교 jle column_set// 2~9단이면 jmp end column_set:mov edi, j // yjmp column_comp column_comp:cmp edi, 0x9jle ca..
2018.07.13 -
행 역순 정렬 문제
보호되어 있는 글입니다.
2018.07.07