본문 바로가기

Reversing/Reversing15

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.
IDA로 C++ 클래스의 가상함수를 볼 때 간단하게 아래와 같이 c++을 작성하고 분석해보았다. #include "iostream" using namespace std; class A{ public: int myval; void set(int val) {myval = val; } virtual void print() { cout 2013. 12. 15.