SlideShare a Scribd company logo
Immunity Debugger
활용 & Plugin 제작
2nd CodeEngn Seminar
활용 g 제작
유리바다(seaofglass@korea.com)
www.CodeEngn.com
차 례
• Episode I
– 격돌!
Immunity Debugger vs Cheat Engine
• Episode II
– OEP를 찾아서
• Episode III
– 내 사랑 Plugin !
PyCommand
기본형식
!command
예) !list
- 목록 보기
!pinball
시연
Think!
Pinball with HOOK?!
import immlib
from immlib import LogBpHook
class pinball_hooks(LogBpHook):
def __init__(self):
LogBpHook.__init__(self)
def run(self, regs):def run(self, regs):
imm = immlib.Debugger()
imm.Run()
def main(args):
imm = immlib.Debugger()
bp_address = 0x0101757C
logbp_hook = pinball_hooks()
logbp_hook.add("pinball_game", bp_address)
immlib.py
• Log(“msg”)
– Log 윈도우에 메시지를 남김 (Alt + L)
• updateLog()
– Log 윈도우 업데이트g 윈 우 업데이
• setStatusBar(“msg”)
– 상태창에 메시지 설정
• clearStatusBar()
– 상태창에 설정된 메시지 지움
immlib.py
• stepIn() # F7
• stepOver() # F8
• Run() # F9
• runTillRet() # Ctrl+F9
• setBreakpoint(0xbadc0ded)
• deleteBreakpoint(0xbadc0ded)
immlib.py
• writeMemory(self, address, buf)
– 메모리 지정한 주소에 데이터 쓰기
dM ( lf dd i )• readMemory(self, address, size)
– 메모리로 부터 지정한 크기의 데이터 읽기
• isvmWare()
– 현재 디버거가 vmware에서 작동 여부 확인
immlib.py
• isAnalysed(regs['EIP'])
– 코드가 분석되어져 있는가?
l C d ( ['EIP'])• analyseCode(regs['EIP'])
– 코드 분석 수행
• openTextFile(path="")
– MDI창으로 텍스트 파일을 읽어온다.
immlib.py
• regs=imm.getRegs()
imm.Log("OEP : 0x%08X " % regs['EIP'])
tR ("ESP" 0 FFFFFFFF)• setReg("ESP", 0xFFFFFFFF)
• getDebuggedName()
– 디버깅되고 있는 process module 이름 얻기
immlib.py
• getDebuggedPid()
– 디버깅되고 있는 프로세스 아이디 얻기
i Ad i ()• isAdmin()
– 디버깅이 운영자 권한으로 실행되는가 여부
• ps()
– 현재 활성화 된 프로세스 리스트 얻기
immlib.py
• getAllThreads()
– 모든 프로세스의 thread 리스트 얻기
llSt k()• callStack()
– Back Trace를 리스트 형으로 얻어옴
• markBegin(), markEnd()
– 시작 마크, 종료 마크 (시간 값)
immlib.py
• inputBox(“title”)
– 입력 창 생성
• comboBox(“title”, “[list1, list2]”)
– 콤보 박스 생성
Episode II
넌 누구냐?
Unpacker OEP 찾기!
• 예제 : FSG 2.0
– OP Code를 이용하여 원하는 위치 찾기
– BreakPoint 걸기
– 디버거를 실행하여 BP 위치 도달
– BreakPoint 해제
– StepOver()로 OEP 도달하기
주소 찾기
#code = "JMP DWORD PTR DS:[EBX+C]“
opcode = "xFFx63x0C“
res = imm Search(opcode)res = imm.Search(opcode)
Search( ) 함수
입력 : OP Code
출력 : 찾은 주소 (리스트 형)
디버거 구동
1. 찾은 주소로 중단점 설정
2. 실행 후 중단점에서 정지
3. 중단점 해지
imm.setBreakpoint(res[0])
imm.Run(1)
imm.deleteBreakpoint(res[0])
코드 분석 여부 파악
imm.isAnalysed(regs['EIP'])
imm.analyseCode(regs['EIP'])
OEP에 주석 달기
regs = imm.getRegs()
imm.setComment(regs['EIP'], “OEP!")
Packer OEP 찾기 시연
• 예제 FSG 2.0
Episode III
plugin 제작
• PDK(Plugin Development Kit)를 통한 제작
• 작성 언어 : 델파이(Delphi)
• http://www.peid.info/BobSoft/Source/PDK
forDelphi.zip (지원 라이브러리 및 샘플)
IMMDBG_Plugindata()
function IMMDBG_Plugindata(name: PChar):
Integer; cdecl;
begin
StrLCopy(name, PChar(PLUGIN_NAME), 32);
// Name of plugin
Result := PLUGIN_VERSION;
end;
IMMDBG_Plugininit()
function IMMDBG_Plugininit(ImmDbgVersion:
Integer; hWndImmDbg: HWND; features:
PULONG): Integer; cdecl;
begin
g_hwndImmDbg := hWndImmDbg;
Addtolist(0, 0, 'ImmunityDebugger Plugin');
Result := 0;
end;
IMMDBG_Pluginmenu()
function IMMDBG_Pluginmenu(origin: Integer; pData: PChar; pItem:
Pointer): Integer; cdecl;
begin
case origin of
PM_MAIN:
begin
// Pl i i i i d// Plugin menu in main window
StrCopy(pData, '0 &menu1, 1 &menu2,|2 &About...');
Result := 1;
end;
else
Result := 0; // Any other window
end;
end;
IMMDBG_Pluginaction()
procedure IMMDBG_Pluginaction(origin: Integer; action: Integer; pItem: Pointer); cdecl;
var
sExePath: string;
begin
if (origin = PM_MAIN) then
begin
sExePath := GetExePath;
case action of
0: MessageBox(g_hwndImmDbg, PChar(MENU1), PChar(PLUGIN_NAME), MB_OK);
1: MessageBox(g_hwndImmDbg, PChar(MENU2), PChar(PLUGIN_NAME), MB_OK);
2: MessageBox(g_hwndImmDbg, PChar(ABOUT), PChar(PLUGIN_NAME), MB_OK);
end;
end;
end;
Plugin.pas
• PM_MAIN : 메인 윈도우 처리
• PM_DUMP : DUMP창 처리
• PM_THREADS : THREADS창 처리
• PM_BREAKPOINTS : BreakPoint 창 처리
• PM_RTRACE : Run Trace 창 처리
• PM_DISASM : CPU창 팝업 메뉴 처리
• PM_CPUREGS : CPU Register 처리
Plugin.pas
• TIMMDBG_Pluginmainloop()
• TIMMDBG_Pluginsaveudd()
• TIMMDBG_Pluginuddrecord()
• TIMMDBG_Pluginshortcut()
• TIMMDBG_Pluginreset()
• TIMMDBG_Pluginclose()
• TIMMDBG_Plugindestroy()
Sample plugin
참고 사이트
• 이뮤니티 포럼
– http://forum.immunityinc.com
• PDK for Delphi
– http://www.peid.info/BobSoft/
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
Quiz
Reverse Engineering과 연관 있다고
생각되는 동물과 그 이유?
평가 – 공감성, 논리성
앞으로의 여정?
배우고자 하는 누군가를 위하여
학습 할 수 있는 토대를 만드는 것은학습 할 수 있는 토대를 만드는 것은
참으로 의미 있는 일이다!
감
사
합
2nd CodeEngn Seminar
합
니
다
www.CodeEngn.com

More Related Content

PDF
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention
Code Engn
 
PDF
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)
NAVER D2
 
PDF
[Kerference] 시작! 리버싱 - 김종범(KERT)
NAVER D2
 
PDF
알고리즘 시각화 라이브러리 ipytracer 개발기
Han Lee
 
PDF
Hello world
. Ruvendix
 
PDF
모두의 JIT 컴파일러
우경 성
 
PPTX
[KGC 2011]Boost 라이브러리와 C++11
흥배 최
 
PDF
Hello c++ world
. Ruvendix
 
[2007 CodeEngn Conference 01] 김기오 - NASM 어셈블러 사용법과 Calling Convention
Code Engn
 
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)
NAVER D2
 
[Kerference] 시작! 리버싱 - 김종범(KERT)
NAVER D2
 
알고리즘 시각화 라이브러리 ipytracer 개발기
Han Lee
 
Hello world
. Ruvendix
 
모두의 JIT 컴파일러
우경 성
 
[KGC 2011]Boost 라이브러리와 C++11
흥배 최
 
Hello c++ world
. Ruvendix
 

What's hot (20)

PPTX
2016 hack festival igrus
Jinookawk
 
PDF
Iocp 기본 구조 이해
Nam Hyeonuk
 
PDF
[C++ Korea 2nd Seminar] C++17 Key Features Summary
Chris Ohk
 
PPTX
WTL 소개
Wonseok Song
 
PPTX
Windows reversing study_basic_2
J J
 
PDF
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
흥배 최
 
PPTX
Dependency hell과 빌드지옥 탈출
Byeongsu Kang
 
PDF
Boost 라이브리와 C++11
OnGameServer
 
PDF
사내스터디 발표 온라인게임서버이해 20100401
guest91f89d83
 
PDF
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
Esun Kim
 
PDF
병렬 프로그래밍2
준혁 이
 
PPTX
Pwnable study basic_3
J J
 
PDF
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
Chris Ohk
 
PPTX
파이썬 스터디 9장
SeongHyun Ahn
 
PPTX
C++11
선협 이
 
PPTX
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
Jaeseung Ha
 
PPTX
파이썬 스터디 15장
SeongHyun Ahn
 
PDF
Google coding guide
. Ruvendix
 
PPTX
Assembly 스터디 2
J J
 
PDF
2. c언어의 기본
SeonMan Kim
 
2016 hack festival igrus
Jinookawk
 
Iocp 기본 구조 이해
Nam Hyeonuk
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
Chris Ohk
 
WTL 소개
Wonseok Song
 
Windows reversing study_basic_2
J J
 
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
흥배 최
 
Dependency hell과 빌드지옥 탈출
Byeongsu Kang
 
Boost 라이브리와 C++11
OnGameServer
 
사내스터디 발표 온라인게임서버이해 20100401
guest91f89d83
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
Esun Kim
 
병렬 프로그래밍2
준혁 이
 
Pwnable study basic_3
J J
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
Chris Ohk
 
파이썬 스터디 9장
SeongHyun Ahn
 
C++11
선협 이
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
Jaeseung Ha
 
파이썬 스터디 15장
SeongHyun Ahn
 
Google coding guide
. Ruvendix
 
Assembly 스터디 2
J J
 
2. c언어의 기본
SeonMan Kim
 
Ad

Viewers also liked (9)

PDF
[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
Code Engn
 
PDF
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
Code Engn
 
PDF
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
Code Engn
 
PDF
[2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법
Code Engn
 
PDF
[2013 CodeEngn Conference 08] pwn3r - Pwning multiplayer game - case Starcraf...
Code Engn
 
PDF
Inc0gnito fuzzing for_fun_sweetchip
sweetchip
 
PDF
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
Code Engn
 
[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit
Code Engn
 
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
Code Engn
 
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
Code Engn
 
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
Code Engn
 
[2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법
Code Engn
 
[2013 CodeEngn Conference 08] pwn3r - Pwning multiplayer game - case Starcraf...
Code Engn
 
Inc0gnito fuzzing for_fun_sweetchip
sweetchip
 
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
Code Engn
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
Code Engn
 
Ad

Similar to [2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작 (20)

PPTX
Windows reversing study_basic_7
J J
 
PDF
6. code level reversing
Youngjun Chang
 
PPTX
Pwnable study basic_2
J J
 
PPTX
Assembly 스터디 1
J J
 
PDF
보안프로젝트 세미나 Viper-v1.2
Jason Choi
 
PPTX
Windows reversing study_basic_6
J J
 
PDF
Codegate 2013 Junior - Music Player Exploit
sweetchip
 
PDF
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이
Code Engn
 
PPTX
Windows reversing study_basic_8
J J
 
PPT
2006 03 15_pe & api hook
용환 노
 
PPTX
Pwnable study basic_1
J J
 
PDF
19.debugger detected and anti anti-techniques hangul
re4lfl0w
 
PPTX
[0618구경원]초보 게임프로그래머를 위한 c++
KyeongWon Koo
 
PDF
(111217) #fitalk rootkit tools and debugger
INSIGHT FORENSIC
 
PDF
Main Variable Program
경섭 심
 
PPTX
으리리버싱시즌3
형석 김
 
PDF
Reverse Engineering 2015.02.09
fromitive
 
PPTX
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Kiyoung Moon
 
PDF
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
Minseok(Jacky) Cha
 
PPTX
System+os study 4
J J
 
Windows reversing study_basic_7
J J
 
6. code level reversing
Youngjun Chang
 
Pwnable study basic_2
J J
 
Assembly 스터디 1
J J
 
보안프로젝트 세미나 Viper-v1.2
Jason Choi
 
Windows reversing study_basic_6
J J
 
Codegate 2013 Junior - Music Player Exploit
sweetchip
 
[2012 CodeEngn Conference 07] nesk - Defcon 20th : 본선 CTF 문제풀이
Code Engn
 
Windows reversing study_basic_8
J J
 
2006 03 15_pe & api hook
용환 노
 
Pwnable study basic_1
J J
 
19.debugger detected and anti anti-techniques hangul
re4lfl0w
 
[0618구경원]초보 게임프로그래머를 위한 c++
KyeongWon Koo
 
(111217) #fitalk rootkit tools and debugger
INSIGHT FORENSIC
 
Main Variable Program
경섭 심
 
으리리버싱시즌3
형석 김
 
Reverse Engineering 2015.02.09
fromitive
 
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Kiyoung Moon
 
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
Minseok(Jacky) Cha
 
System+os study 4
J J
 

More from Code Engn (20)

PDF
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
Code Engn
 
PDF
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
Code Engn
 
PDF
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
Code Engn
 
PDF
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
Code Engn
 
PDF
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
Code Engn
 
PDF
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
Code Engn
 
PDF
[2013 CodeEngn Conference 09] proneer - Malware Tracker
Code Engn
 
PDF
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
Code Engn
 
PDF
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
Code Engn
 
PDF
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
Code Engn
 
PDF
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
Code Engn
 
PDF
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
Code Engn
 
PDF
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들
Code Engn
 
PDF
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
Code Engn
 
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
Code Engn
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
Code Engn
 
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
Code Engn
 
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
Code Engn
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
Code Engn
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
Code Engn
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
Code Engn
 
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
Code Engn
 
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
Code Engn
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
Code Engn
 
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
Code Engn
 
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
Code Engn
 
[2013 CodeEngn Conference 09] proneer - Malware Tracker
Code Engn
 
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
Code Engn
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
Code Engn
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
Code Engn
 
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
Code Engn
 
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
Code Engn
 
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들
Code Engn
 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
Code Engn
 

[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작