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

Вниз

Как узнать адресс строки в чужом приложении?   Найти похожие ветки 

 
serd_hhc   (2002-10-27 09:42) [0]

Адрес должен быть integer


 
Anatoly Podgoretsky   (2002-10-27 09:46) [1]

Ее адрес 9834034


 
serd_hhc   (2002-10-27 09:48) [2]

А если строка "FJGHDFHJDFHJDF", и находиться в edite?


 
serd_hhc   (2002-10-27 10:31) [3]

НУ всё таки...


 
Alex4444444444   (2002-10-27 10:59) [4]

Address v chuzhom prilozhenii ne imeet smysla. U kazhdoj programmy svoe addressnoe prostranstvo.


 
KSergey   (2002-10-27 13:41) [5]

Как верно указал > Alex4444444444 (27.10.02 10:59) даже если этот адрес удасться узнать, то никакого толку от этого не будет. Т.к. это адрес в адресном протранстве другого приложения, в контексте другого приложения это будет просто цифра. Что толку?
Может лучше объяснить что же надо на самом деле? Для чего этот адрес необходимо узнать? Или это самоцель?


 
Anatoly Podgoretsky   (2002-10-27 13:51) [6]

И одна цифра от другой не отличается, так что адрес 9834034 вполне подходит для этой роли


 
serd_hhc   (2002-11-22 06:02) [7]

Вот это то мне и нужно! Это число! Это то, о чём я спрашиваю, и что я ищу! Так как найти это ЧИСЛО?


 
serd_hhc   (2002-11-22 06:04) [8]

Так вот это мне и надо! Это чёртово число! Так скажите же , как его найти?


 
Fantasist   (2002-11-22 07:50) [9]


> Так вот это мне и надо! Это чёртово число! Так скажите же
> , как его найти?

Внимательно читаешь символы с начала строки во втором постинге сверху. (Anatoly Podgoretsky © (27.10.02 09:46)) В этом постинге всего одна буква "с". Доходишь до нее, пропускаешь один символ после нее (пробел) и после этого записываешь на бумажку каждый символ который ты читаешь. Всего их будет 7. Далее открываешь Delphi и объявляешь в нем переменную типа Integer вот так:

var
EtoChertovoChislo:Integer;

дальше после begin записываешь имя этой переменной, оператор присваивания (":=") вот так:

begin
EtoChertovoChislo:=

и после символа равно ("=") записываешь цифры которые ты записал на бумажку в том же порядке в котором они там записанны. Как только ты скомпилируешь программу, то считай, что ты EtoChertovoChislo нашел.




 
paul_shmakov   (2002-11-22 12:48) [10]

я пример уже два раза постил :) ищет значение размера DWORD в чужом процессе.

//
// Поиск значения типа DWORD в указанном процессе
// paul_shmakov@mail.ru
//
program search;

{$APPTYPE CONSOLE}

uses Windows, SysUtils;

var
ProcessID: DWord;
ProcessHandle: THandle;
Mbi: TMemoryBasicInformation;
Addr: DWord;
Value: DWord;
I: Cardinal;
Buf: PChar;
BytesRead: DWord;
begin
if ParamCount < 2 then
begin
WriteLn("Usage: search.exe processid value");
Exit;
end;

ProcessID := StrToInt(ParamStr(1));
WriteLn("Process id: " + IntToStr(ProcessID));

Value := StrToInt(ParamStr(2));
WriteLn("Value to search: " + IntToStr(Value));

//
// Открываем процесс
//
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ or
PROCESS_VM_OPERATION, false, ProcessID);

if ProcessHandle <> 0 then
try
Addr := 0;

//
// Перечисляем все регионы виртуальной памяти процесса
//
while VirtualQueryEx(ProcessHandle, Pointer(Addr), Mbi, SizeOf(Mbi)) <> 0 do
begin
// Uncomment чтобы увидеть список регионов, найденых в адресном пространстве
// WriteLn("region: " + IntToHex(Integer(Mbi.BaseAddress), 8) +
// " size: " + IntToStr(Mbi.RegionSize));

//
// Если региону выделена память, и регион не является "сторожевым" (как вершина стека),
// то читаем этот регион
//
if (Mbi.State = MEM_COMMIT) and not ((Mbi.Protect and PAGE_GUARD) = PAGE_GUARD) then
begin
//
// Это демонстрационная программа, поэтому здесь выделяется буфер под весь регион.
// Регион может быть достаточно большим, поэтому лучше читать его блоками для экономии
// памяти. Но здесь для простоты алгоритма вся оптимизация похерена.
//
GetMem(Buf, Mbi.RegionSize);
try
//
// Читаем весь регион в выделенный буфер
//
if ReadProcessMemory(ProcessHandle, Mbi.BaseAddress, Buf,
Mbi.RegionSize, BytesRead) then
begin
//
// Ищем значение типа DWORD в буфере
//
for I := 0 to BytesRead - SizeOf(Value) do
begin
if PDWord(@Buf[I])^ = Value then
// Найдено, выводим
WriteLn("Value " + IntToStr(Value) + " found at " +
IntToHex(Integer(Cardinal(Mbi.BaseAddress) + I), 8));
end;
end
else
WriteLn("Failed to read process memory " + IntToStr(GetLastError));

finally
FreeMem(Buf);
end;
end;

// Вычисляем адрес следуюшего региона
Addr := Addr + Mbi.RegionSize;
end;

finally
CloseHandle(ProcessHandle);
end
else
WriteLn("Failed to open process");
end.


а вот программа, в которой ведем поиск для примера:

program someprog;

{$APPTYPE CONSOLE}

uses SysUtils;

var
SomeValue: Integer;
begin
SomeValue := 12345;
WriteLn("One variable of this program has a value " + IntToStr(SomeValue));
WriteLn("Press any key to exit");
ReadLn;
end.


вот только зачем это нужно?


 
Polevi   (2002-11-22 14:07) [11]

SetTimer(EditVChugomPrilogenii.Handle,1,1000,EtoChertovoChislo) он хочет видимо


 
Serd_hhc   (2002-11-22 22:08) [12]

Объясню, зачем,

Ищется строка в чужом едите, по таймеру (от адреса строки) [в ЕДИТе - бинарный код программы] зпускается этот код. Вот зачем нужен адрес именно строки в чужом приложении!


 
Morfein   (2002-11-24 20:28) [13]

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


 
AlexandrRya   (2002-11-24 22:27) [14]

Пояснение: Serg_hhc вроде хочет воспользоваться уязвимостью системы в очереди сообщений. Т.к. система (NT,2k,XP)не проверяет, от кого пришло сообщение (пр 9x и Me я вообще не говорю, т.к. там не понятия привилегий). А, послав WM_TIMER окну с более высокими
привилегиями мы можем заставить выполнить любой код с чужими привилегиями. Оригинал лежал здесь: http://security.tombom.co.uk/shatter.html


 
mumu   (2002-11-25 07:41) [15]

>AlexandrRya (24.11.02 22:27)
>Пояснение: Serg_hhc вроде хочет воспользоваться уязвимостью >системы в очереди сообщений...

реализация на C http://serbot.narod.ru/



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

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

Наверх





Память: 0.49 MB
Время: 0.008 c
14-37313
Хмырь
2002-12-23 14:38
2003.01.13
Что такое winsock и с чем его едят?


7-37420
Luke
2002-11-01 01:53
2003.01.13
О модемах и АТС


3-36955
Mr.Hunter
2002-12-18 09:10
2003.01.13
Быть InterBase или не быть, вот в чем вопрос!


4-37452
Славик@Майл2к.ру
2002-11-24 07:38
2003.01.13
Перехват сообщения об ошибке и ...........


3-36947
Dbrf
2002-12-17 13:23
2003.01.13
Удаление строк подчинённой таблицы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский