Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переименование файла 
:(
    Опции темы
Kirgston
Дата 24.2.2009, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Всем доброго времени суток! Вот столкнулся с задачей. Задача довольно интересная =) Задача вот такая... есть ехе файл. Его надо запустить. Но всё не так просто =) надо либо запустить и сразу переименовать его в скажем ... да в любое расширение, либо допустим есть notepad.txt (нет это ехе, просто я в нем поменял расширение) и его надо запустить как ехешник. Дело в том что RenameFile, ShellExecute, RenameFile не подходит =). Для тех кто не понял как бы... постараюсь ещё проще ... скажем есть notepad.exe его надо запустить, и сразу после этого переименовать в notepad.db или notepad.txt . Дело в том что простым РенеймФайл я не могу изменить разрешение т.к. процесс запущен.  smile 
PM MAIL   Вверх
MetalFan
Дата 24.2.2009, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



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


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Kirgston
Дата 24.2.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Ну по крайней мере это интересно потому что как это сделать я так и не нашел ))) ну хорошо... а например сделать так... есть скажем переименованый notepad.txt (с расширения ехе он превратился в txt) я его могу запустить как ехе файл? Без переименования? 
PM MAIL   Вверх
MetalFan
Дата 24.2.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



можешь. а что мешает?

Это сообщение отредактировал(а) MetalFan - 24.2.2009, 21:11


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Kirgston
Дата 24.2.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



А как? =) если скажем я буду текстовый файл запускать как ехе... то откроется окно блокнота с НЕХ кодом на сколько я помню =) а как сделать чтобы открылся просто сам блокнот?
PM MAIL   Вверх
Riply
Дата 24.2.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 3
Всего: 32



Цитата(Kirgston @  24.2.2009,  20:35 Найти цитируемый пост)
Для тех кто не понял как бы... постараюсь ещё проще ... скажем есть notepad.exe его надо запустить, и сразу после этого переименовать в notepad.db или notepad.txt 


Это реализуемо, но я полностью согласна с MetalFan
что "неясно для достижения какой цели это нужно", кроме как скрыть от пользователя, что файл исполняемый.
Но тогда всатет другой вопрос: "а зачем это надо скрывать ?"
PM MAIL   Вверх
Kirgston
Дата 24.2.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Ну как вам сказать... не бойтесь я троян и т.д. не пишу =) всё это будет запускать сам пользователь. Просто не хочется чтобы посторонние программы лезли туда )))) поверьте такие есть и они делают мою жизнь не очень приятной. Это всего лишь один из методов самозащиты программы.
PM MAIL   Вверх
Christoph
Дата 24.2.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



А можешь показать код проги? или кинь проект? хочу глянуть как это может быть такое, что другие процессы вмешивались бы в твой


--------------------
user posted image
PM MAIL ICQ   Вверх
Kirgston
Дата 24.2.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



очень просто =) простой пример =) игры =) а для игр что есть? Правильно - читы =)
PM MAIL   Вверх
Christoph
Дата 24.2.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



А Чит это новый процесс? И это получается ты написал прогу свою, и чужие процессы пытаются что то изменить в твоей проге? Что то в этом сомневаюсь


--------------------
user posted image
PM MAIL ICQ   Вверх
Kirgston
Дата 24.2.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Можете не сомниватся =) да я не буду врать я могу сделать троян и т.д. но мне не до этого повторюсь я не делаю вредоносных программ я лишь защищаю свою... Ну ребята если не хотите говорить то скажите по каким словам это хоть искать?
PM MAIL   Вверх
Akella
Дата 24.2.2009, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Не знаю, может скажу глупость, попробуй через createprocess
PM MAIL   Вверх
Christoph
Дата 25.2.2009, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



Цитата(Kirgston @  24.2.2009,  23:36 Найти цитируемый пост)
Можете не сомниватся =) да я не буду врать я могу сделать троян и т.д. но мне не до этого повторюсь я не делаю вредоносных программ я лишь защищаю свою... Ну ребята если не хотите говорить то скажите по каким словам это хоть искать?

Какой троян, ты в той теме не правильно используешь if, зачем тебе беспокоится о защите? а Каспер чем занимается?!


--------------------
user posted image
PM MAIL ICQ   Вверх
Kirgston
Дата 25.2.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Ребята... давайте лучше так... да я знаю что я не мастак в программировании. В соседней теме как мне говорили так я и сделал... я знаю что там что то не так... но почему то мне просто никто не хочет сказать как правильно... все говорят ты не прав а сказать как надо никто не хочет. Да и ладно... это другая тема и другой разговор.

По этой теме я очень благодарен Akella, т.к. он единственный подсказал "куда копать" .


Christoph, ты когда скажем вирь напишешь каспер его видеть будет? Нет. А чем чит касперу начнет не нравится?
PM MAIL   Вверх
Kirgston
Дата 25.2.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



var
pi : TProcessInformation;
si : TStartupInfo;
begin
CreateProcess(PChar(GetCurrentDir+'\fail.dat'),nil,nil,nil,false,NORMAL_PRIORITY_CLASS,nil,PChar(GetCurrentDir),si,pi);
end;

неа :( что то не хочет выкидывает ошибку :( ребята подскажите кто знает... smile 
PM MAIL   Вверх
Akella
Дата 25.2.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Код

function TfmMain.ExecAndWait(const FileName, Params: ShortString; ArcDir:string;
                               const WinState: Word): boolean; export;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: ShortString;
begin
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
  CmdLine := '"' + Filename + '" ' + Params;
  FillChar(StartInfo, SizeOf(StartInfo), #0);
  with StartInfo do
  begin
    cb := SizeOf(StartInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    wShowWindow := WinState;
  end;






  Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
                          CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
                          PChar(ArcDir),StartInfo,ProcInfo);




  { Ожидаем завершения приложения }

  if Result then
  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    { Free the Handles }
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;


PM MAIL   Вверх
Kirgston
Дата 25.2.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Спасибо большое сейчас буду изучать код!  smile 
PM MAIL   Вверх
Kirgston
Дата 25.2.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Извините пожалуйста... я наверно совсем тупой :(

Входящим параметром должно идти что? Посмотрите пожалуйста 
Код


procedure TForm1.Button1Click(Sender: TObject);
begin
ExecAndWait('NOTEPAD.exe',SW_ShowNormal,GetCurrentDir,{тут уже я не знаю что писать :( });
end;

function TForm1.ExecAndWait(const FileName, Params: ShortString; ArcDir: string;
  const WinState: Word): boolean;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: ShortString;
begin
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
  CmdLine := 'NOTEPAD.dat' + Filename + 'NOTEPAD.dat ' + Params;
  FillChar(StartInfo, SizeOf(StartInfo), #0);
  with StartInfo do
  begin
    cb := SizeOf(StartInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    wShowWindow := WinState;
  end;
  Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
                          CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
                          PChar(ArcDir),StartInfo,ProcInfo);
  { Ожидаем завершения приложения }
  if Result then
  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    { Free the Handles }
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;


Вот так должно идти? Просто там 2 имени файла ... помогите пожалуйста  smile 
PM MAIL   Вверх
Snowy
Дата 25.2.2009, 16:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Kirgston @  24.2.2009,  20:35 Найти цитируемый пост)
Дело в том что простым РенеймФайл я не могу изменить разрешение т.к. процесс запущен.
Это с чего ты так решил?
Можешь. Я разрешаю...
PM MAIL   Вверх
Kirgston
Дата 25.2.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Извините но я уже пытался ))))) просто так я бы не сказал )))) когда процесс выгружен я могу переименовать, но когда запущен у меня нету к нему доступа.
PM MAIL   Вверх
Snowy
Дата 25.2.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Kirgston @  25.2.2009,  16:53 Найти цитируемый пост)
когда процесс выгружен я могу переименовать, но когда запущен у меня нету к нему доступа.
У тебя 95-я винда? Или линукс?

Код
var
  si:  TStartupInfo;
  pi:  TProcessInformation;
begin
  FillChar(si, SizeOf(si), 0);
  FillChar(pi, SizeOf(pi), 0);
  with si do begin
    cb:=SizeOf(si); dwFlags := 1; wShowWindow := SW_SHOW;
  end;
  CreateProcess('C:\notepad.txt', nil, nil, nil, false, 0, nil, nil, si, pi);
  CloseHandle(pi.hProcess); CloseHandle(pi.hThread);
end;

PM MAIL   Вверх
Kirgston
Дата 25.2.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Пардон.. но Windows XP x64 SP2 
приложение связано с интернетом ... может по этому... 

Спасибо щас буду пробовать

Добавлено через 9 минут и 19 секунд
Вухуууууухухухху!!!!!!  smile  СПАСИБО ВАМ БОЛЬШОЕ! 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1029 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.