-
САБЖ. Сделал прогу (экспериментальная), которая скывает свой путь, не исползуя хакерские приемы. Пытаюсь теперь узнать путь и имя проги,а Process Explorer, PHunter, и ДЗ показывают не-то, что надо. Вот задумался, а если я вирус такой подцеплю, как тогда путь/ имя к нему узнать? Ссылка вот http://webfile.ru/1656755посмотрите. Ручаюсь -это не вирус. Подскажите как сделать САБЖ. Сильно не пинайте, если где неправ. Спасибо заранее. И скажите мне если узнаете, путь к проге.
-
> Ручаюсь -это не вирус.
Ты бы исходником свои заверения подкрепил.
-
> > Ручаюсь -это не вирус.Ты бы исходником свои заверения > подкрепил.
вот этого я и боюсь: если до меня такого не делали, то как только выложу - сразу такие проги(вири) полезут.
из жизни Один раз стоило показать экспериментальный код (там про проводник(не вирь))в институте, как сразу вири самопальные полезли. Я то знал, как их удалять, но хотелось в морду надавать всем у кого я флэхи брал, тк на ВСЕХ были самопалки.
Вот поэтому исходники я не хочу вылаживать до тех пор, пока не найду/найдут способ узнать путь процесса(даже кстати Каспер не определяет).
Я не заставляю тебя запускать его, даже при максимальной выкрутке защиты твоего Антивируса. Но если вири такие полезут?
И еще, за такое меня могуть засадить, как тех двоих.
-
Че, переписываешь в PEBе? А что, идея занятная, кстати. Но найти в нужном EPROCESSе имя труда не составит.
-
> slow!alfamoon!com (26.12.07 11:22) [3] > Че, переписываешь в PEBе? А что, идея занятная, кстати. > Но найти в нужном EPROCESSе имя труда не составит.
Заинтересовался? Нет, PEB я даже не задеваю. Но насчет EPROCESS (может, это я быстро)- запускаю pHunter(ms-rem) и ставлю только по EPROCESS - и показывает, то-же не то. Но может это я все-таки не так делаю, попробуй ты поищи. И заметь - я все операции провожу со СВОИМ процессом, никаких драйверов и dll(если думаешь, что руткит).
-
Он мувит себя в корень диска с именем Char($7F), и запускает с параметрами свою копию указывая в параметрах путь, откуда был запущен оригинал, после чего прибивает себя. Новый процесс, зная из параметров командной строки путь, возвращает копию себя на место. После чего он читает адрес в котором содержится путь к текущему модулю примерно вот таким кодом: program Project1;
uses
Windows;
var
P: PByte;
Data, BytesRead: DWORD;
S: String;
begin
P := GetProcAddress(GetModuleHandle(kernel32), 'GetCommandLineA');
if P <> nil then
begin
Inc(P);
BytesRead := 0;
ReadProcessMemory(GetCurrentProcess, P, @Data, 4, BytesRead);
ReadProcessMemory(GetCurrentProcess, Pointer(Data), @Data, 4, BytesRead);
S := PChar(Data);
writeln(S);
readln;
end;
end. после чего трет нулями юникодный и ансишный варианты. Проблема в том что GetCommandLine возвращает данные из BaseAnsi(Unicode)CommandLine, а не из PEB, таким образом ничто не скрывается и даже банальный CreateToolhelp32Snapshot покажет эту гадость :)
-
> а не из PEB, таким образом ничто не скрывается и даже банальный > CreateToolhelp32Snapshot покажет эту гадость :)
Ну попробуй. Покажи код, который показывает. Интересно, как это у Slow не показалось, а у тебя показывает.
Toolhelp показывает только X:\[], а на самом деле файл там-же(откуда запускал)
-
> Rouse_ © (26.12.07 15:45) [5]
Молодец, про действия догадался. Только он еще текущую директорию сменяет на X:\ чтобы не узнали в какой он папке
-
> Молодец, про действия догадался.
Ты знаешь я не бабка-гадалка, а программист и твой код читается достаточно легко в дизассемблере. Так что ни о каких догадках речи не идет... > Toolhelp показывает только X:\[], а на самом деле файл там- > же
У меня он показывает там где находится сейчас реально исполняемый файл, а не то откуда он запускался. Если хочешь увидеть кто его толкнул первым, запусти аудит и будет тебе счастье. Тож мне - технологию придумал :) Вот тебе утилитка которая показывает все твои запущенные творчества: http://webfile.ru/1657256
-
-
> Вот тебе утилитка которая показывает все твои запущенные > творчества:http://webfile.ru/1657256
Вот смотрите что она говорит. Какая у вас система(версия и.т.д.) у меня: Имя ОС Microsoft Windows XP Professional Версия 5.1.2600 Service Pack 2 Сборка 2600 Изготовитель ОС Microsoft Corporation Имя системы ASUS Изготовитель ASUSTeK Computer Inc. Модель F3JP Тип Компьютер на базе X86 Процессор x86 Family 6 Model 15 Stepping 2 GenuineIntel ~1662 МГц Процессор x86 Family 6 Model 15 Stepping 2 GenuineIntel ~1662 МГц Версия BIOS American Megatrends Inc. 208, 23.05.2007 Версия SMBIOS 2.4 Папка Windows D:\MUSTDIE Системная папка D:\MUSTDIE\system32 Устройство загрузки \Device\HarddiskVolume1 Язык Россия Аппаратно-зависимый уровень (HAL) Версия = "5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)" Имя пользователя ASUS\Cj Часовой пояс Владивосток (зима) Полный объем физической памяти 2 048,00 МБ Доступно физической памяти 1,45 ГБ Всего виртуальной памяти 2,00 ГБ Доступно виртуальной памяти 1,96 ГБ Файл подкачки 3,54 ГБ Файл подкачки C:\pagefile.sys
-
-
Все верно говорит, именно по этому пути у тебя запущен исполняемый файл :) Посмотри под отладчиком :)
-
да это понятно, но а файла в корне диска нету же
-
В корне нету, потомучто ты перетолкнул его в другую папку через MoveFileA, что позволяет только NTFS. Я же еще раз говорю - включи аудит и тебя все на блюдечке покажут...
-
> Rouse_ © (26.12.07 18:27) [14] > В корне нету, потомучто ты перетолкнул его в другую папку > через MoveFileA, что позволяет только NTFS. Я же еще раз > говорю - включи аудит и тебя все на блюдечке покажут...
Я понял вас. я это все знаю. Просто мне надо получить реальный путь к EXE. Будет например сидеть юзер и вирь такой запустится, он посмотрит- типа на диске C , посмотрит, а его там нет, завершит процесс, а файл на компе остается. Не всякому же охото хранить на компе вредную прогу. Вот и бъесь над этой задачей.
ДЗ кстати тоже самое показывает.
-
Я понял о чем ты говоришь, да, с такой постановкой именно то, что ты спросил простым способом решить не получиться, по крайней мере обычными методами. С завязкой PEB-а на BaseAnsi(Unicode)CommandLine я сам удивился, судя по моим данны под 2000 такого случиться не должно. Значит ошибся. Но сам понимаешь, даже обычный файл - всегда угроза для пользователя :) Кстати можешь ребятам показать код, бо он уже не секретен :)
-
> [16] Rouse_ © (26.12.07 22:22) > Кстати можешь ребятам показать код, бо он уже не секретен :)
А может не стоит ? Кто может сам написать - пользоваться не будет, а вот кто не может - не знаю :)
-
> Riply © (26.12.07 22:57) [17] > А может не стоит ?
Хорошо, добавлю ИМХО к моему предыдущему посту :)
-
Хорошо, домой вернусь код выложу
-
Вернулся вот код, но предупреждаю может получится как в 2. Данный код может использоваться только в целях обучения. Автор не гарантирует работоспобность этого кода на компьютере с системами не Windows XP и вообще на чем угодно. Особенно не гарантируется совместимость с звуковыми платами, принтерами, сканерами, холодильниками и другими устройствами которые код не использует непосредственно. Больше автор ничего не гарантирует. Автор не отвечает за испорченные в результате использования этой программы данные, компьютеры, локальные, глобальные компьютерные сети, пище-продукты и все что теоретически может испортиться. Если вы используете эту код для противозаконной деятельности, вся ответственность ложиться на вас.
program hp1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' ;
var
j:cardinal;
b:byte;
procadr: pointer;
adr,r:cardinal;
begin
if paramstr(1)=''then
begin
movefile(pchar(application.exename),pchar(application.exename[1]+':\'+#127));
winexec(pchar(application.exename[1]+':\'+#127+' \"'+application.exename+'\"'),sw_show);
exitprocess(1);
end else
begin movefile(pchar(application.exename),pchar(paramstr(1)));
end;
procadr := GetProcAddress(getmodulehandle('kernel32.dll'), 'GetCommandLineA');
readprocessmemory(getcurrentprocess, ptr(cardinal(procadr) + 1), @adr, 4, r);
readprocessmemory(getcurrentprocess, ptr(adr), @adr, 4, r);
b:=0;
for j:=0 to 255 do
WriteProcessMemory(getcurrentprocess, ptr(adr + j), @b, 1, r);
procadr := GetProcAddress(getmodulehandle('kernel32.dll'), 'GetCommandLineW');
readprocessmemory(getcurrentprocess, ptr(cardinal(procadr) + 1), @adr, 4, r);
readprocessmemory(getcurrentprocess, ptr(adr), @adr, 4, r);
b:=0;
for j:=0 to 255 do
WriteProcessMemory(getcurrentprocess, ptr(adr + j), @b, 1, r);
windows.SetCurrentDirectory('C:\');
Application.Initialize;
Application.Title:='';
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
-
2 Cj
я только предположил.. проверять было лень
-
> slow!alfamoon!com (27.12.07 11:19) [21] > 2 Cjя только предположил.. проверять было лень
да ладно,с кем не бывает
-
а для чего Read(Write)ProcessMemory для своего процесса???
-
> MetalFan © (27.12.07 18:31) [23] > а для чего Read(Write)ProcessMemory для своего процесса? > ??
да это я наскоряк
-
ну точнее я тоже экспериментировал с прятанием пути к процессу :) Но немного иначе, примерно так как я тебе написал.
-
> Но немного иначе, примерно так как я тебе написал.
где ?
-
у меня кстати прога падает сразу после запуска... после "зачистки" пути до исп.файла. д2006
-
> MetalFan © (29.12.07 21:34) [27] > у меня кстати прога падает сразу после запуска... после > "зачистки" пути до исп.файла.д2006
компиль на Д7
-
slow!alfamoon!com (26.12.07 11:22) [3]
Че, переписываешь в PEBе? А что, идея занятная, кстати. Но найти в нужном EPROCESSе имя труда не составит.
-
> slow!alfamoon!com (30.12.07 13:02) [29] > slow!alfamoon!com (26.12.07 11:22) [3]Че, переписываешь > в PEBе? А что, идея занятная, кстати. Но найти в нужном > EPROCESSе имя труда не составит.
ага понял
|