ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #381  
Старый 08.08.2008, 01:43
Аватар для zl0y
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
Провел на форуме:
2869410

Репутация: 925


Отправить сообщение для zl0y с помощью ICQ
По умолчанию

Цитата:
Сообщение от Juda  
как скрыть вызов АПИ ф-и?

пробовал использовать метод Криса(masm32):
------------------------------------------
пример вызова MessageBox
.data
lib db "user32.dll",0
f db "MessageBoxA",0

.code
invoke LoadLibrary, addr lib
invoke GetProcAddress, eax, addr funk

push MB_OK
push NULL
push NULL
push NULL
push 0E0FFh (опкод jmp eax)
jmp esp

---------------------------------------------
вроде работает, но если после jmp esp идет ret валится на стадии выполнения.
в чем бок?
и какие еще есть способы скрытого вызова АПИ?
Естественно будет падать,так как ты должен занести в стек адрес возврата перед вызовом после чего,после вызова апи сделать ret либо retn в зависимости от апишки,да и на новых процах запрещенно аппаратно исполнение в стеке(могу ошибаться).

Последний раз редактировалось zl0y; 08.08.2008 в 01:46..
 
Ответить с цитированием

  #382  
Старый 08.08.2008, 10:29
Аватар для 0verbreaK
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

zl0y об int 2eh
http://z0mbie.daemonlab.org/ntoskrnl.html

Можно использовать адреса API функций:

Код:
mov eax, address_of_API
push argument1
push argument2
....
push argumentn
call eax
 
Ответить с цитированием

  #383  
Старый 08.08.2008, 11:02
Аватар для w_2k
w_2k
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме:
104504

Репутация: 1
Отправить сообщение для w_2k с помощью ICQ
По умолчанию

0verbreak, у тебя случаем инфы по перехвату досовский прерываний нет?)
 
Ответить с цитированием

  #384  
Старый 08.08.2008, 11:41
Аватар для iv.
iv.
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме:
7134052

Репутация: 1204


По умолчанию

Цитата:
0verbreak, у тебя случаем инфы по перехвату досовский прерываний нет?)
если мне не изменяет память, инфа с примерами есть в книге Абашева "ассемблер в задачах защиты информации". как дома буду - гляну точно, у меня бумажный вариант..
 
Ответить с цитированием

  #385  
Старый 08.08.2008, 15:08
Аватар для Ryu
Ryu
Новичок
Регистрация: 13.06.2008
Сообщений: 24
Провел на форуме:
28814

Репутация: 4
По умолчанию

Это не метод криса. Это стандартный метод применяемый в вирусах. Только с той разницей что в вирусах не используется плейн название ф-ций а их хеш 32. Полиномы не стоит пробовать для хеширования новые подбирать - все нормальные уже посчтитали. Почитай статьи билли из 29а, на васме есть в вирмейкинге.
 
Ответить с цитированием

  #386  
Старый 08.08.2008, 20:01
Аватар для 0verbreaK
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

w_2k на сайте калашникова в какомто уроке есть перехват прерывания

Последний раз редактировалось 0verbreaK; 08.08.2008 в 20:17..
 
Ответить с цитированием

  #387  
Старый 08.08.2008, 20:24
Аватар для w_2k
w_2k
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме:
104504

Репутация: 1
Отправить сообщение для w_2k с помощью ICQ
По умолчанию

О! Нашёл:-) Ток не совсем всё понял)
Код:
Init:
mov ah,35h
mov al,21h
int 21h
mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es
mov ax,2521h
mov dx,offset Int_21h_proc
int 21h
mov dx,offset Init
int 27h
Это тоже в памяти будет?
з.ы. Не совсем понял с подменой регистров в основной процедуре,ведь адрес прерывания в переменной, а там регистры в стек/из стека

Последний раз редактировалось w_2k; 08.08.2008 в 20:26..
 
Ответить с цитированием

  #388  
Старый 08.08.2008, 22:21
Аватар для 0verbreaK
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

w_2k Справочник Ральфа Брауна + Оля в руки и исследуй )
 
Ответить с цитированием

  #389  
Старый 12.08.2008, 23:30
Аватар для Juda
Juda
Познающий
Регистрация: 02.08.2008
Сообщений: 55
Провел на форуме:
363117

Репутация: 30
По умолчанию

Пробовал все что советовали по скрытию апи, всеравно палится антивирями. Вот только руки не дошли до 29а.
Еще есть способ выташить апи через SEH:

----------------------------------
Код:
.386
.model flat,stdcall
option casemap:none

INCLUDE    \masm32\include\windows.inc

INCLUDE    \masm32\include\comdlg32.inc
INCLUDELIB \masm32\lib\comdlg32.lib

; ------ STRUCTS ------
sSEH STRUCT
  OrgEsp            DD ?
  OrgEbp            DD ?
  SaveEip           DD ?
sSEH ENDS

; ------ EQU'S ------
MIN_KERNEL_SEARCH_BASE    EQU 070000000h
MAX_API_STRING_LENGTH     EQU 150

; ------ CONST ------
.CONST
szLoadLibrary             DB "LoadLibraryA",0
szGetProcAddress          DB "GetProcAddress",0
szExitProcess             DB "ExitProcess",0

szUser32                  DB "user32",0
szMessageBox              DB "MessageBoxA",0
szwsprintf                DB "wsprintfA",0

szInfoCap                 DB "- Kernel -",0
szInfoText                DB "The following information were obtained",13,10
                          DB "without the help of an Import Table !",13,10
              DB 13,10
                          DB "Kernel32.dll ImageBase:  0x%08lX",13,10
                          DB "User32.dll ImageBase:  0x%08lX",13,10
              DB 13,10
                          DB "API Addresses:",13,10
                          DB "LoadLibraryA:  0x%08lX",13,10
                          DB "GetProcAddress:  0x%08lX",13,10
                          DB "ExitProcess:  0x%08lX",13,10
                          DB 13,10
                          DB "MessageBoxA:  0x%08lX",13,10
                          DB "wsprintfA:  0x%08lX",0

; ------ DATA ------
.DATA
_LoadLibrary              DD 0
_GetProcAddress           DD 0
_ExitProcess              DD 0
_MessageBox               DD 0
_wsprintf                 DD 0

cBuff           DB 200 DUP (0)
SEH                       sSEH <0>
dwKernelBase              DD 0
dwUserBase                DD 0

; ------ CODE ------
.CODE
main:
  ASSUME FS : NOTHING
  
  ;INT 3
  
  ;---- GET ImageBase of kernel32.dll ----  
  PUSH [ESP]
  CALL GetKernelBase
  OR   EAX, EAX
  JZ   QUIT
  MOV  dwKernelBase, EAX
  
  ;---- GET SOME KERNEL API ADDRESSES ----
  ;-> LoadLibraryA
  PUSH OFFSET szLoadLibrary
  PUSH dwKernelBase
  CALL GetProcAddr
  OR   EAX, EAX
  JZ   QUIT
  MOV  _LoadLibrary, EAX
  
  ;-> GetProcAddress
  PUSH OFFSET szGetProcAddress
  PUSH dwKernelBase
  CALL GetProcAddr
  OR   EAX, EAX
  JZ   QUIT
  MOV  _GetProcAddress, EAX
  
  ;-> ExitProcess
  PUSH OFFSET szExitProcess
  PUSH dwKernelBase
  CALL GetProcAddr
  OR   EAX, EAX
  JZ   QUIT
  MOV  _ExitProcess, EAX
  
  ;---- LOAD USER32.DLL ----
  PUSH OFFSET szUser32
  CALL _LoadLibrary
  OR   EAX, EAX
  JZ   QUIT
  MOV  dwUserBase, EAX
  
  ;---- GET SOME USER API ADDRESSES ----
  ;-> MessageBoxA
  PUSH OFFSET szMessageBox
  PUSH dwUserBase
  CALL GetProcAddr
  OR   EAX, EAX
  JZ   QUIT
  MOV  _MessageBox, EAX
  
  ;-> wsprintfA
  PUSH OFFSET szwsprintf
  PUSH dwUserBase
  CALL GetProcAddr
  OR   EAX, EAX
  JZ   QUIT
  MOV  _wsprintf, EAX
  
  ;---- BUILD AND SHOW THE INFORMATION MSG ----
  PUSH _wsprintf
  PUSH _MessageBox
  PUSH _ExitProcess
  PUSH _GetProcAddress
  PUSH _LoadLibrary
  PUSH dwUserBase
  PUSH dwKernelBase
  
  PUSH OFFSET szInfoText
  PUSH OFFSET cBuff
  CALL _wsprintf
  ADD  ESP, (9 * SIZEOF(DWORD))
  
  PUSH MB_ICONINFORMATION OR MB_SYSTEMMODAL
  PUSH OFFSET szInfoCap
  PUSH OFFSET cBuff
  PUSH 0
  CALL _MessageBox
  
  ;---- EXIT ----
  CALL _ExitProcess             ;)

QUIT:
  RET                 ; exit to OS
  
;---- AN UNUSED IMPORT ----
; The Win32 Loader of Win2k (maybe also of WinNT) won't call the EntryPoint of files which don't
; have an Import Table :(
; So here's an unused Import to make MASM compile an Import Table.

  PUSH NULL
  CALL GetOpenFileName
  
; ------ ROUTINES ------
; returns NULL in the case of an error
GetKernelBase PROC USES EDI ESI, dwTopStack : DWORD
  ; install SEH frame
  PUSH OFFSET SehHandler
  PUSH FS:[0]
  MOV  SEH.OrgEsp, ESP
  MOV  SEH.OrgEbp, EBP
  MOV  SEH.SaveEip, OFFSET ExceptCont
  MOV  FS:[0], ESP
  
  ; start the search
  MOV  EDI, dwTopStack
  AND  EDI, 0FFFF0000h    ; wipe the LOWORD !
  .WHILE TRUE
     .IF WORD PTR [EDI] == IMAGE_DOS_SIGNATURE
        MOV  ESI, EDI
        ADD  ESI, [ESI+03Ch]
        .IF  DWORD PTR [ESI] == IMAGE_NT_SIGNATURE
           .BREAK
        .ENDIF
     .ENDIF
           ExceptCont:
     SUB  EDI, 010000h
     .IF EDI < MIN_KERNEL_SEARCH_BASE
        MOV  EDI, 0BFF70000h
        .BREAK
     .ENDIF
  .ENDW
  XCHG EAX, EDI 
  
  ; shutdown SEH frame
  POP  FS:[0]
  ADD  ESP, 4
  RET
GetKernelBase ENDP

; returns address or NULL in the case of an error
GetProcAddr PROC USES ESI EDI ECX EBX EDX, dwDllBase : DWORD, szApi : LPSTR
  ; install SEH frame
  PUSH OFFSET SehHandler
  PUSH FS:[0]
  MOV  SEH.OrgEsp, ESP
  MOV  SEH.OrgEbp, EBP
  MOV  SEH.SaveEip, OFFSET @@BadExit
  MOV  FS:[0], ESP
  
  ; check PE Signarue
  MOV  ESI, dwDllBase
  CMP  WORD PTR [ESI], IMAGE_DOS_SIGNATURE
  JNZ @@BadExit
  ADD  ESI, [ESI+03Ch]
  CMP  DWORD PTR [ESI], IMAGE_NT_SIGNATURE
  JNZ @@BadExit
  
  ; get the string length of the target Api
  MOV  EDI, szApi
  MOV  ECX, MAX_API_STRING_LENGTH
  XOR  AL, AL
  REPNZ  SCASB
  MOV  ECX, EDI
  SUB  ECX, szApi             ; ECX -> Api string length
  
  ; trace the export table
  MOV  EDX, [ESI+078h]            ; EDX -> Export table
  ADD  EDX, dwDllBase
  ASSUME EDX : PTR IMAGE_EXPORT_DIRECTORY
  MOV  EBX, [EDX].AddressOfNames          ; EBX -> AddressOfNames array pointer
  ADD  EBX, dwDllBase
  XOR  EAX, EAX             ; EAX AddressOfNames Index
  .REPEAT
     MOV  EDI, [EBX]
     ADD  EDI, dwDllBase
     MOV  ESI, szApi
     PUSH ECX       ; save the api string length
     REPZ CMPSB
     .IF ZERO?
        ADD  ESP, 4
        .BREAK
     .ENDIF
     POP  ECX
     ADD  EBX, 4
     INC  EAX   
  .UNTIL EAX == [EDX].NumberOfNames
  
  ; did we found sth ?
  .IF EAX == [EDX].NumberOfNames
     JMP @@BadExit
  .ENDIF
  
  ; find the corresponding Ordinal
  MOV  ESI, [EDX].AddressOfNameOrdinals
  ADD  ESI, dwDllBase
  PUSH EDX      ; save the export table pointer
  MOV  EBX, 2
  XOR  EDX, EDX
  MUL  EBX
  POP  EDX
  ADD  EAX, ESI
  XOR  ECX, ECX
  MOV  WORD PTR CX, [EAX]           ; ECX -> Api Ordinal
  
  ; get the address of the api
  MOV  EDI, [EDX].AddressOfFunctions
  XOR  EDX, EDX
  MOV  EBX, 4
  MOV  EAX, ECX
  MUL  EBX
  ADD  EAX, dwDllBase
  ADD  EAX, EDI
  MOV  EAX, [EAX]
  ADD  EAX, dwDllBase
  JMP  @@ExitProc
  
  ASSUME EDX : NOTHING  
    
   @@BadExit:
    XOR  EAX, EAX   
   @@ExitProc:
  ; shutdown SEH frame
  POP  FS:[0]
  ADD  ESP, 4
  RET
GetProcAddr ENDP

SehHandler PROC C pExcept:DWORD,pFrame:DWORD,pContext:DWORD,pDispatch:DWORD
  MOV  EAX, pContext
  ASSUME EAX : PTR CONTEXT
  PUSH SEH.SaveEip
  POP  [EAX].regEip
  PUSH SEH.OrgEsp
  POP  [EAX].regEsp
  PUSH SEH.OrgEbp
  POP  [EAX].regEbp
  MOV  EAX, ExceptionContinueExecution
  RET
SehHandler ENDP

end main
--------------------------
вот только как бы я его не изменял, не упаковывал, не шифровал все равно палится анти вирями. Шифровал XORом. Что посоветуете?

Последний раз редактировалось Juda; 12.08.2008 в 23:42..
 
Ответить с цитированием

  #390  
Старый 18.08.2008, 20:58
Аватар для 0verbreaK
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Juda

1) не храни строки в открытом виде
2) можно использовать адреса API
3) контрольные суммы функций
4) измени инструкции на подобные
5) морфи код
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Delphi, .NET, Asm 92 14.05.2010 17:59
Обзор программ для очистки жёсткого диска v1ru$ Soft - Windows 21 17.01.2010 21:07
ОС с нуля z01b С/С++, C#, Delphi, .NET, Asm 36 03.07.2008 15:30
Лучший софт для Linux _-Ramos-_ Soft - *nix 11 15.01.2008 12:08
Взлом Unix а silveran *nix 4 21.12.2005 22:46



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


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




ANTICHAT.XYZ