본문 바로가기

Subject/Reversing

PE 구조 - 2) IAT 보호되어 있는 글입니다. 더보기
IDA] 사용법 1. Code, Undefine -Undefine: 디어셈블한 명령어를 단일 바이트로 쪼갠다.>잘못 해석된 명령어(난독화, 패킹 등으로)를 Fix 할 때 사용. ->E8은 명령어가 아닌 1 바이트 데이터인데, 명령어(Call의 시작바이트)로 해석되어 명령어 조합이 이상해진 상태 정상: 데이터(E8) + Mov eax(B801000000) + ...현재: Call 1004c00(E8 B8010000) + ... ->Undefine 기능으로, 잘못 해석된 명령어를 단일 바이트로 나눈 상태. -Code: 지정한 주소부터 명령어를 재해석한다. 더보기
지뢰찾기 맵핵 구현 0.목표 -도움말 버튼을 눌렀을 때, 전체 지뢰가 표시되도록 한다. 1.정보 -지뢰 표시 -> ShowBombs() -도움말 -> DoHelp() 2.실습 -ShowBombs() 분석1)IDA의 Xref 기능을 이용해, 함수가 호출되는 시점을 확인 ->GameOver() 함수에서 호출된다. 2)GameOver()를 분석하여, ShowBombs()가 호출될 때의 인자값을 확인>Call ShowBombs()에 BP를 걸고 지뢰를 클릭해 게임오버가 되게 한다. ->EAX=0xA 일 때, ShowBombs()가 호출되며 모든 지뢰가 표시된다. -DoHelp() 분석1)DoHelp()가 호출되는 주소를 확인. -올리디버거를 이용하여, Call DoHelp()를 Call ShowBombs()로 변경.>ShowBom.. 더보기
IDA] 설명, 사용법 1.IDA 설명 -Interactive(대화형의) Disassembler -작업을 원본 실행파일이 아닌, idb라는 데이터베이스에서 진행한다.>값을 변경해도 원본에 영향 X.>원본 파일이 없어도 idb 파일만 있으면 분석 가능. -되돌리기 기능이 없다>잘못 수정했을 경우, 종료시 'Dont SAVE the database' 체크를 해야 한다. -단축키가 매우 많다. 2.기본 메뉴얼 -텝 바꾸기>Ctrl + Tab>Alt + 숫자 -그래픽 뷰에서 주소값 표시>`Option> General> Line Prefix 체크` -종료시 나타나는 창의 설명 -데이터 타입 변경(db:BYTE / dw:WORD / dd:DWORD) >대상 주소를 클릭하고, 단축키 'd' -문자열 타입 변경(유니코드 등)>대상 주소를 클.. 더보기
PE 구조 0. 정의 -Portable Executable -Windows 실행 파일. -PE or PE32 ( 64bit: PE+, PE32+) -종류종류 확장자 실행 EXE, SCR 드라이버 SYS, VXD 라이브러리 DLL, OCX, CPL, DRV SYS 오브젝트 OBJ (오브젝트를 제외하곤 모두 실행 가능) 1. 구조 1)DOS 헤더 >DOS 파일 호환성 고려>주요 멤버>>(WORD) e_magic: 'MZ', 이 값이 맞으면 PE로더가 실행 파일을 메모리에 로드. //뭐가 맞다는건지는 안나와있음. 그냥 'MZ'만 외우셈. >>(LONG) e_lfanew: NT 헤더의 RWA 2)NT 헤더>(DWORD) Signature: 'PE', 이 값으로 올바른 PE 포맷인지 확인. >FILE 헤더>>(WORD) M.. 더보기
악성코드 종류 0. 바이러스 -파일 바이러스 : 윈도우 실행파일을 감염. ex> CIH, FunLove, Kriz, Win32, 4099, Virut, Rox -매크로 바이러스(Macro Virus) : Microsoft Office의 워드, 엑셀 등의 문서파일을 감염. //책설명 부실 ex> Shiver, Melissa, Laroux -웜(Worm) : 네트워크를 통해 자신을 복제, 전파 일반적인 의미의 바이러스: 감염시키는데 사용자의 입력이 필요 ex> Hybris, Happy99, Navidad, ExploreZip, PrettyPark -트로이목마(Trojan Horse) : 정상적인 프로그램으로 위장하여 사용자가 실행하도록 유도한 후 정보 탈취, 원격 조종 등의 악의적인 코드를 실행. ex> Back Orif.. 더보기
C Source] Text 섹션 주소 찾기 보호되어 있는 글입니다. 더보기
서비스 프로세스 0. 정의 1. 실행구조 -서비스 제어기(제어판>서비스)가 SCM(Service Control Manager)에게 요청하여 서비스 프로세스를 관리하는 구조. 출처: reversecore.com -모든 서비스는 SCM(service.exe)의 자식프로세스로 실행됨. 2. 디버깅 방법 -서비스 프로그램을 디버거로 실행할 경우에 서비스 메인함수(ScvMain)가 실행되지 않는다. > SCM이 실행한 서비스를 attach 하여 디버깅 하거나, EIP 강제 변경으로 디버깅을 진행해야 함. 1) EIP 강제 변경 서비스 프로세스 Main 함수의 StartServiceCtrlDispatcher()의 인자값을 확인하여 SvcMain 함수의 시작주소를 알아내고, EIP를 변경하여 ScvMain() 디버깅. BOOL WI.. 더보기
세그먼트 레지스터, 플레그 레지스터 보호되어 있는 글입니다. 더보기
SEH - 예외처리기 보호되어 있는 글입니다. 더보기