· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Как самоклонироваться?

Посл.отвђт Сообщенiе


Дата: Апр 15, 2003 11:44:26

Возможно ли и как прочитать свою загруженную прогу под винду (PE формат) из памяти и сохранить её в виде нового exe-шника, возможно с min модификациями?

Для com- формата есть старая демка, компилятор FASM.
Если запустить вновь созданный файл, она создаст ещё один
и ещё, до бесконечности:

org 100h
use16
my_head:
inc [namef+3]
mov dx, namef
mov cx,0
mov ah,3Ch
int 21h
mov [f_number],ax
mov bx,ax
mov dx,my_head
mov cx,my_end - my_head
mov ah,40h
int 21h
mov bx,[f_number]
mov ah,3Eh
int 21h
ret
namef db 'new1.com',0
f_number dw 0
my_end:

Т.е. сделать аналогичное для PE.


Дата: Июн 22, 2003 00:38:45 · Поправил: DEMON84

А ты ваще чё, червя-размножальщика решил написать?


Дата: Июн 22, 2003 02:01:25

Можно PE и из памяти - Пишем с начала 400000h (=GetModuleHandle()) по размеру IMAGE_NT_HEADERS.OptionalHeader.SizeOfImage. Ну там ещё секции двигать придётса, и так далее. Процесс такой же как дамп любой другой программы - только себя.


Дата: Июн 22, 2003 03:25:36

Помню, как-то по дурости писал простенького червячка-размножалку (в универе сервак забить решил, на учёбу ломы были :-)) и юзал винапишную функцию CopyFile(OldName,NewName,True). Так ваще ничё получилось: размножение было приятным, но недолгим – место на серваке закончилось :-)


Дата: Июл 1, 2003 23:53:36

Решение:
Используй две функции GetModuleFileName и Copy File


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064