Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];

Вниз

Получить путь и имя процесса   Найти похожие ветки 

 
Cj ©   (2007-12-26 10:36) [0]

САБЖ. Сделал прогу (экспериментальная), которая скывает свой путь, не исползуя хакерские приемы.
Пытаюсь теперь узнать путь и имя проги,а Process Explorer, PHunter, и ДЗ показывают не-то, что надо.
Вот задумался, а если я вирус такой подцеплю, как тогда путь/ имя к нему узнать?
Ссылка вот http://webfile.ru/1656755

посмотрите. Ручаюсь -это не вирус.
Подскажите как сделать САБЖ.
Сильно не пинайте, если где неправ.
Спасибо заранее.
И скажите мне если узнаете, путь к проге.


 
DVM ©   (2007-12-26 10:42) [1]


> Ручаюсь -это не вирус.

Ты бы исходником свои заверения подкрепил.


 
Cj ©   (2007-12-26 11:00) [2]


> > Ручаюсь -это не вирус.Ты бы исходником свои заверения
> подкрепил.

вот этого я и боюсь: если до меня такого не делали, то как только выложу - сразу такие проги(вири) полезут.

из жизни
Один раз стоило показать экспериментальный код (там про проводник(не вирь))в институте, как сразу вири самопальные полезли. Я то знал, как их удалять, но хотелось в морду надавать всем у кого я флэхи брал, тк на ВСЕХ были самопалки.


Вот поэтому исходники я не хочу вылаживать до тех пор, пока не найду/найдут способ узнать путь процесса(даже кстати Каспер не определяет).

Я не заставляю тебя запускать его, даже при максимальной выкрутке защиты твоего Антивируса. Но если вири такие полезут?

И еще, за такое меня могуть засадить, как тех двоих.


 
slow!alfamoon!com   (2007-12-26 11:22) [3]

Че, переписываешь в PEBе? А что, идея занятная, кстати. Но найти в нужном EPROCESSе имя труда не составит.


 
Cj ©   (2007-12-26 11:37) [4]


> slow!alfamoon!com   (26.12.07 11:22) [3]
> Че, переписываешь в PEBе? А что, идея занятная, кстати.
> Но найти в нужном EPROCESSе имя труда не составит.


Заинтересовался?
Нет, PEB я даже не задеваю.
Но насчет EPROCESS (может, это я быстро)- запускаю pHunter(ms-rem) и ставлю только по EPROCESS - и показывает, то-же не то.
Но может это я все-таки не так делаю, попробуй ты поищи.
И заметь - я все операции провожу со СВОИМ процессом, никаких драйверов и dll(если думаешь, что руткит).


 
Rouse_ ©   (2007-12-26 15:45) [5]

Он мувит себя в корень диска с именем Char($7F), и запускает с параметрами свою копию указывая в параметрах путь, откуда был запущен оригинал, после чего прибивает себя.
Новый процесс, зная из параметров командной строки путь, возвращает копию себя на место. После чего он читает адрес в котором содержится путь к текущему модулю примерно вот таким кодом:
program Project1;

{$APPTYPE CONSOLE}

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 покажет эту гадость :)


 
Cj ©   (2007-12-26 16:28) [6]


>  а не из PEB, таким образом ничто не скрывается и даже банальный
> CreateToolhelp32Snapshot покажет эту гадость :)


Ну попробуй.
Покажи код, который показывает.
Интересно, как это у Slow не показалось, а у тебя показывает.

Toolhelp показывает только X:\[], а на самом деле файл там-же(откуда запускал)


 
Cj ©   (2007-12-26 16:31) [7]


> Rouse_ ©   (26.12.07 15:45) [5]


Молодец, про действия догадался.
Только он еще текущую директорию сменяет на X:\ чтобы не узнали в какой он папке


 
Rouse_ ©   (2007-12-26 17:44) [8]


> Молодец, про действия догадался.

Ты знаешь я не бабка-гадалка, а программист и твой код читается достаточно легко в дизассемблере. Так что ни о каких догадках речи не идет...

> Toolhelp показывает только X:\[], а на самом деле файл там-
> же

У меня он показывает там где находится сейчас реально исполняемый файл, а не то откуда он запускался.
Если хочешь увидеть кто его толкнул первым, запусти аудит и будет тебе счастье.
Тож мне - технологию придумал :)

Вот тебе утилитка которая показывает все твои запущенные творчества:
http://webfile.ru/1657256


 
Cj ©   (2007-12-26 18:01) [9]


> Вот тебе утилитка которая показывает все твои запущенные
> творчества:http://webfile.ru/1657256


ща посмотрю...


 
Cj ©   (2007-12-26 18:07) [10]


> Вот тебе утилитка которая показывает все твои запущенные
> творчества: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


 
Cj ©   (2007-12-26 18:09) [11]


> Вот смотрите что она говорит.


затупил я, вот ссылка http://webfile.ru/1657288


 
Rouse_ ©   (2007-12-26 18:17) [12]

Все верно говорит, именно по этому пути у тебя запущен исполняемый файл :) Посмотри под отладчиком :)


 
Cj ©   (2007-12-26 18:22) [13]

да это понятно, но а файла в корне диска нету же


 
Rouse_ ©   (2007-12-26 18:27) [14]

В корне нету, потомучто ты перетолкнул его в другую папку через MoveFileA, что позволяет только NTFS. Я же еще раз говорю - включи аудит и тебя все на блюдечке покажут...


 
Cj ©   (2007-12-26 18:35) [15]


> Rouse_ ©   (26.12.07 18:27) [14]
> В корне нету, потомучто ты перетолкнул его в другую папку
> через MoveFileA, что позволяет только NTFS. Я же еще раз
> говорю - включи аудит и тебя все на блюдечке покажут...


Я понял вас.
я это все знаю. Просто мне надо получить реальный путь к EXE.
Будет например сидеть юзер и вирь такой запустится, он посмотрит- типа на диске C , посмотрит, а его там нет, завершит процесс, а файл на компе остается. Не всякому же охото хранить на компе вредную прогу.
Вот и бъесь над этой задачей.

ДЗ кстати тоже самое показывает.


 
Rouse_ ©   (2007-12-26 22:22) [16]

Я понял о чем ты говоришь, да, с такой постановкой именно то, что ты спросил простым способом решить не получиться, по крайней мере обычными методами. С завязкой PEB-а на BaseAnsi(Unicode)CommandLine я сам удивился, судя по моим данны под 2000 такого случиться не должно. Значит ошибся.
Но сам понимаешь, даже обычный файл - всегда угроза для пользователя :)
Кстати можешь ребятам показать код, бо он уже не секретен :)


 
Riply ©   (2007-12-26 22:57) [17]

> [16] Rouse_ ©   (26.12.07 22:22)
> Кстати можешь ребятам показать код, бо он уже не секретен :)

А может не стоит ?
Кто может сам написать - пользоваться не будет,
а вот кто не может - не знаю :)


 
Rouse_ ©   (2007-12-27 00:55) [18]


> Riply ©   (26.12.07 22:57) [17]
> А может не стоит ?

Хорошо, добавлю ИМХО к моему предыдущему посту :)


 
Cj ©   (2007-12-27 02:56) [19]

Хорошо, домой вернусь код выложу


 
Cj ©   (2007-12-27 10:38) [20]

Вернулся вот код, но предупреждаю может получится как в 2.

Данный код может использоваться только в целях обучения.
Автор не гарантирует работоспобность этого кода на компьютере с системами не Windows XP и вообще на чем угодно.
Особенно не гарантируется совместимость с звуковыми платами, принтерами, сканерами, холодильниками и другими устройствами которые код не использует непосредственно.
Больше автор ничего не гарантирует.
Автор не отвечает за испорченные в результате использования этой программы данные, компьютеры, локальные, глобальные компьютерные сети, пище-продукты и все что теоретически может испортиться.
Если вы используете эту код для противозаконной деятельности, вся ответственность ложиться на вас.


program hp1;

uses
 Forms,
 Windows,
 Unit1 in "Unit1.pas" {Form1};

{$R *.res}

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.


 
slow!alfamoon!com   (2007-12-27 11:19) [21]

2 Cj

я только предположил.. проверять было лень


 
Cj ©   (2007-12-27 13:58) [22]


> slow!alfamoon!com   (27.12.07 11:19) [21]
> 2 Cjя только предположил.. проверять было лень


да ладно,с кем не бывает


 
MetalFan ©   (2007-12-27 18:31) [23]

а для чего Read(Write)ProcessMemory для своего процесса???


 
Cj ©   (2007-12-28 08:44) [24]


> MetalFan ©   (27.12.07 18:31) [23]
> а для чего Read(Write)ProcessMemory для своего процесса?
> ??

да это я наскоряк


 
slow!alfamoon!com   (2007-12-28 12:07) [25]

ну точнее я тоже экспериментировал с прятанием пути к процессу :) Но немного иначе, примерно так как я тебе написал.


 
Cj ©   (2007-12-29 16:48) [26]

> Но немного иначе, примерно так как я тебе написал.


где ?


 
MetalFan ©   (2007-12-29 21:34) [27]

у меня кстати прога падает сразу после запуска... после "зачистки" пути до исп.файла.
д2006


 
Cj ©   (2007-12-30 08:54) [28]


> MetalFan ©   (29.12.07 21:34) [27]
> у меня кстати прога падает сразу после запуска... после
> "зачистки" пути до исп.файла.д2006


компиль на Д7


 
slow!alfamoon!com   (2007-12-30 13:02) [29]

slow!alfamoon!com   (26.12.07 11:22) [3]

Че, переписываешь в PEBе? А что, идея занятная, кстати. Но найти в нужном EPROCESSе имя труда не составит.


 
Cj ©   (2007-12-31 18:08) [30]


> slow!alfamoon!com   (30.12.07 13:02) [29]
> slow!alfamoon!com   (26.12.07 11:22) [3]Че, переписываешь
> в PEBе? А что, идея занятная, кстати. Но найти в нужном
> EPROCESSе имя труда не составит.


ага понял



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.008 c
2-1222019809
Сергей
2008-09-21 21:56
2008.11.02
Алгорит записей в БД накладных...


2-1222246913
pathfinder
2008-09-24 13:01
2008.11.02
Массив объектов как параметр


2-1222322038
Kbl4AH
2008-09-25 09:53
2008.11.02
Вопрос по cxGrid


15-1220620461
Плохиш
2008-09-05 17:14
2008.11.02
Поздравляю всех с началом нового учебного года!


2-1222425226
webpauk
2008-09-26 14:33
2008.11.02
как получить максимальное значение?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский