· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Где записать байт что бы считать его из другой проги! Не используя HD!

<< . 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Сен 12, 2004 18:46:13

"с известной долей удачи можно сохранить байтик в стеке"
Было смешно :))))))


Дата: Сен 12, 2004 21:12:23

Ну я был сонный, и при том "слегка после вчерашнего".. :)


Дата: Сен 12, 2004 23:34:46 · Поправил: leo

Я тоже не в трезвом уме, но "до кучи" могу предложить еще один экзотический вариант: регистры FPU\MMX или XMM. Думаю, вероятность сохранения данных в этих регистрах достаточно высокая, если конечно параллельно не рулит какой-нибудь winamp и т.п.


Дата: Сен 13, 2004 00:09:05

Попутно: А что применить, чтобы инфа хранилась, даже при отрубе процесса передатчика, до включения процесса-приёмника. С вероятностью ~=1 ??? Так же не использую HD (и FD :-) )


Дата: Сен 13, 2004 02:07:12 · Поправил: Oleg_SK

PavPS
Как уже говорил Dr.Golova, для этого можно использовать реестр. Еще процесс-передатчик может создать дочерний процесс и использовать его как связного для передачи инфы процессу-приемнику. Также, если не ошибаюсь, для этой цели можно использовать драйвер, который устанавливает процесс-передатчик.


Дата: Сен 13, 2004 02:41:49

Почти то чё надо, но реестр - всё таки HD.Про другой процесс-передатчик - это по сути то же, что и не выключать свой процесс передатчик, а драйвер, который устанавливает процесс-передатчик это про то, что в драйвере хранится та самая временная инфа. В этом случае тоже что и в первом. Да и драйвер - то не для всех аккаунтов.

Прошу прощения за неточность!, надо было бы сразу сказать, что вопрос касался таких объектов ОС, которые не уничтожаются, даже при закрытии процессов, имеющих references не него. Может и на какое-то место памяти можно вляпать кусок инфы, притом в то место, где это не будет затёрто. Ну короче, низняю.
???


Дата: Сен 13, 2004 08:05:49

PavPS
Может быть, я скажу не в тему, но может Вам подойдет обычный буфер обмена?


Дата: Сен 13, 2004 11:26:52 · Поправил: leo

Насколько я понял задачу, нужно в существующую прогу вставить минимальный код, который анализировал бы некий признак, установленный другим вспомогательным процессом. В идеале это mov\cmp\je. Условие неиспользования HD в данном случае это, наверное, не прихоть, а требование минимизации кода. Поэтому реестр, MMF, Winsock, буфер обмена, GetExitCode и т.п. относятся к этой же категории и прежде чем их обсуждать нужно рассмотреть более простые варианты. А простые варианты получаются когда вспомогательная прога вызывает ломаемую, а не наоборот. В этом случае можно использовать:
1) WriteProcessMemory - достаточно определить нулевой байтик в .data и записать туда не ноль. Здесь вопрос только в том как найти безопасный байтик, чтоб ничего не подвесить до вызова проверки. Наверное самое простое использовать завершающий ноль какой-нить строковой константы. Хотя для надежности лучше не 0, а наоборот занулять какой-то символ строки - так безопаснее.
2) Сообщение MainWindow - послать невероятное сообщение основному окну и отловить его в message loop. В качестве невероятного можно например использовать какой-нить WM_MOUSEMOVE с полным набором флагов fwKeys. Скорее всего это самый простой и надежный способ.
3) Регистры FPU\MMX - вещь на первый взгляд менее надежная, но может работать, если параллельно не рулит процесс интенсивно их использующий. Конечно, проверочку надо делать не на 0, а на какое-нить "магическое" сочетание млаших dword пары регистров mm6-mm7.

PS: Рассматривая "сложные" варианты можно незаметно сделать глупость - вызов вспомогательной проги и чтение байтика может оказаться сложнее, чем непосредственный вызов GetVolumeInformation или GetInformationByHandle в ломаемой проге.


Дата: Сен 13, 2004 13:44:22

„И всетки интересно, как сохранить денить байтик?!“
если бы обе проги можно было произвольно изменять, то вот вариант:
1. Первая прога внедряет DLL в Explorer и завершается.
2. DLL как-то проявляет себя в системе, например, создает mutex.
3. Вторая прога вызывает OpenMutex.


Дата: Сен 13, 2004 22:03:13 · Поправил: leo

Идея с ММХ оказалась бредовой. Проверил в 9x - после CreateProcess во всех mm круглые нули. Все таки ось их инициализирует или использует для инициализации памяти процесса.

vinnie_pooh
Ты это всерьез или издеваешся ?


Дата: Сен 13, 2004 22:28:22

Подумал что можно читать серийник CPU. Вродеб просто, cpuid и минимум кода. Пополучил 0000 0F29 030B 7040 0000 0000!!!!!!!! Язык не поворачивается его серийником называть! Что это вообще такое?По мне так больше смахивает на серию партии.??? Кто проверял есть возможность нарваться на такойже?


Дата: Сен 13, 2004 22:48:18

DimaS
"читать серийник CPU"
Если почитаешь мануал IA-32 Intel Architecture, то поймешь что "серийник" дело бесполезное, т.к. PSN (processor serial number) поддерживается только в Pentium 3. В более ранних моделях его не было, а в P4 его убрали "по просьбе трудящихся". По CPUID можно только определить модель процессора и связанные с ней характеристики, а это вещь отнюдь не уникальная.


Дата: Сен 13, 2004 23:10:58

Спасибо понЯл, уже забыли...


Дата: Сен 14, 2004 10:45:14 · Поправил: vinnie_pooh

Все, что я писАл в своем посте про внедрение - отстой.
Осмелюсь предложить еще более отстойный и ламерский способ, но неожиданный:

1. Даем ломаемой проге расширение .dll и помещаем ее в какую-нибудь вложенную директорию.
2. В первой проге делаем необходимые проверки и если все в порядке, запускаем вторую (которая .dll) на выполнение способом
	push	SW_SHOWNORMAL
	push	offset our_exe_with_dll_ext_name
	call	WinExec

В принципе, расширение можно выбрать любое, хоть .bmp, но dll и exe похожи в hex-редакторе. Если все это действительно не расчитано на програмеров, то вряд ли юзер догадается менять расширение на exe.

PS. Это, конечно, не отвечает на вопрос Где записать байт, но решает проблему (если я ее правильно понял).


Дата: Сен 14, 2004 16:52:03

2vinnie_pooh
Да в принципе решает. Я обдумываю вариант.. Тока вот новые файлы найти простым поиском можно, а это неприятно!
Или замаскировать овцу в стаде, exe->dll->dll->dll и аще всяких там..
А может можно его какнить подпортить? Чтоб перед использованием востанавливать. Тока вот как обратно баги вешать?????

<< . 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.095