Exception이 발생한 경우 x64dbg에서 Exception이 발생하면 Exception이 발생한 부분에 브레이크가 설정된다. x64dbg의 가장 하단의 창에 위 사진과 같이 Exception이 발생했는지 나오고 어떤 Exception인지 설명해준다. 보통 ACCESS_VIOLATION 등 심각한 Exception과 별도의 예의 처리가 되지 않은 Unhandled Exception은 Debugger가 Exception 이벤트를 따로 등록하지 않기 때문에 이러한 예외 상황에서 브레이크가 걸린다. 하지만 일부 Exception에 대해서는 브레이크 때문에 디버깅이 귀찮아지는 상황이 발생한다. 이런 경우, Ignored Exception을 설정하면 된다. Ignored Exception 설정 방법 1. O..
host pc : iMac pro debugger vm : Windows 10 debuggee vm : Windows 7 사전 준비 - Windows OS 2개 - VMware Fusion 3.0 이상 - windbg (debugger vm) 개요 - Mac OS에서 VMware Fusion으로 Windows 2개를 켠 후, 하나의 Windows가 반대쪽 Windows 커널 디버깅을 가능하도록 한다. VMware Fusion 수동 시리얼 포트 설정 시작 전 - VMware의 VM 구성 파일은 .vmx 파일이다. 이 녀석의 Serial port 부분을 수정하면 되는데 Mac은 약간 번거롭다. - Mac OS에서 VMware Fusion을 사용하면 기본적으로 ~/Library/Application Suppo..
Intel 기반의 프로그램을 분석하다 보면 부동 소수점 연산이나 최적화를 하기 위해서 xmm 레지스터를 사용하는 것을 볼 수 있다. 이 때 instruction도 레지스터를 지원하기 위해서 변하게 된다. IDA로 리버싱을 하면 이러한 instruction을 '_mm'으로 시작하는 api로 보여주는데 단순히 어떤 연산을 하는지는 이해할 수 있지만, 실제로 어떻게 레지스터가 사용되는지는 조금 이해가 어렵다고 생각한다. SSE 관련 헤더 : emmintrin.h SSE 관련 API(참고 : https://software.intel.com/sites/landingpage/IntrinsicsGuide/)_mm_cvtsi32_si128 : https://msdn.microsoft.com/zh-cn/library/c..
RecDec standalone 설치(https://github.com/avast-tl/retdec)https://github.com/avast-tl/retdec/releases에서 설치파일 다운로드위에꺼 설치https://www.microsoft.com/en-us/download/details.aspx?id=48145 설치MSYS2 설치bash $RETDEC_INSTALL_DIR/bin/retdec-decompiler.sh test.exe RecDec IDA plugin 설치(https://github.com/avast-tl/retdec-idaplugin/releases)python 3 설치Pygments 설치https://github.com/avast-tl/retdec-idaplugin/release..
IDA 지원 버전 : 6.9부터 IDA 최신 버전에서 사용하는 bindiff라고 생각하면 된다. 바이너리 코드에서 달라진 부분을 찾아 비교해서 보여주는 플러그인이다. IDA 버전 7.3과 7.4를 기준으로 사용할 diaphora 버전과 python 사용 버전이 바뀐다. diaphora 다운로드 시 버전 참고 사항 IDA 버전 6.95 ~ 7.3 (python 2.X 사용) : "https://github.com/joxeankoret/diaphora/releases/1.2.4" 다운로드 IDA 버전 7.4 이상 (python 3.X 사용) : "https://github.com/joxeankoret/diaphora/releases" 에서 그냥 최신 버전 다운로드 설치 IDA 버전에 맞게 diaphora를 ..
windbg에 pykd를 설치하면 windbg 내에서 python 스크립트를 사용할 수 있다. pykd 설치 방법이 이전과 달라진 듯 해서 조금 고생했다. 필수 요구사항windbg 설치windbg 경로 확인(sdk로 설치했으면 Program Files(x86)\Windows Kits\10\Debuggers\x64\winext에 설치됨) 다운로드 방법(1번 과정은 생략하고 진행해도 됨)공식 URL인 https://archive.codeplex.com/?p=pykd을 접속pykd의 gitlab URL인 https://githomelab.ru/pykd으로 이동pykd 클릭(pykd, windbg-pack, pykdwin이 있는데, pykd를 클릭)왼쪽 메뉴 바에서 Wiki 선택오른쪽 메뉴 바(Clone rep..
파일 컴파일 방법(Visual Studio 2015 기준, 다른 버전인 경우 배치 파일의 VSPATH 경로 수정 필요)build 배치 파일 실행(32bit : build_32bit.bat, 64bit : build_64bit.bat)nmake -f dll_injector.mk all완료 코드 : https://github.com/Tribal1012/DLL_Injector 참고리버스코어(ReverseCore) : http://reversecore.com/책 : 리버싱 핵심원리
상황 예제- String이 분명히 바이너리에서 사용되는데 'no xrefs to'가 발생하면서 참조가 안 되는 상황 문자열 찾는 방법 1- Alt + B를 눌러 String의 주소를 검색 문자열 찾는 방법 212345678910111213141516171819202122232425262728293031323334353637383940from struct import pack, unpackimport idautilsimport idaapi def SearchString(curser): #curser = here() b1 = (curser >> 24) & 0xff b2 = (curser >> 16) & 0xff b3 = (curser >> 8) & 0xff b4 = curser & 0xff print '[+..
단축키단축키 설명 X Xross Reference, 현재 커서가 가리키는 것을 역참조 N Rename AConvert to ascii type R Convert to char typeH Convert to hex typeD Convert to dword typeU 어셈블리어 빻을 수 있음 P 함수 재지정, U와 같이 사용하면 유용 ESet current cursor address to current function's end addressY자료형 타입 재지정Crtl + 1 Quick View Shift + F12 문자열 보기 Alt + A 문자열 인코딩 Edit, U랑 같이 하면 Ascii -> Unicode로 Edit하기 편함 Alt + B 바이너리 검색, xref 안 될 때, 해당 주소를 검색하면 좋..
main 함수를 찾는건 기본이지만, main 함수 시작 전 stub code의 형태 좀 정리해서 기초 좀 정리하자는 의미에서 시작한다. 아무리 큰 프로그램이여도 main 함수 시작 전에 stub 코드를 통해 실행되기 때문에 이를 볼 줄 알면 더욱 수월하다. 실제 응용 프로그램의 코드에서 main 함수를 찾아보고자 한다. 하지만 심볼이 날아가 있어 바로 보이지는 않으므로, 약간은 분석해서 찾아보고자 한다.※ 심볼이란? https://blogs.msdn.microsoft.com/noenemy/2009/08/05/symbol-file/ 분석 전 먼저 IDA로 열어준 후, function name 창에서 검색(Ctrl+F)를 눌러 start를 입력하여, start 함수로 진입한다. 만약 start 함수가 없다면..