티스토리 뷰
immlib.py를 사용하기 위해 아래와 같이 import를 시킨 후에 Debugger() 클래스를 가져와야 한다.
1 | from immlib import * imm = Debugger() | cs |
imm.log("msg")
- Log 윈도우에 메시지를 남김 (Alt + L)
imm.updateLog()
- Log 윈도우 업데이트
imm.setStatusBar("msg")
- 상태창에 메시지 설정
imm.clearStatusBar()
- 상태창에 설정된 메시지 지움
imm.stepIn() - F7
imm.stepOver() - F8
imm.Run() - F9
imm.runTillRet() - Ctrl + F9
imm.setBreakpoint(0x00000000)
- 브레이크 포인트 설정
imm.deleteBreakpoint(0x00000000)
- 브레이크 포인트 해제
imm.writeMemory(self, address, buf)
- 메모리 지정한 주소에 데이터 쓰기
imm.readMemory(self, address, size)
- 메모리로 부터 지정한 크기의 데이터 읽기
imm.isvmWare()
- 현재 디버거가 vmware에서 작동 여부 확인
imm.isAnalysed(regs['EIP'])
- 코드가 분석되어져 있는지 확인
imm.openTextFile(path="")
- MDI창으로 텍스트 파일을 읽어온다.
regs = imm.getRegs()
ex) imm.log("OEP : 0x%08X " % regs['EIP'])
- 현재 레지스터를 regs 변수에 모두 넣고, regs['EIP']를 통해 현재 EIP 레지스터의 값을 로그로 출력
imm.setReg("ESP" 0 FFFFFFFF)
- ESP 레지스터에 값을 적용
imm.getDebuggedName()
- 디버깅되고 있는 process module 이름 얻기
imm.getDebuggedPid()
- 디버깅되고 있는 프로세스 아이디 얻기
imm.isAdmin()
- 디버깅이 운영자 권한으로 실행되는지 여부
imm.ps()
- 현재 활성화 된 프로세스 리스트 얻기
1 2 3 4 5 | def main(): imm = immlib.Debugger() pslist = imm.ps() for process in pslist: imm.Log("Process: %s - PID: %d" % (process[1],process[0])) | cs |
imm.getAllThreads()
- 모든 프로세스의 thread 리스트 얻기
imm.callStack()
- Back Trace를 리스트 형으로 얻어옴
imm.markBegin(), imm.markEnd()
- 시작 마크, 종료 마크 (시간 값)
imm.inputBox(“title”)
- 입력 창 생성
imm.comboBox("title", "[list1, list2]")
- 콤보 박스 생성
imm.Search(opcode)
ex) res = imm.Search("\xAA\xBB\xCC")
입력 : OP Code 형태로 넣어줌
출력 : 찾은 주소 (리스트 형)
imm.setComment(regs[''], “comment")
주석 달기
opcode = imm.disasm(imm.getRegs()['EIP'])
if opcode.isJmp() or opcode.isConditionalJmp():
size = opcode.getOpSize() # ex) opcode가 '6A 00'이라면 size는 '2'
- 현재 EIP의 opcode를 알아온 후에 opcode가 jmp인지 jz,jnz와 같은 상태 점프문인지 확인 후 맞다면 opcode의 사이즈를 가져옴
path = imm.getModule(imm.getDebuggedName()).getPath()
- imm.getDebuggedName method로 현재 Debugging하고 있는 프로그램의 이름을 얻어오고, imm.getModule.getPath method로 그 프로그램의 정보 중 절대경로를 가져옵니다.
ispresent = imm.getAddress( "kernel32.IsDebuggerPresent" )
imm.writeMemory( ispresent, imm.Assemble( "xor eax, eax\n ret" ) )
- 현재 IsDebuggerPresent API의 주소를 가져와서 0으로 만든 후 리턴
참고
'리버싱 > Immunity Debugger PyCommands 스크립트 정리' 카테고리의 다른 글
Immunity Debugger Plugin - BpHook 예제 (0) | 2017.02.07 |
---|---|
Immunity Debugger PyCommands - openfile.py (0) | 2017.02.03 |
Immunity Debugger PyCommands - usage.py (0) | 2017.02.03 |
PyHooks 정리 (0) | 2017.02.03 |
Immunity Debugger PyCommands - list.py (0) | 2017.01.23 |
- Total
- Today
- Yesterday
- AMSI
- malware
- Yara
- vuln
- idapython
- koodous
- CVE-2018-9375
- 스피어피싱
- MS-Office
- 악성코드
- cuckoo-sandbox
- 멋쟁이사자처럼 4기
- 한글악성코드
- 위협정보공유
- 비트코인
- Decoding
- 출처 : Do it 안드로이드 프로그래밍
- Kimsuky
- Flybits
- Static Analysis Engine
- Bisonal
- us-cert
- Servey
- CVE-2018-0798
- infostealer
- VirusBulletin
- keylogger
- .wll
- 해킹메일
- Cisco Talos
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |