
28.06.2008, 15:32
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
С нами:
9981026
Репутация:
1564
|
|
Next….
Продолжаю. В комментах есть все =)
Код:
# -*- coding: cp1251 -*-
from immlib import *
import struct,sys,string
#-----------------------------c0d3d by 0x0c0de 2008---------------------------------------------------
# Работа с процессами в отладчике-----------------------------------------------------------------
#[Commands]
# 1.Аттач к процессу
# первый аргумент -a, второй аргумент - вводите имя процесса без расширения
#2. Перезапуск текущего отлаживаемого процесса - команда -r
#3. Выход из отладчика -q
#4. Пауза - ключ -p
#5. Справка по коммандам -h
#---------------------------------------------------------------------------------------------------------------
def main(args):
imm = Debugger()
if not args: # если не передано аргументов, то выводим в лог ругательство и завершаемся
imm.Log("PScript: No args")
imm.createLogWindow()
return "Error. See log window"
elif args[0]=="-a": # если сказали аттачиться к процессу
process_list = imm.Ps() # получаем информацию о запущенных процессах
for pr_info in process_list:
if pr_info[1]==args[1]: # если совпало введенное имя процесса и имя процесса в памяти
imm.Attach(pr_info[0]) #атачимся
imm.createLogWindow() #открываем log window
return "Attached =)"
elif args[0]=="-r": # команда на рестарт текущего процесса
imm.restartProcess(-2) # рестартим процесс без вывода сообщения-подтверждения (желаете с выводом - ставьте параметр -1)
d_name = imm.getDebuggedName() # получаем имя загруженного в отладчик процесса
imm.Log(d_name+" restarted ok")
elif args[0]=="-h":
imm.Log("Process script keys:")
imm.Log("Attach to process: -a process_name (no extension)")
imm.Log("Restart current process -r")
imm.Log("Close debugger -q")
imm.Log("Pause process -p")
elif args[0]=="-q": # выход из отладчика
imm.quitDebugger()
elif args[0]=="-p": # Pause
imm.Pause()
imm.Log("Pause ok")
else:
return "Invalid command. Use key -h for more info about commands"
imm.createLogWindow()
return "Done. See log window"
Код:
# -*- coding: cp1251 -*-
from immlib import *
import struct,sys,string
#-----------------------------------cod3d by 0x0c0de--------------------------------------------------------------------
# собственно, в соседней теме было объяснено в принципе все относительно crack_me by taha
# но если кто-то вдруг не понял - задачу взлома можно решить с помощью этого скрипта
# По ходу выполнения появляются комменты по нужным адресам
# Каков алгоритм генерации s/n - это я уже рассказала и показала (см. keygen)
#Все будет работать, если включить игнорирование все исключений
#все возникшие вопросы - в осеку
#---------------------------------------Nice Try!----------------------------------------------------------------------------
def main(args):
imm = Debugger()
gt_address = imm.getAddress("user32.GetDlgItemTextA")
if gt_address!=0:
imm.setBreakpoint(gt_address+5)
imm.Log("Breakpoint at GetDlgItemTextA -> 0x%08X" % (gt_address+5))
# потом вы вводите свое имя и ключ какой-нибудь
imm.Run()
regs = imm.getRegs()
imm.setComment(regs['EIP'],'<-Reading input')
imm.deleteBreakpoint(gt_address+5) # удаляем бряк
imm.runTillRet()
imm.stepIn() # F7
seh_list = imm.getSehChain() # получаем список из обработчиков seh
for seh_handler in seh_list:
imm.Log("Seh handler -> 0x%08X " % seh_handler[1])
imm.setBreakpoint(seh_handler[1])
imm.Log("Breakpoint sets at -> 0x%08X" % seh_handler[1])
imm.Log("Running ...")
imm.Run()
for seh_handler in seh_list:
imm.deleteBreakpoint(seh_handler[1])
imm.Log("Breakpoint deleted at -> 0x%08X" % seh_handler[1])
regs = imm.getRegs()
imm.setComment(regs['EIP'],'<-Seh handler')
imm.setBreakpoint(regs['EIP']+33) # устанавливаем бряк на call vm_proc
imm.Run()
imm.setComment(regs['EIP']+33,'<-vm proc call')
imm.deleteBreakpoint(regs['EIP']+33)
imm.setBreakpoint(0x402113)
regs = imm.getRegs()
while regs['EAX']!=0x0BADC0DE: # цикл пока eax не станет равным 0BADC0DE
imm.Run()
regs = imm.getRegs()
imm.deleteBreakpoint(regs['EIP'])
imm.stepIn()
regs = imm.getRegs()
imm.Log("Serial number for your name at address [DWORD]-> 0x%08X " %regs['EDX'])
# серийный номер - дворд, лежащий по адресу, указанному в логе
sn = imm.readLong(regs['EDX'])
imm.Log("Serial number-> %08X " %sn)
imm.createLogWindow()
return "This all =)"
Код:
# -*- coding: cp1251 -*-
from immlib import*
#----------------------------------c0d3d by 0x0c0de----------------------------------------------
# данный скрипт ставит бряки на все команды, указанные в качестве аргумента
# например !имя_скрипта push eax
#bp будут поставлены на все команды push eax в данном модуле
#---------------------------------------------------------------------------------------------------------
def main(args):
imm = Debugger()
if not args:
return "Error. No args"
cmm = " ".join(args)
comm_list = imm.searchCommandsOnModule(imm.getCurrentAddress(),cmm) # находим все команды
imm.Log("Search command "+cmm)
for comm_ in comm_list: # обрабатываем все адреса с искомой командой
imm.setBreakpoint(comm_[0]) # ставим бряки
imm.Log("Breakpoint sets at -> 0x%08X" % comm_[0])
imm.createLogWindow()
return "Done"
Последний раз редактировалось 0x0c0de; 28.06.2008 в 19:43..
|
|
|