
| Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
![]() |
||
перехват WinApi GetLocalTime
|
||
| Философия, технологии, алгоритмы! |
![]() |
|
|
Опции темы |
|
|
#1 | ||
|
Форумец
Сообщений: 58
Регистрация: 12.03.2007
|
перехват WinApi GetLocalTime
Пытался повторить по примеру, взятому у MS_REM
http://www.wasm.ru/article.php?article=apihook_1 пример AdwareBox Но во первых в Делфи GetLocalTime объявлена как процедура а не функция, во вторых мне не особо понятно смысл значений Цитата:
Цитата:
Если кому не тяжело, посоветуйте как нужно исправить код. спс. |
||
|
|
|
|
#2 |
|
Out There
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47
|
А в чем, собсно, разница?
Это машкоды. Зачем тебе такие извращения? В нете масса примеров, написанных без подобных извратов. Они гораздо понятнее, чем эти мегакульхацкерные выпендрёжи. Напиши, что тебе не понятно в них. Кстати, ты случаем, не вирус пишешь? ) Если нет, то тебе, скорее всего, вовсе не нужны такие изощренные методы внедрения. |
|
|
|
|
#3 |
|
Пессимист
Сообщений: 618
Регистрация: 22.07.2004
|
+1
Этот кусок кода не надо править - его надо выкинуть. Здесь в начала кода перехватываемой функции создается конструкция: Код:
push <новый адрес обработчика> ret Такой подход был хорош под DOS и под Win16. В современных системах с вытесняющей многозадачностью в момент между установкой первого и второго байта "патча" функция может понадобится другому процессу, который в лучшем случае благополучно рухнет, а в худшем - вынесет тебе половину системы. Единственно вменяемое решение - править таблицу импорта модуля. Ищи, например, книгу: Джеффри РИХТЕР. "Создание эффективных WIN32-приложений" (по моему оно так называется, под рукой сейчас нет). |
|
|
|
|
#7 | |
|
Out There
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47
|
Цитата:
С какого перепугу? Этак каждое приложение юзермоды, подключившее kernel32.dll (а это практически любое виндовое приложение), получит реальную возможность завалить систему. |
|
|
|
|
|
#8 |
|
Форумец
Сообщений: 340
Регистрация: 25.07.2002
|
Сори, я конечно может быть и нуб в этом вопросе но всегда считал что Kernel32.dll это свалка винапишных вызовов и менеджер памяти. Грузится и юзается ядром в том числе. И предполагается что с GDT и TSS можно работать только из 0 кольца. Киньте в меня ссылкой где можно почитать в инете или скачать микрософтовский DDK.
|
|
|
|
|
#9 | |
|
Out There
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47
|
Цитата:
microsoft.com, а еще на торрентах есть. |
|
|
|
|
|
#10 | ||
|
Форумец
Сообщений: 340
Регистрация: 25.07.2002
|
Погодте... Например список экспортируемых функций kernel32.dll ... бла-бла-бла... HeapAlloc... бла-бла-бла...
Цитата:
Цитата:
![]() Там он за деньги... пошел искать в торентах... |
||
|
|
|
|
#11 | |
|
Пессимист
Сообщений: 618
Регистрация: 22.07.2004
|
Угу. Но если мне не изменяет память, то WriteProcessMemory пишет в область памяти, которая общая отмаппированая, там только seDebugPrivilege (которое по умолчанию у администраторов есть) и нужно. Так что треды других процессов, использующих dll, тоже придется тормозить. Что, в общем-то нетривиально и делает эту затею еще более извратной.
UPD: Память таки изменяет. Посморел таки в msdn - там хендл процесса нужен, правится его память. Значит надо возится с ToolHelpAPI, что тоже довольно через одно место. Цитата:
И ты тоже Рихтера почитай - "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" |
|
|
|
|
|
#12 | |
|
Out There
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47
|
Эээ. Ну и чо? Это что-то доказывает?
Цитата:
Пардон, а какое этот поток будет отношение к длл? Он сам по себе, длл - сама по себе. Он так и делает, насколько я понял. |
|
|
|
|
|
#13 | ||
|
Форумец
Сообщений: 340
Регистрация: 25.07.2002
|
Цитата:
dll грузится и инициализируется не только не в адресном пространстве процесса а и вообще на физически другой машине ![]() Цитата:
Ладно пошел курить DDK и Рихтера на закуску, вернусь расскажу ![]() Если DPL сегмента кода kernel32 будет ниже CPL процесса прилетит GPF эээ не понял как это сам по себе? кусок кода dll шарашит и он сам по себе? |
||
|
|
|
|
#14 |
|
Out There
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47
|
MadFish, короче, длл работает в контексте потока, ее подключившего. Независимо от "вероисповедания и цвета кожи" длл. Если у потока есть нужные привилегии - все будет пучком, не будет - прога обломается. Длл - всего лишь абстрактный код.
|
|
|
|
|
#15 |
|
Форумец
Сообщений: 58
Регистрация: 12.03.2007
|
Да нет, просто некоторые программы не просто имеют триальный период а просто не работают помле определенной даты, тут даже не сторлько халява - к примеру на работе - работа с клиентом БД на редактирование возможно только в 2008 году, а теперь его можно только просматривать (проверяется системное время). Можно конешно время в виндову переводить - но это неудобно.
Вот и хотлось получить возможность "утанавливать" время отдельно для выбранного приложения. |
|
|
|
|
#16 | |
|
Форумец
Сообщений: 58
Регистрация: 12.03.2007
|
Цитата:
)
|
|
|
|
|
|
#17 |
|
Out There
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47
|
Используй тэг code:
Код:
#include <stdio.h>
int nod(int a, int b){
if (a<2 || b<2) return 1;
while(a!=b)
if (a>b) a-=b; else b-=a;
return a;
}
void main(int argc, char* argv[]){
printf("%d",nod(atoi(argv[1]),atoi(argv[2])));
}
|
|
|
|
|
#18 |
|
Пессимист
Сообщений: 618
Регистрация: 22.07.2004
|
Dream Worker, мракобесие это все...
Никто не мешает процессу запустить новый тред, пока ты будешь колупаться между CreateToolhelp32Snapshot и установкой джампа. Проще тогда совсем забить на проверки и сразу писать в память, результат будет тот же. Ну и хакерские танцы с хуками, рандомайзами, мутексами ради внедрения длл... Послушай умных дядек - почитай Рихтера про модификацию секции импорта - там даже рабочие исходники класса для перехвата API есть =) |
|
|
|
|
#19 |
|
Форумец
Сообщений: 58
Регистрация: 12.03.2007
|
Угу, спасибо. Надо и Си потихонечку начинать изучать...
|
|
|