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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2013, 19:22   #1
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
Вопрос Стереть параметры запуска после запуска

Привет всем. Сразу к делу. Есть у меня своя программа. И есть некоторая сторонняя программа, которая имеет несколько возможных параметров запуска. Так вот я запускаю эту стороннюю программу через shellexecute и передаю туда нужные параметры запуска.
На самом деле эти параметры запуска "секретные", там пароли, коды и всё такое, которые посторонние люди знать не должны, но люди пользуясь сторонним софтом эти параметры выдирают. Можноли после запуска программы их стереть, как будто я запускал программу без каких-либо параметров запуска?
Каждый день узнаю новое...

Последний раз редактировалось Anton911; 09.04.2013 в 19:31.
Anton911 вне форума Ответить с цитированием
Старый 09.04.2013, 20:02   #2
stalker1995s
Gamedeveloper
Форумчанин
 
Аватар для stalker1995s
 
Регистрация: 11.07.2012
Сообщений: 149
По умолчанию

Я думаю, в обработке данных, после того как ты принял данные, и их обработал (Запуск) там же, и удалить их, как вы думаете ?. А вообще, хорошо бы кодец приема данных увидеть.
stalker1995s вне форума Ответить с цитированием
Старый 09.04.2013, 20:30   #3
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Я запускаю из свей программы чужую программу с параметрами запуска, например:
Код:
ShellExecute(0,'Open', PWideChar(ExtractFilePath(ParamStr(0)) + 'EnProg.exe'), PWideChar('-pass=3345ffghh2 -conf'), nil, SW_HIDE);
Проблема в том, что я темже Process Explorer'ом смогу посмотреть что за параметры. Мне нужно както сделать чтобы нельзя было узнать эти параметры запуска...
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 09.04.2013, 20:47   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну так зашифруйте их, а перед запуском расшифровывайте.
s-andriano вне форума Ответить с цитированием
Старый 09.04.2013, 21:32   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Из режима пользователя их можно прочитать. А вот изменить - нет. Хотя хз, я сильно не углублялся в это.

Почитайте про MadCodeHook там есть такая возможность.
Человек_Борща вне форума Ответить с цитированием
Старый 12.04.2013, 08:20   #6
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Короче говоря нашел где в памяти хранятся параметры запуска. Вот там: Pointer(Kernel32+$85004). Не суть. Я решил инжектить память, чтобы изменить нужные параметры запуска на Фэйковские. Так вот, какие есть хорошие функции записи в память кроме WriteProcessMemory, т.к. на программе стоит защита от WriteProcessMemory.
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 12.04.2013, 09:18   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

хроме неё больше никаких. Попробуй снять защиту VirtualProtect'ом(функция системы).
Человек_Борща вне форума Ответить с цитированием
Старый 12.04.2013, 18:20   #8
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Разобрался. На самом деле WriteProcessMemory работал, просто я OpenProcess исполнял с доступом к чтению, а не PROCESS_ALL_ACCESS.
Теперь секретные параметры прячутся и ProcessExplorer не может их спалить.
Кому интересно вот код:
Код:
memoffset = $85004; // смещение указателя на адрес где параметры от kernel32.dll

procedure DetectCode;
  var
    wBuff: Array[0..350] of Char;
    sBuff,tBuff:String;
    point_addr, kernelBase:DWORD;
    wHandle, ProcessID, pHandle, BytesCount: cardinal;
    i:Integer;
begin
 Form1.Console.Clear;
 pHandle := 0;
 wHandle := 0;
 kernelBase := GetModuleHandle(PWideChar('Kernel32.dll'));
 ShellExecute(0,'Open', PWideChar(ExtractFilePath(ParamStr(0)) + 'proga.exe'),
                PWideChar(GetParam), nil, SW_SHOWNORMAL);
 while wHandle = 0 do wHandle := IsProgRun;
 if wHandle <> 0 then
  begin
   GetWindowThreadProcessId(wHandle, @ProcessID);
   pHandle := OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID);
   if not ReadProcessMemory(pHandle, Pointer(kernelBase + memoffset), @point_addr, sizeof(point_addr), BytesCount) then
   Form1.Console.Lines.Add('Не могу получить адресс указателя на смещение');
   {}
   sBuff := wBuff;
   FillChar(wBuff, SizeOf(wBuff), #0);
   tBuff := Copy(sBuff, 1, Pos('-password=', sBuff) - 1);
   Delete(sBuff, 1, Pos('-password=', sBuff) - 1);
   if Pos(' ', sBuff) <> 0 then
    begin
     Delete(sBuff,1, Pos(' ', sBuff));
     tBuff := tBuff + sBuff;
    end;
   for i := 0 to Length(tBuff) - 1 do
    begin
     wBuff[i] := tBuff[i+1];
    end;
   if not WriteProcessMemory(pHandle, Pointer(point_addr), @wBuff, sizeof(wBuff), BytesCount) then
    Form1.Console.Lines.Add('Не могу внедриться в программу');
 end;
end;
P.S. А на 64-битках этот код нормально будет работать?
Каждый день узнаю новое...

Последний раз редактировалось Anton911; 12.04.2013 в 19:11.
Anton911 вне форума Ответить с цитированием
Старый 12.04.2013, 19:08   #9
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
memoffset = $85004; // смещение указателя адреса где параметры от kernel32.dll
Предполагаю, что оно даже на другой версии винды не будет работать.
Somebody вне форума Ответить с цитированием
Старый 13.04.2013, 03:07   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Теперь секретные параметры прячутся и ProcessExplorer не может их спалить.
а и не надо.
Я просто хук на оболочку поставлю и ещё до запуска все выясню =) Е ещё можно в зародыше все это выгребать(ближе к ядерным функциям системы).

Цитата:
P.S. А на 64-битках этот код нормально будет работать?
После первого же серьезного апдейта системы оно работать(ну или как сказали выше) - не будет, молчу уже от 64-битах.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параметры запуска Excel 4Brod9ga Microsoft Office Excel 6 24.09.2011 20:17
Параметры запуска приложения lmiol Помощь студентам 0 04.05.2010 22:10
Параметры запуска приложения Zeraim Свободное общение 2 26.01.2010 20:20
параметры запуска TaTT DoGG Общие вопросы .NET 5 19.03.2009 16:19
Параметры запуска проги GAGARIN-NEW Общие вопросы Delphi 7 18.10.2007 23:10