본문 바로가기

reversing55

조건부 점프 명령어 플래그 설명 JZ / JE ZF = 1 0이면 점프 / 같으면 점프 JNZ / JNE ZF = 0 0이 아니면 점프 / 같지 않으면 점프 JS SF = 1 부호인 경우 점프 JNS SF = 0 부호가 아닌 경우 점프 JC / JB / JNAE CF = 1 캐리 시 점프 / 미만(below)이면 점프 / 이상(above or equal)이 아니면 점프 JNC / JNB / JAE CF = 0 캐리가 아닌 경우 점프 / 미만이 아닌 경우 점프 / 이상이면 점프 JO OF = 1 오버플로 되면 점프 JNO OF = 0 오버플로 되지 않으면 점프 JA / JNBE CF = 0 및 ZF = 0 초과(above)하면 점프 / 이하(below or equal)가 아니면 점프 JNA / JBE CF = 1 또는.. 2023. 4. 17.
PE parsing - IMAGE_DOS_HEADER PE 헤더의 IMAGE_DOS_HEADER 구조체를 파싱합니다 int main(void) { HMODULE module_base = GetModuleHandle(NULL); LPVOID base_addr = (LPVOID)module_base; PIMAGE_DOS_HEADER dos_header = (PIMAGE_DOS_HEADER)base_addr; std::cout 2023. 4. 8.
디버깅 관련 API API 이름 설명 CheckRemoteDebuggerPresent 프로세스가 디버깅 되고 있는 지 확인 ContinueDebugEvent 디버거가 디버깅 이벤트를 보고한 쓰레드를 계속 수행함 DebugActiveProcess 디버거가 동작 중인 프로세스에 연결하여 디버깅할 수 있게 함 DebugActiveProcessStop 특정 프로세스의 디버깅을 멈춤 DebugBreak 현재 프로세스에 중단점 예외 처리를 발생시킴 DebugBreakProcess 특정 프로세스에 중단점 예외 처리를 발생시킴 DebugSetProcessKillOnExit 쓰레드가 종료될 때 수행할 행위를 설정함 FatalExit 실행 제어를 디버거로 전달함 FlushInstructionCahce 특정 프로세스에 대한 명령어 캐시를 비움.. 2023. 4. 1.
Code Browser CodeBrowser는 기드라의 주요 기능인 소프트 웨어 리버스 엔지니어링을 수행하기 위한 도구 입니다. 기본적으로는 다음 6개의 창이 표시됩니다. Program Tress 프로그램 구조를 분석해 [Fragment]라는 단위로 분할해 표시한다. PE 형식의 파일은 헤더나 섹션으로 분할된다. Symbol Tree 프로그램 내의 심볼에 관한 정보가 표시된다. Data Type Manager 프로그램 내의 데이터형에 관한 정보가 표시된다. Listing 프로그램을 디스어셈블한 결과가 표시된다. Decompile 디스어셈블한 프로그램을 C언어로 디컴파일한 결과가 표시된다. Console Ghidra Script 및 Ghidra Extension 출력이 표시된다. 2023. 3. 28.
IsDebuggerPresent() 함수 IsDebuggerPresent() 함수는 디버깅중인지 아닌지 판별하는 함수입니다. 디버깅 중이라면 1, 디버깅 중이 아니라면 0 이를 활용하여 안티 디버깅에 활용 할수 있습니다. 코드는 다음과 같습니다. #include #include int main(void) { int check = IsDebuggerPresent(); if (check == 1) std::cout 2023. 3. 27.
while 문 while문 코드 int main(int argc, char *argv[]) { int i = 0; while (i 2023. 3. 24.
반응형