Сейчас на форуме: YDS, _MBK_, user99, ManHunter (+6 невидимых)

 eXeL@B —› Основной форум —› Помогите написать загрузчик на Делфи
Посл.ответ Сообщение

Ранг: 6.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 декабря 2005 00:31 · Поправил: Модератор
· Личное сообщение · #1

Привет, у меня несколько вопросов:
1. Какой функцией можно определить запущен процесс или нет.
2. Какой функцией можно прочитать данные из адреса в памяти
3. Какой функцией можно заменить, добавить или удалить данные из адреса в памяти.

Патч - Лодырь писать собираюсь!

С примерами Please!



Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 09 декабря 2005 00:40 · Поправил: arnix
· Личное сообщение · #2

простенький пример (статья на английском)

3971_loader_delphi.txt.zip

Тут вааще-то было не TXT a HTML, форум изменил расширение.



Ранг: 6.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 декабря 2005 00:48
· Личное сообщение · #3

А на русском нету?





Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 09 декабря 2005 00:59 · Поправил: mysterio
· Личное сообщение · #4

SamoVar
А на русском нету?
Тебе и так помогают как могут ... тем более Z0oMiK давал тебе такой же пример, а тут даже коменты есть, .... просто разберись. Удачи в начинаниях ! ;)

-----
Don_t hate the cracker - hate the code.




Ранг: 6.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 декабря 2005 01:02
· Личное сообщение · #5

Сенк ю and ALL





Ранг: 230.5 (наставник)
Активность: 0.180
Статус: Участник
Norg

Создано: 09 декабря 2005 01:37
· Личное сообщение · #6

mysterio пишет:
А на русском нету?
Русского вообще как такового в компах нету.Привыкай к международному,к тому же лучшие статьи в основном на английском.

-----
M&#225 enginn renna undan &#254v&#237 sem honum er skapa&#240




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 09 декабря 2005 08:58
· Личное сообщение · #7

SamoVar пишет:
1. Какой функцией можно определить запущен процесс или нет.

Одной такой супер-пупер API-функции на сегодняшний день не существует (а жаль).

Я знаю 3 подхода к решению задачи.

1. Если прога твоя (не этот случай, но всё же).

Напиши в ней код, который будет как бы флагом. В MSDN предлагают варианта с CreateFileMapping (то есть уникальный файл вместо флага). Вообще говоря, это довольно расточительный способ, но другого (до WinNT) им в голову не пришло =). Можно так же мютексами общаться.

2. Если прога не твоя, и ты даже не знаешь: где она, с кем она, что она (допустим только имя exe).
В таком случае нужно перебирать все запущенные процессы в поисках желанного или не желанного (например, в случае с вирусом =).
Тебе сюда:
Как получить список запущенных процессов? - www.rsdn.ru/article/qna/baseserv/enumproc.xml

3. Если прога не твоя, париться не хочешь и просто пишешь лодырь (как раз для тебя).
Достаточно отрыть файл на чтение/запись эксклюзивно, вот так:
invoke CreateFile, ADDR _FileName, GENERIC_WRITE ,0,0,OPEN_EXISTING,0,0

Ежели он занят, то можно сделать предположение, что файл запущен (для лодыря такое допущение сойдёт =).
Ну а если файл откроется, нужно его закрыть и вперёд, далее по теме.


SamoVar пишет:
2. Какой функцией можно прочитать данные из адреса в памяти
3. Какой функцией можно заменить, добавить или удалить данные из адреса в памяти.

На эти вопросы уже с лихвой ответили.

-----
Всем привет, я вернулся





Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 09 декабря 2005 09:03
· Личное сообщение · #8

Замечательная статья (на ангельском) про написание лоадеров:
"Cracking with loaders" (981 kb)

intechhosting.com/~access/ARTeam/ar/cracking/tuts.html

Там и про лодырь-отладчик объясняют.



Ранг: 15.1 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 декабря 2005 10:00 · Поправил: iddqd
· Личное сообщение · #9

1.
function IsRunning( sName : string ) : boolean;
var
han : THandle;
ProcStruct : PROCESSENTRY32;
sID : string;
begin
Result := false;
han := CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 );
if han = 0 then
exit;
ProcStruct.dwSize := sizeof( PROCESSENTRY32 );
if Process32First( han, ProcStruct ) then
begin
repeat
sID := ExtractFileName( ProcStruct.szExeFile );
if uppercase( copy( sId, 1, length( sName ) ) ) = uppercase( sName ) then
begin
Result := true;
Break;
end;
until not Process32Next( han, ProcStruct );
end;
CloseHandle( han );
end;





Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 09 декабря 2005 12:12
· Личное сообщение · #10

iddqd
Забыл только добавить что для ProcStruct : PROCESSENTRY32; нужно: uses TLHelp32; ;)

-----
Don_t hate the cracker - hate the code.





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 09 декабря 2005 21:52
· Личное сообщение · #11

TOG
Сам линк на статью intechhosting.com/~access/ARTeam/tutorials/file_info/download1.php?file=Cracking_with_Loaders_Theory_General_Approach_and_a_Framework_v12_by_Shub-Nigurrath_ThunderPwr.rar

-----
Computer Security Laboratory



 eXeL@B —› Основной форум —› Помогите написать загрузчик на Делфи
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати