Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
1-37045
Jiura
2002-12-28 19:01
2003.01.13
QReport


1-37154
Programist21
2002-12-28 09:59
2003.01.13
Сравнение картинок


1-37155
NewGuest
2002-12-29 17:20
2003.01.13
Как добавить один символ в конец строки RichEdit


6-37252
_ol_
2002-11-06 17:11
2003.01.13
Всего лишь написать telnet...


14-37356
romychk
2002-12-24 12:08
2003.01.13
Ресурсы в файле