HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Реверсинг
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #6  
Старый 28.06.2008, 15:32
0x0c0de
Постоянный
Регистрация: 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..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books Python FRAGNATIC PHP 1 01.11.2009 18:20



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.