Security

    [어셈블리어] FS Register 를 자세하게 알아봅시다.

    유저모드의 FS레지스터는 현재 프로세서의 TEB(Thread Environment Block)을 가리키고 있습니다. 이는 처음 한 프로세스 내의 처음 생성된 쓰레드부터 0x7ffde000으로 부터 쓰레드가 생성될때마다 4KB씩 감소면서 생성됩니다. 첫번째 쓰레드 : 0x7ffde000 두번째 쓰레드 : 0x7ffdd000 세번째 쓰레드 : 0x7ffdc000 .... 참고로 커널 모드의 프로세스에서는 FS 레지스터는 일반적으로 KPCR(Kernel Process Control Region)이라는 곳을 지칭하고 있는데 이는 XP 같은 경우 0xffdf0000 이라는 친숙한 주소의 값입니다. 물론 OS마다 다르지만 FS의 GDT 정보를 확인하여 KPCR을 찾으시면 되겠습니다. 출처: http://passke..

    [어셈블리어] 헷갈리는 것들 ! 정리

    LODS, LODSB, LODSW, LODSD(Load String Byte, Word, DWord) - ESI가 가르키는 곳에서 지정한 크기(Byte, Word, DWord) 만큼 읽어와 EAX에 복사한다. ESI는 복사한만큼 이동한다. TEST , - 이 연산은 대부분이 과 가 같게 설정된다. 예를들면 TEST EAX, EAX. 이 연산은 논리회로의 AND연산을 수행하지만 결과값을 저장하지 않는다. 단지 EAX=0일경우 ZF=1이 되고 EAX!=0일경우 ZF=0이 된다. 그리고 OF, CF는 0이된다. PUSHAD EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP 레지스터의 값을 스택에 PUSH한다.저장순서는 EAX > ECX > EDX > EBX > ESP > EBP > ESI ..

    [BOF] strcpy 와 strncpy 함수의 취약점

    취약점을 공부하시는 분들 대다수는 Memory Corruption 취약점에대해 잘 알고 계실것입니다. 길이(메모리 경계) 를 검사하지 않는 함수는 buffer overflow에 취약하여 Exploit당하기 쉽죠.- BOF에 취약한 대표적인 함수 : strcpy , strcmp, gets, scanf, strcat, getwd, sprintf 등등 그래서 보통은 strncpy 같은 길이를 검사하는 함수를 쓰게되는데 .. 이함수도 bof에 안전한건 절대 아니였다. 나도 항상 길이를 검사하면 괜찮겠지 했는데 그게아니였다 ㅇㅅㅇ;; 먼저 strcpy , strncpy 함수부터 알아봅시다. strcpy : NULL문자를 만나기 전까지의 문자열을 복사합니다.strncpy : 문자열을 지정된 길이만큼 복사합니다. s..

    OllyDbg를 설치해보자 !

    리버서가 되기위한 첫걸음! OllyDbg 디버거를 설치해봅시다. 올리디버거 공식 홈페이지 공식 홈페이지로 이동하시면 이런 메인화면이 뜨게됩니다. 중앙의 VERSION 2.01을 클릭해주세요. OllyDbg를 눌러주시면 다운로드가 시작됩니다. 압축을 풀어주시면 이상한 물감을 쏟은거같은 아이콘이하나 보입니다. Ollydbg.exe 를 실행해줍시다. 설치완료!

    리버싱(Reverse Engineering) 이란 무엇일까요?

    Reverse Engineering 이란? 말그대로 역공학(逆工學). 즉 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 역으로 발견하는 과정이에요. 이 리버싱 기술을 통해서 프로그램 내부의 동작원리를 들여다 볼 수 있답니다. 이 과정을 통해서 개발단계에서 발견하지 못한 버그나 취약점들을 파악할 수 있고, 그 취약점들을 직접 패치할 수 있답니다.여기서 하나 ! 패치랑 크랙 두 단어를 구분을 못하시는 분들이 있던데 이 두 단어의 차이점은 중요하므로 짚고 넘어갈게요~ 패치(patch) 이란?프로그램의 파일 혹은 실행중인 프로세스 메모리의 내용을 변경하는 작업을 패치라고 해요. 게임을 하시다보면 "패치한다"는 말을 들어보신적이 있을거에요. 크랙(crack) 이란?크랙은 패치와 같은 개념이지만 패치를하는..