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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2008, 21:51   #1
SoundMan
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 27
По умолчанию самомодифицирующийся код

Перерыл пол инета, но нашёл только статью о написании СМК под 95-ый. Если у кого нибудь есть статьи/исходники прог/и тд. про СМК, киньте плиз.
(З.Ы. нужен в целях обучения!)
SoundMan вне форума Ответить с цитированием
Старый 08.11.2008, 08:44   #2
tar4
 
Регистрация: 07.11.2008
Сообщений: 5
По умолчанию

Я когда-то некоторое время общался на wasm.ru и там этот вопрос периодически обсуждался. Там же на сайте есть хороший раздел литературы, посмотри в нем.
tar4 вне форума Ответить с цитированием
Старый 08.11.2008, 16:09   #3
SoundMan
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 27
По умолчанию

Вроде что-то нашёл. Для тех, кому также интересно:

Код:
mov cx, code_length
    mov si, offset begin_code
    mov al, xor_key
_loop:
    xor [si+cx], al ;расшифровываем байт
    loop _loop      ;берем следующий байт
    jmp si

    ;...
    ;...
    
begin_code:
    ;тут находится зашифрованная часть тела вируса
    ;именно она ответственна за заражение новых файлов
    ;и формирование новой процедуры расшифровки
    ;при этом эта же часть тела вируса в новом файле должна быть заново
    ;зашифрована, но уже с другим ключом
upd.

В общем, разобрался с СМК, попробую объяснить и остальным, кто им заинтересован. (Написано в МАСМе)

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

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc

includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib

.data
    a dd 40101Ch   //Адрес с которого начнётся шифрование кода
.code
start:
      mov edx, 25h  //Количество байт которые надо зашифровать
@im:
      mov eax, a   //Помещаем адрес в еах
      xor word ptr [eax], 9696h  //Собственно изменение кода
      add a, 2   //Добавляем 2 чтобы перейти к следующему слову
      dec edx   //Уменьшаем счётчик
      jnz @im

      add eax,2          //Этот код - мусор, который и будет изменяться
      nop
      nop
      mul ebx
      xor eax,eax
      inc cl
      dec al
      xor dx,bx
      add ax,56
      sub ax,ax
      xor eax,eax
      div ebx
      mul ax
      nop
      cli
      push eax
      pop ax
      invoke ExitProcess, 0
      
end start
Далее, скачиваем программу LordPE, открываем в ней нашу прогу, и меняем аттрибуты секции .text на E0000020. Далее открываем прогу в отладчике и любуемся)

Последний раз редактировалось SoundMan; 09.11.2008 в 10:33.
SoundMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает код... prizrak1390 Общие вопросы Delphi 3 22.10.2008 14:59
Код на C++ Иллидан Общие вопросы Delphi 1 08.10.2008 14:02
Прог.код Fantom Общие вопросы Delphi 3 11.05.2008 14:34
программа (не код!) simple Помощь студентам 8 14.01.2008 23:36
Двоичный код masterx13 Паскаль, Turbo Pascal, PascalABC.NET 4 14.11.2007 20:08