본문 바로가기

Reversing16

문자열 디코딩 함수 반복 - immunity script 처음에는 pydbg로 만들다가 이뮤니티 스크립트로 바꿈 ... ( 혹시 몰라서 백업) [ 이뮤니티 스크립트 파일 ] [*] 이뮤니티 디버거의 PyCommands 경로에 넣어준다. [ 사용법 ] 1. 스크립트 실행- decoding 함수를 call하는 위치에서 "!loop"와 같이 스크립트를 실행한다.- unicode로 결과값을 얻으려는 경우에는 "!loop y'로 실행한다. 2. 인자값 세팅 - 이뮤니티 디버거 디렉토리의 argv.txt 파일에 저장한다.- 인자값은 ','로 구분한다.- 특정 인자값의 문자열의 길이가 들어가는 인자의 경우에 len(arg1)와 같이 사용할 수 있다. ex) argv.txt 파일1001622C, 1001622C, 0, len(arg1)1001623C, 1001623C, 0,.. 2014. 4. 4.
Ollydbg - Exception시 SEH 처리 확인하기 유저모드에서 FS레지스터는 TEB를 가리킨다. 아래는 FS에서 자주 사용되는 데이터들이다. FS:[0x0] : ExceptionListFS:[0x18] : TEB (self)FS:[0x30] : PEB 아래는 XP 환경에서 TEB 구조체를 확인한 결과인데 TEB의 처음 0x01b까지가 TIB 구조체이며 TIB의 첫 번째 데이터가 ExceptionList를 가리키는 것을 알 수 있다. +0x000 NtTib : _NT_TIB +0x000 ExceptionList : Ptr32 +0x004 StackBase : Ptr32 +0x008 StackLimit : Ptr32 +0x00c SubSystemTib : Ptr32 +0x010 FiberData : Ptr32 +0x010 Version : Uint4B +0.. 2014. 2. 8.
code injection에서 shellcode to exe [*] 악성코드가 코드 인젝션으로 악성 행위를 하는 경우 인젝션된 코드를 확인할 때 (1) shellcode -> exe로 해주는 사이트를 이용 http://sandsprite.com/shellcode_2_exe.php (2) 코드를 읽어서 jmp시켜 주는 간단한 CodeLoader 작성 - 첫번째 인자 : shellcode 파일 - 두번째 인자 : JIT위해 코드의 처음에 \xCC를 삽입 할지 [source] #include "Windows.h" #include "stdio.h" #include "tchar.h" int _tmain(int argc, TCHAR* argv[]) { PVOID pCode; DWORD dwFileSize, dwRead; HANDLE hFile; if (argc != 3) {.. 2014. 1. 15.
64bit환경의 인자값 전달 방식 64bit 파라미터 전달 [windows - PE] Parameter 1 – RCXParameter 2 – RDXParameter 3 – R8Parameter 4 – R9 [Linux - ELF] Parameter 1 - rdiParameter 2 - rsiParameter 3 - rdxParameter 4 - rcxParameter 5 - r8Parameter 6 - r9Parameter 7 - (%rsp)Parameter 8 - 0x8(%rsp)system call - %rax [*] ARM 레지스터 추가 레지스터APCS 역활 r0 a1 함수 인자1/결과 값 전달범용 스크레치 레지스터 r1 a2 함수 인자2/범용 스크래치 레지스터 r2 a3 함수 인자3/범용 스크래치 레지스터 r3 a4함수 인자4/범.. 2013. 12. 15.