Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Безопасность, Шифрование
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2008, 16:15   #1
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию РАЗДАЧА: антиотладка/недокументированные всякие штуки и разный глючный код :)

Братья-апачи! Должен же быть тред "по обмену примудростями"
* ежели вдруг будет собираться один асм - перенесите в ветку про ассемблер

1. Не отлаживается/вылетает за пределы секции кода, натыкается на инвалидные инструкции
Обьясните кто-нибудь, как это работает и что за опкоды такие slac и те другие 2
Код:
Format PE GUI 4.0
include 'win32axp.inc'

.code
EP:
       jmp   $+3
       db    0e8h
       mov   ecx,100000
     d:
       db    0d6h
       mov   eax,[fs:018h]
       mov   eax,dword[eax+30h]
       movzx eax,byte[eax+02]
       test  eax,eax
       jmp   $+3
       db    0c7h
       jnz   $ + 64
       loop  d

    invoke MessageBoxA,0,'Антиотладка not dead',0,0
    invoke ExitProcess, 0

.end EP

2. SEH, классика, но вот это самое AnimateWindow из-под отладчика выглядит довольно забавно
Код:
Format PE GUI 4.0
include 'win32axp.inc'

.code
EP:
    push SEH
    push dword [fs:0]
    mov [fs:0],esp
    xor eax, eax
    div eax
    pop dword[fs:0]
    add esp, 4

SEH:
    mov ecx, [esp+0Ch]
    add dword [ecx+0B8h], 2
    mov dword [ecx+04h], 0
    mov dword [ecx+08h], 0
    mov dword [ecx+0Ch], 0
    mov dword [ecx+10h], 0
    mov dword [ecx+14h], 0
    mov dword [ecx+18h], 0
    xor eax, eax

    invoke IsDebuggerPresent
    .if eax
      invoke WindowFromPoint,100h,100h
      invoke AnimateWindow,eax,1000h,90000h
    .endif
    invoke MessageBoxA,0,'Антиотладка not dead',0,0
    invoke ExitProcess, 0

.end EP

3. Вариант предыдущего - получается рекурсия с dumprep/dwwin
Код:
Format PE GUI 4.0
include 'win32axp.inc'

.code
EP:
    push seh
    push dword [fs:0]
    mov [fs:0],esp
    xor eax, eax
    div eax
    pop dword[fs:0]
    add esp, 4

seh: 
    mov ecx, [esp+0Ch]
    add dword [ecx+0B8h], 2
    mov dword [ecx+04h], 0
    mov dword [ecx+08h], 0
    mov dword [ecx+0Ch], 0
    mov dword [ecx+10h], 0
    mov dword [ecx+14h], 0
    mov dword [ecx+18h], 0
    xor eax, eax
    invoke MessageBoxA,0,'Щас я очень зависну и буду стопицот раз пытаться отправить отчёт об ошибке =)',0,0
   ; и не выходим
.end EP

4. Из предыдущей темы сюда захватим
Блокирует доступ ко всем дискам, система рушится, спасает только перезагрузка
Код:
Format PE GUI 4.0   
include 'win32axp.inc'   
  
.data   
      name dd 00003a41h  ;// db 0, 0, ':A'   
  
.code   
start:   
     mov     ecx, 26   
  @@:   
     push    ecx   
     invoke  DefineDosDeviceA, 1, name, name   
     pop     ecx   
     add     [name], 1   
     loop    @b   
     invoke  ExitProcess, 0   
.end start
-------------------

На закуску: псевдовысокоуровневые конструкции в FASM:
TRY/EXCEPT by Hidden
try.inc
Код:
include 'macro/proc32.inc'
 
macro SetHandler
{ push TryHandler
  push dword[fs:0]
  mov [fs:0], esp
  push __EXCEPT
  push ebp }
 
macro UnsetHandler
{ pop dword[fs:0]
  add esp, 4 }
 
macro try
{ __TRY equ
  local ..endt
  __ENDT equ ..endt
  local ..except
  __EXCEPT equ ..except
  SetHandler }
 
macro except
{ add esp, 8
  UnsetHandler
  jmp __ENDT
  __EXCEPT:
  UnsetHandler
  restore __TRY
  __TRY equ , }
 
macro endt
{ if __TRY eq
    add esp, 8
    __EXCEPT:
    UnsetHandler
  end if
  __ENDT:
  restore __EXCEPT
  restore __ENDT
  restore __TRY }
 
macro TryProc
{ proc TryHandler, ExceptionRecord, EstablisherFrame, ContextRecord, DispatcherContext
    push esi edi ebx
    mov esi, [EstablisherFrame]
    mov edi, [ContextRecord]
    mov ebx, esi
    sub esi, 8
    add edi, $B4
    movsd ; ebp
    lodsd
    xchg [edi], eax
    ;movsd ; eip
    mov [edi+12], ebx ; esp
    mov [edi-8], eax ; esp
 
    pop ebx edi esi
    xor eax, eax
    ret
  endp }
 
if noinit eq
else
  TryProc
end if
использование:
Код:
Format PE GUI 4.0

include 'win32axp.inc'
include 'try.inc'

.data
    act1     db 'Сейчас будет обращение по нулевому указателю',0
    act2     db 'А сейчас верный код',0
    error    db 'Исключение! (кто б сомневался)',0

.code
EP: try
      invoke  MessageBoxA, 0, act1, 0, 0
      xor     eax,eax
      mov     [eax],eax
    except
      invoke  MessageBoxA, 0, error,0 ,MB_OK+MB_ICONHAND
    endt

    try
      invoke  MessageBoxA, 0, act2, 0, 0
    except
      invoke  MessageBoxA, 0, error, 0,  MB_OK+MB_ICONHAND
    endt

    invoke ExitProcess, 0
.end EP
в аттаче
all_files.rar - файлы выше
bad 32 PE.rar - Olly отказывается отлаживать из-за неверного значения OPTIONAL_HEADER:Number_Of_RVA_and_S izes
Вложения
Тип файла: rar bad 32 PE.rar (410 байт, 31 просмотров)
Тип файла: rar all_files.rar (3.7 Кб, 37 просмотров)
пыщь

Последний раз редактировалось JTG; 14.07.2008 в 16:54.
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СУММИРОВАНИЕ И ПОДСЧЕТ ЯЧЕЕК ОКРАШЕННЫХ В РАЗНЫЙ ЦВЕТ Arina Microsoft Office Excel 11 29.01.2009 14:35
Разный цвет фона в таблице (php) Lonix PHP 2 04.10.2008 21:39
Сборная печать с разный листов shafer Microsoft Office Excel 10 21.05.2008 22:06
Поисковики ! всякие разные Virtson Софт 0 07.12.2007 19:18
для этой штуки нужны тригеры и курсоры. zinnyrik БД в Delphi 4 15.05.2007 14:47