본문 바로가기

reversing

(86)
MIPS Disassemble MIPS 32bit 환경에서 gdb를 이용해서 분석 해보기.root@debian-mipsel:/home/user# file handhand: ELF 32-bit LSB executable, MIPS, MIPS-II version 1, dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x76cbeddb5054f529eabb50bfdada135f44c0675e, with unknown capability 0xf41 = 0x756e6700, with unknown capability 0x70100 = 0x1040000, not strippedroot@debian-mipsel:/home/user# ./hand Add : 50간..
MIPS Instruction[Assembly] MIPS Instruction 정리한 문서에 분석하면서 설명되어있지 않던 명령어[http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html] --> 명령어 설명 좋음 lui : Load upper immediate syntex : lui $t, imm값 : $t = imm $v0 = 0x40
ARM Handray 환경 구축 후, 간단하게 ARM 어셈블리를 살펴보려 한다.자료를 보니... 백날 봐봤자 지루하기만해서 간단한 프로그램을 어셈으로 보면서 스택, 함수 호출, 리턴 등 관련해서 살펴본다. 사용 TOOL : GDB, IDA 32bit richong@ubuntu:~$ file HAND HAND: ELF 32-bit LSB executable, ARM, version 1, statically linked, for GNU/Linux 2.6.8, not stripped위와 같은 파일이고 실행하면 더하기랑 간단하게 정보를 출력한다.[실행 화면] 기본적인 어셈 명령어 및 레지스터R0 - R10 : 범용 레지스터, 임시 저장 용R11 : Current SFP(Stack Frame Pointer)R12 : ARM Mode ..
[PAE] Linear Address to Physical Address 32bit 환경에서 활성화된 page만 가져오는 부분을 진행하다가 PAGE를 찾아가는데 어려움이 있어서 정리하려 한다. 작업 환경 Win7 32bit [PAE on] Windbg 위와 같은 환경에서 calc.exe 선형 주소에서 물리 주소를 찾아가는 내용이다. 하루 종일 삽질을 한 결과를 낳게한 CR4 를 확인하지 않아서이다. 1. CR4 확인여기서 5번째와 4번째 Bit를 확인하여야 한다.5번째 PAE Bit는 PAE가 적용되어 있는지를 확인 할 수있는 BIT이다.4번째 PSE Bit는 PAGE SIZE EXTENSION이 적용되어 있는지 확인 하는 것이다. 1로 셋팅 되어 있으면 페이지 크기가 2MB 0로 셋팅되어 있으면 4KB이다. Binary로 b11111001로 표현되어 있다. 4번째 bit 5..
DLL Injection Detect[3] 이것저것 구조체 필요한 부분만 알맞게 정의해서 vad 파싱해서 이름 가져왔다. refer_vad.h #pragma once extern "C"{ #include "ntddk.h" } // 타입 정의////////////// typedef unsigned long DWORD; typedef DWORD *PDWORD; typedef unsigned char BYTE; typedef BYTE *PBYTE; typedef unsigned short WORD; typedef unsigned long ULONG; //////////////////////////// typedef struct _SUBSECTION // 0x20 { struct _CONTROL_AREA* ControlArea; // +0x0(0x4) ..
C++ 리버싱 연습 역분석을 하다 보면 C 말고 C++ 파일을 보게 된다. 그냥 생각없이 동적으로 보면서 이게 이거구나 저게 저거구나...직관적으로 분석하였는데 정리 해보고자 한다.기본적인 내용을 알면서 다양한 분석을 통해서 실력을 키워가면 좋을것 같다. 모든 C++ 문법을 다 해보는건 아니지만 그래도 적당히 분석에 필요한 내용을 알아본다. 밑의 첨부한 코드는 C++문법에 사용되는 이것 저것 들을 넣어 보았다.해당 코드를 최적화 하지 않고 컴파일하여 IDA를 이용하여 분석해본다. [그림-1] 위의 [그림-1]은 IDA를 통해 본 main 함수 부분이다. 첫 줄에 보이는 v8 = operator new(28u); 부분을 확인하면 28 size만큼 공간을 할당한다.해당 size를 통해서 객체의 변수와 함수 포인터 들의 총 합 ..
get physical address 보호되어 있는 글입니다.
call[opcode 0xe8] 사용 후킹을 하고 특정 함수를 호출하기 위해서 어셈블리어 call을 사용하게 된다.==> target_address call 0x402f01이러기 위해서 call [Address]의 기계어로 원하는 target_address에 적어 주어야 한다.처음에 생각은 0x402f01에 존재하는 함수를 호출하고 싶으면0xe8402f01 이런식으로 구성되는 줄 알았다. --> 아니다 그래서 검색하다가 나와서 정리하려고 한다.CALL opcode == 0xe8operand == call[위의 0x402f01]과 call 하는곳[target_address] 사이의 바이트 길이 offset == offset from call [Example]00401000에서 0040CF40를 CALL 할 경우 0000BF3B가 나온다0040..