[Reversing] API 동적 로딩 기법, PEB의 LDR 이용 참조> https://5kyc1ad.tistory.com/328> https://sanseolab.tistory.com/47 TEB0x30 : PEB PEB0x0C : PEB_LDR_DATA PEB_LDR_DATA0x0C : ( InLoadOrderModuleList )0x14 : ( InMemoryOrderModuleList )0x1C : LDR_MODULE ( InInitializationOrderModuleList ) ( InLoadOrderModuleList )( 바이너리 -> ntdll.dll -> kernel32.dll -> kernelbase.dll )0x00 : Next Module0x04 : Previous Module0..
[Reversing] PEB Structure 참고> https://5kyc1ad.tistory.com/328> https://sanseolab.tistory.com/47 kd> dt _PEBnt!_PEB +0x000 InheritedAddressSpace : UChar +0x001 ReadImageFileExecOptions : UChar +0x002 BeingDebugged : UChar +0x003 SpareBool : UChar +0x004 Mutant : Ptr32 Void +0x008 ImageBaseAddress : Ptr32 Void +0x00c Ldr : Ptr32 _PEB_LDR_DATA - 링크 +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS..
[Reversing] RaiseException dwExceptionCode_SEH 0x00000000 STATUS_SUCCESS 0x00000001 STATUS_WAIT_1 0x00000002 STATUS_WAIT_2 0x00000003 STATUS_WAIT_3 0x0000003F STATUS_WAIT_63 0x00000080 STATUS_ABANDONED 0x000000BF STATUS_ABANDONED_WAIT_63 0x000000C0 STATUS_USER_APC 0x000000FF STATUS_ALREADY_COMPLETE 0x00000100 STATUS_KERNEL_APC 0x00000101 STATUS_ALERTED 0x00000102 STATUS_TIMEOUT 0x00000103 STATUS..
[Reversing] Packer, Crypter, and Protector 참조> https://blog.malwarebytes.com/threat-analysis/2015/12/malware-crypters-the-deceptive-first-layer/ Packing패킹은 포장한다는 의미로 두가지 종류로 분류할 수 있다.첫번째로는 파일 사이즈를 줄이는 목적으로 컴프레서가 있으며 대표적으로 UPX 패커가 있다 실행 압축이라고도 불린다. 두번째는 파일을 보호하는데 목적으로 프로텍터가 있다. 사이즈는 늘어나지만 안티리버싱이나 난독화를 통해 분석이 어렵도록 한다. Compressor 일반적으로 'runtime packers" 약자이다. 해당 기술은 실행 가능한 압축으로 이런 종류의 압축은 파일을 더 작게 ..
[Reversing] Printf()함수 스택프레임(Stack Frame) [Reversing] 스택프레임(Stack Frame)이전 게시물의 예제 중 printf("%d\n", x); 부분에 대해 간략하게 설명을 하겠습니다. printf() 함수 호출4010BB PUSH PROJECT1.41C798- 해당 41C798 주소에는 "%d\n" 문자가 있는걸 알수있습니다.[printf() 함수 호출 전 PUSH 부분] - printf() 함수의 스택 프레임을 생성합니다. 다음을 보시게 되면 순서데로 작성해보겠습니다. PUSH EBP- 스택에 현재의 EBP를 저장합니다. MOV EBP, ESP- printf()의 ESP 값을 EBP에 옮겨주었습니다. PUSH ESI- 스택에 ESI를 저장합니다.- ESI는 데..
[Reversing] 스택프레임(Stack Frame) 스택프레임- 새로운 함수가 호출 될 때 호출 후 원래의 위치로 돌아갈 정보를 담고 있습니다.- ESP, EBP 레지스터를 사용해서 변수나 원복주소에 접근하는 방식입니다.- 즉, 함수가 호출 될때 그 함수가 가지는 공간 구조입니다.함수를 호출할 때 그 함수가 가지고 있는 공간으로 스택 프레임 구조는 함수 프롤로그 - 함수 원형 - 함수 에필로그로 구분할 수 있다. 스택 프레임 예제#include int main(){int x;printf("정수입력 : ");scanf_s("%d", &x);printf("%d\n", x);return 0;}[소스코드] 스택 프레임의 구조[예제 스택프레임 구조] [main() 함수의 스택 프레임] x64 dbg- 우선 m..
[Reversing] 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE) 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE) ① 이전 IMAGE_DOS_Header와 MS-DOS_Stub 수정 후 크기는 변하지 않았습니다. 다음으로는 SECTION.data을 확인해보겠습니다. 그런데 PE구조를 다시 보니 리소스 부분을 먼저 삭제를 해야 될꺼같습니다. 1. SECTION.rsrc 삭제하기 peview를 통해 해당 SECTION.rsrc 영역을 확인 후 Hxd에서 리소스 부분을 삭제를 했습니다. 삭제 후 확인 해보면 SECTION.rsrc 영역이 삭제 된걸 확인 할 수 있습니다. 파일을 실행 하게 되면 실행이 되지 않습니다. 실행이 되도록 만들어야 되겠지요. 이제 리소스를 참조한 부분을 찾아 수정..
[Reversing] 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE) 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE)PE 파일의 전체 구조를 보며, 불필요한 부분을 삭제하고 변경을 통해 크기를 줄이는 목적으로 작성하겠습니다. 파일 최초 크기8,704 바이트 이며, 실행 시 Hello World가 출력됩니다. 파일 전체 구조 1. IMAGE_DOS_HEADER와 MS-DOS_Stub 1.1 IMAGE_DOS_HEADERIMAGE_DOS_Header의 구조체를 확인 했을 때 구조체 중 "e_magic" 필드와 "e_lfanew" 필드가 가장 중요하다고 합니다. e_magic : DOS Signature [4D5A → MZ]e_lfanew : NT Header offset [E0000000 ..
- Total
- Today