본문 바로가기

Computer/0x06 리버스엔지니어링

리버스엔지니어링 3화 keygenme 문제풀이 리버스엔지니어링 3화 keygenme 문제풀이 리버싱을 공부하다보면, 학습용으로 크랙미(crackme)를 접하게 됩니다. 이번 시간에는 간단한 키젠프로그램 리버싱을 해보도록 하겠습니다. 해당 프로그램을 실행 시키면 아래와 같이 키입력란이 나오고 아무값이나 입력을 하면 잘못된 시리얼 이라고 에러메세지가 출력 됩니다. 리버싱을 통해 프로그램 로직을 분석하여 우회해 보도록 하겠습니다. (문제: 에러메세지가 출력 나오지 않게 아무값이 입력해도 프로그램이 정상작동 하도록 하시오) Ollydbg 로 해당 프로그램을 불러오면 00401000 에서 PUSH 0 으로시작 됩니다.여기서 F8로 진행 하다보면 위와 같이 0040100D CALL Key4.00401025 에서 프로그램이 실행 됩니다. 여기서 해당 프로그램을 .. 더보기
악성코드분석 절차 악성코드분석 절차 1) 용의자 있을 때 - 정적 분석 Hexa EditorPE EditorString Extractor - 동적분석 (system level) process & thread 탐색 " " 모니터링 - 동적분석 (code level) user mode debuggerkernel mode debugger 2) 용의자 없을떄 - 정적분석File & File System Integrity Tool 더보기
리버스엔지니어링 2화 기초 어셈블리어 리버스엔지니어링 2화 기초 어셈블리어 어셈블리어(Assembly) : 기계어와 1 대 1로 대응하는 언어로 사람이 이해하기 쉽게 약간 변형시킨 언어 입니다. 기계어와 가장 가깝기 때문에 그 기계의 특성을 가장 잘 살릴 수 있다는 것이 장점 입니다. 또 고속의 가상 프로그램이 가능한 것도 어셈블리어의 특징 입니다. 그러나 각 컴퓨터에 따라 다르기 떄문에 다른 기계인 경우는 이식 작업을 해야 합니다. 이 과정이 매우 복잡하고 또 어렵기 떄문에 그렇게 간단하게 되지는 않습니다. 또 기계어와 매우 비슷하기 떄문에 이해하기 어렵다는 것이 단점입니다. 하지만 천리길도 한걸음 부터라는 말도 있듯이 어셈블리어는 한줄한줄 까보면 막상 어렵지는 않습니다. 조금씩 자주 쓰이는 패턴들 위주로 익히시다 보면 실력이 붙으실 것입.. 더보기
리버스엔지니어링 1화 리버스엔지니어링 1화 리버스 엔지니어링(reverse engineering): 리버스 엔지니어링이란 제품 조립순서의 반대로 제품을 하나하나 분해하여 제품의 제조과정 및 성능을 파악하는기술을 말합니다. 기술적으로 열위에 있는 기업이 특정상품을 모방, 생산하려는 경우 주로 사용 됩니다. 리버스 엔지니어링은 광범위적인 개념이지만 주로, 소프트웨어에서 많이 사용 됩니다. C언어 등으로 사용된 프로그램등을 어셈블리어로 변환해주는 Olldbg 같은 툴을 이용하여역분석 해서 다시 원래소스를 알아내는 고급기술로 사용되곤 합니다. 악성코드분석가에게는 필수기술 이기도 합니다.이번 시간에는 리버스엔지니어링에 필요한 기초 어셈블리어 문법을 배워보도록 하겠습니다. [ Opcode ] [ Operand ] PUSH ( ) : 밀.. 더보기