System/Reversing
-
Taint Analysis ( IDA lighthouse & FRIDA )System/Reversing 2020. 4. 17. 00:53
Taint Analysis란, 프로그램이 동작하면서 실행되는 코드의 흐름을 파악하는 분석 기술이다. 좀 더 직관적으로 설명하면, 실행되는 Instruction마다 색을 칠해놓고 전체적인 결과를 보면 실행된 Instruction만 색이 칠해져 있을 것이다. 실제 코드가 실행되는 부분을 파악할 수 있기 때문에 분석할 때 엄청난 이점이 될 수 있다. IDA의 lighthouse은 DBI툴로 얻은 Taint Analysis결과를 코드블럭에 표시해주는 플러그인이다.lighthouse와 호환되는 DBI툴은 PIN, DynamoRIO, FRIDA가 있으며, 그 중 FRIDA를 사용하는 방법을 소개하려고 한다. PIN툴은 Intel아키텍처에서만 지원되고, DynamoRIO는 MacOS 64bit를 지원하지 않는 것 같..
-
DLL 바이너리 수정으로 BreakPoint 걸기System/Reversing 2019. 10. 7. 19:23
프로그램을 분석하다보면, 안티디버깅의 탐지로 인해일반적인 디버거(x64dbg, windbg...)의 동적분석이 불가능한 경우가 있다.디버거로 탐지를 우회하는 방법도 있지만, CheatEngine은 탐지 안하는 경우가 많기 때문에해당 툴로 동적분석을 진행할 수 있다. CheatEngine자체의 BP기능을 사용할 수도 있지만, 이것 또한 사용하지 못하는 경우에는아래와 같은 방법으로 BP를 걸 수 있다. [ DLL 바이너리 수정 ]DLL의 2Byte opcode를 "EB FE"로 수정하면 해당 부분에서 BP가 걸린듯한 효과를 볼 수 있다. 또한, "int3"(CC) Interrupt를 탐지하는 안티 디버깅도 우회할 수 있다. "EB FE"는 자기 자신으로 JMP하는 opcode로서, CheatEngine으로 ..
-
[x64dbg] Themida Debugger 탐지 우회#2System/Reversing 2019. 7. 11. 13:13
이번에는 x64dbg에서 Themida Debugger탐지를 우회하는 방법을 정리해보겠다.우선 x64dbg는 이전 Ollydbg의 확장버전 개념의 디버거이고, 한글지원과 다양한 플러그인들을 사용할 수 있다. x64dbg_OfficialSite: https://x64dbg.comx64dbg_Blog: https://x64dbg.com/blog/x64dbg_Github: https://github.com/x64dbg/x64dbg/wiki[ Themida Detect ]우선 Themida로 패킹되어 있는 .exe파일을 디버거로 로드하여 실행하면위와 같은 Themida경고창이 뜨면서 프로세스가 종료되는 것을 확인할 수 있다. 이전 글에서도 언급했듯이, 디버거를 Kernel영역에 로드하는 방법도 있겠지만이번에 소..
-
[CheatEngine] Themida Debugger 탐지 우회#1System/Reversing 2019. 7. 10. 13:15
Windows환경에서 Themida로 패킹되어 있는 프로그램을 CheatEngine으로 분석할 때 우회 팁이다. 우선 탐지하는 수준이 엄격하냐, 느슨하냐 차이가 있겠지만나같은 경우는 CheatEngine이 실행되어 Target Process에 Attach하는 것까지는 탐지하지 않고 있었다. [ CheatEngine Error ]Attach이후에 BreakPoint를 설정하거나, Memory를 조작하는 순간 위와 같은 에러창이 뜨면서 Target Process가 종료되는 상황이였다. [ Themida Packing ]Target Process를 ExeInfo로 확인해보니 Themida로 패킹된 것을 확인할 수 있었다. 보통 이런 Anti-Debugging을 우회하는 방법 중 하나가 User영역에서 메모리를..
-
GDB 소스코드 보면서 디버깅 하기System/Reversing 2019. 6. 8. 17:12
오픈소스인 프로그램을 직접 컴파일하고 GDB로 분석할 때 소스코드를 보면서 디버깅할 수 있다.우선 gef라는 GDB 플러그인을 설치해야 한다. [ gef Document ]https://gef.readthedocs.io/en/master/# via the install script wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh | sh # manually wget -O ~/.gdbinit-gef.py -q https://github.com/hugsy/gef/raw/master/gef.py echo source ~/.gdbinit-gef.py >> ~/.gdbinit위 명령어를 차례대로 입력하고, gdb를 실행하면 아래와 같이 기본 ..
-
32Bit(x86)/64Bit(x64) 차이점 정리System/Reversing 2018. 2. 4. 02:56
[32Bit / 64Bit 차이점] 32Bit 64Bit 주소공간 2^32 만큼 사용가능 2^64만큼 사용가능 (실제로는 2^48) 레지스터 EAX,EBX,ECX,EDX,EBP,ESP,EDI,ESI (총 8개) RAX,RBX,RCX,RDX,RBP,RSP,RDI,RSI R8,R9,R10,R11,R12,R13,R14,R15 (총 16개) 함수 호출 규약 Cdecl / Stdcall Fastcall #64Bit에서 실제로는 48Bit만 사용 가능한 이유? 64Bit라면 64Bit만큼 주소 공간을 사용할 수 있어야 한다. 0xFFFF FFFF FFFF FFFF 총 16개Byte로 주소공간을 표현한다. 하지만, 64Bit를 전부 사용하게 되면 배보다 배꼽이 더 큰 상황이 생긴다. 2^64 만큼을 관리할 메모리 크..