0x02 Reverse Engineer(124)
-
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 -
공개용 Writeup PE Password
문제의도 PE PASSWORD Protector에 대해 이해를 하고 있는가? 패커가 언패킹이 되는 과정을 이해하고 있는가? 바이너리 열고 인증까지 소요시간 2017.12.01 ~ 2018.06.06 풀고 난 후 .. 패커를 직접 만들어 테스트를 해보고 싶어 졌다. 어셈블리어 코딩이 더 재밌어졌다. 보이는 것만 쫓아가다가는 때로는 진전이 없다. 풀기 위해 공부 한 것 PE Password Protector Simple Writeup Original과 Packed의 EntryPoint가 왜 달라져있는지를 생각해보아야 한다. 문제에서 패스워드를 입력하는 Dialog가 있다고 무조건 맹신하지 말자. breakpoint를 걸지 않고 Trace하면 Win32API의 특성에 의해 Message 큐 루틴을 벗어날 수 ..
2018.06.06 -
PEPassword
보호되어 있는 글입니다.
2018.06.06