분류 전체보기(333)
-
UPX 수동언패킹 [ Lena 21 ]
이전 게시글에서 말했듯이 UPX의 특징인 PUSHAD를 실행한 직후의 모습이다STACK에는 EAX~EDI레지스터 값이 PUSH되어 있다ESP주소에 break를 걸어주고 코드를 실행시켜보자 * ESP주소 : 0012FFA4 * 코드를 실행시킨 뒤의 모습이다 ESP주소에 접근했을 때 실행이 멈추었다* ESP에 위치해서 POPAD를 통해 레지스터값을 복구시킨뒤 JMP코드를 실행하기 이전의 모습이다 JMP명령을 실행시켜보자 * 여러줄의 코드가 적혀 있는 지점으로 이동했다* 00401000 지점부터 원본파일의 코드가 된다* 00401000 : OEP ( Original Entry Point ) # 원본파일의 코드를 DUMP해서 저장하자 ImageBase : 00400000OEP : 00401000Ollydump는..
2018.04.10 -
Packing & Unpacking
[1] Packing(1) Compressor단순히 실행파일의 압축을 목적으로 한다 ex) UPX(2) Protector실행파일의 보호를 목적으로 한다. Anti-reversing기법이 적용된다. MS-DOS용 upx.exe 패킹도구를 이용해서 UPX패킹 및 언패킹을 실행시켜보겠다. \> upx.exe [Target]해당 타겟 실행파일을 upx패킹한다\> upx.exe -d [Target]해당 타겟 upx압축파일을 언패킹한다\> upx.exe [Target] -o [FileName]타겟실행파일을 다른 이름으로 패킹하여 저장한다 다음은 메모장의 패킹 전 후 의 모습이다 ( win32 )실행파일의 용량이 압축되어 작아졌다 [ 그림 1 ][ 그림 2 ] 기..
2018.04.10 -
PE File Structure
EXE나 DLL파일 실행시 개발자가 만든 코드가 실행되기 전에 PE의 정보부터 읽어와서 바이너리를 메모리에 올리기 위한 각종 데이터를 설정하는 작업을 한다.PE는 파일이 실행되기 위한 정보가 기록된 것 PE 구조 ( 32bit 환경 )[ IMAGE_DOS_HEADER ]e_magic - 현재 파일이 PE파일인지 체크한다 ( * MZ헤더를 통해 MS-DOS의 시작을 알린다 )e_lfanew - IMAGE_NT_HEADER 구조체의 위치를 가리킨다 [ IMAGE_NT_HEADER ]SIGNATURE ( 변수 ) - PE\0\0IMAGE_FILE_HEADER ( 구조체 )IMAGE_OPTIONAL_HEADER ( 구조체 ) [ IMAGE_FILE_HEDAER ]* Machine (2byte) : 어떤 CPU에..
2018.04.10 -
어셈블리어 정리 ( cmp & TEST & ZF & CF )
레지스터에는 ZF,CF, 등등 여러가지 상태 플래그가 존재한다.cmp와 TEST명령어는 ZF와 CF를 사용하므로 두가지 플래그에 대해 알아보자. [1] 플래그[3-1] ZF ( ZeroFlag )이전 명령어의 연산결과의 값이 0 일경우에 ZF플래그는 "1" 로 set 되어진다.연산결과 == 0 ---> " 거짓 " ---> ZF : 1연산결과 != 0 ---> " 참 " ---> ZF : 0ZF플래그를 통해서 이전 명령어의 참,거짓을 판별할 수 있다. [3-2] CF ( CarryFlag )연산 시 비트올림이나, 비트내림 발생 시 CF가 1로 set된다.쉽게말하면, 두 숫자를 비교할 때 사용하는 플래그이다 [2] cmp arg1 arg2( 두 인자의 차를 이용한 비교 ) [ 연산1 ]cmp eax,1실행..
2018.04.04 -
Python 문법 ( 클래스, 예외처리, 모듈, 파일 입출력 )
[1] 클래스의 기본 선언 구조* class 클래스명: 예약어 class를 통해 클래스를 선언한다def _init__(self,인자): 클래스 생성시 디폴트로 호출되는 생성자이다 ( self가 반드시 인자로 들어가야한다 ) ...def 함수명(인자): 클래스 내부에서 함수를 선언할 수 있다 ...* class 클래스명(상속클래스명): 클래스 선언시 인자로 상속받을 클래스명을 넣어준다def 함수명(인자):... [ 예제 ] [2] 예외처리 오류가 발생해도 프로그램이 정상적으로 동작할 수 있도록 하는 특별한 장치역할try:예외가 발생할 수 있는 구문except 예외 종류: * 예외 복수 처리 가능예외처리 수행 구문else:예외 미발생시 수행할 구문finally:예외 발생에 관계없이 무조..
2018.03.05 -
컴퓨터 관련 기본지식
1. CPU메모리에 있는 명령어와 데이터를 처리하면서 동작한다ALU ( Arithmetic Logic Unit ) : 덧셈,뺄셈,나눗셈,곱셈,AND,OR,NOT 등의 각종 산술연산과 논리연산을 수행하는 회로CU ( Control Unit ) : 입력 레지스터로부터 전달받은 데이터를 ALU가 수행할 연산의 종류를 결정한다, 장치의 동작을 제어한다Register : CPU내에 있는 고속의 소규모 기억장치Bus Interface : 주소, 데이터, 제어신호가 버스시스템을 통해서 CPU와 다른 요소들간에 통신을 지원한다 2. Memory메모리 용량이 클수록 한꺼번에 많은 양의 일을 처리할 수 있어 컴퓨터 처리 성능 향상에 도움이 된다컴퓨터에서 사용하는 메모리는 ROM과 RAM이 있다ROM ( ..
2018.03.05