Здравствуйте, Vovik1982, Вы писали:
V>Описал методику "как это сделать". V>vovik1982.livejournal.com
V>Если у кого будут дополнения — буду рад. Надо дорабатывать чтобы было совсем универсально...
Все, что описано ниже относится к Windows CE 6 (ядро 5.2)
Вы имели в виду "Все, что описано ниже относится к Windows Mobile 6 (ядро Windows CE 5.2)"?
... << RSDN@Home 1.2.0 alpha rev. 784>>
Re[2]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Vovik1982, Вы писали:
V>Описал методику "как это сделать". V>vovik1982.livejournal.com
V>Если у кого будут дополнения — буду рад. Надо дорабатывать чтобы было совсем универсально...
Несколько комментов.
Память в CE делится на 2 части — область ядра и пользовательская область. Чтобы получить возможность работать с областью ядра (верхние 2 гигабайта), используется SetKMode и разыменование указателей. Read/WriteProcessMemory здесь не работает, так как процессы находятся в пользовательской области (кроме nk.exe).
Пользовательская область в свою очередь делится на 2 части — слоты процессов и high memory area (HMA). К HMA имеют доступ все. К слоту процесса по умолчанию имеют доступ только потоки, в нём же созданные. При попытке обратиться к слоту другого процесса путём простого разыменования указателя возникнет ошибка. Но можно "добавить" себе прав с помощью SetProcPermissions(0xFFFFFFFF), после чего можно обращаться к памяти любого процесса напрямую. Ну или использовать Read/WriteProcessMemory — это переносимее (будет работать и в CE6).
ToolHelp, действительно, имеет проблемы с памятью. Многие, кто его использовал (включая сам Микрософт), крепко обломались на этом. Проблема лечится использованием флага TH32CS_SNAPNOHEAPS — именно на снапшот куч обычно не хватает памяти, а как правило он и не нужен.
Информация о внутренних структурах ядра ищется в Platform Builder. Структуры для процессов и модулей называются Process и Module соответственно, описаны в kernel.h.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[2]: Методика установки хуков на API вызовы в Windows CE
Память на 2 части делится не только в CE
По поводу "не будет работать" — повторюсь — код приведенный там РАБОТАЕТ!!! Я его тестил на нескольких девайсах и на эмуляторе.
Про ToolHelp — спасибо, буду знать.
Process + Module в kernel.h я нашел. Только почему-то то, что я видел в памяти несколько отличалось от того, что описано в структурах... Не знаю почему((
Re[3]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Vovik1982, Вы писали:
V>Память на 2 части делится не только в CE V>По поводу "не будет работать" — повторюсь — код приведенный там РАБОТАЕТ!!! Я его тестил на нескольких девайсах и на эмуляторе.
Я этого и не отрицал. Я объяснил, как обращаться к нужному адресу в памяти, не используя метод тыка.
V>Process + Module в kernel.h я нашел. Только почему-то то, что я видел в памяти несколько отличалось от того, что описано в структурах... Не знаю почему((
По моему опыту совпадает, если смотреть в правильную версию заголовков. Например, между CE4.2 и CE5.0 есть отличия. Ты смотрел именно пятёрку?
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[2]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Vovik1982, Вы писали:
V>Кстати, Вы не против, если я запостю Ваши комменты туда к себе (естессно со ссылкой)... Соберу инфу — получится более полная статья
Конечно, без проблем.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[4]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Alexander Shargin, Вы писали:
AS>Здравствуйте, Vovik1982, Вы писали:
V>>Память на 2 части делится не только в CE V>>По поводу "не будет работать" — повторюсь — код приведенный там РАБОТАЕТ!!! Я его тестил на нескольких девайсах и на эмуляторе.
AS>Я этого и не отрицал. Я объяснил, как обращаться к нужному адресу в памяти, не используя метод тыка.
Сорри, понял Опять-таки СПАСИБО
V>>Process + Module в kernel.h я нашел. Только почему-то то, что я видел в памяти несколько отличалось от того, что описано в структурах... Не знаю почему((
AS>По моему опыту совпадает, если смотреть в правильную версию заголовков. Например, между CE4.2 и CE5.0 есть отличия. Ты смотрел именно пятёрку?
Да, я качал PlatformBuilder с MS. Поэтому и был удивлен несоответствию...
Re[4]: Методика установки хуков на API вызовы в Windows CE
AS>По моему опыту совпадает, если смотреть в правильную версию заголовков. Например, между CE4.2 и CE5.0 есть отличия. Ты смотрел именно пятёрку?
Насколько я понимаю, теоретически эти хидеры могут быть модифицированы при билде Windows Mobile? Т.е. ТЕОРЕТИЧЕСКИ они могут и не совпадать, поскольку при билде Windows Mobile могут быть внесены какие-то кастомизации?
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[5]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Left2, Вы писали:
AS>>По моему опыту совпадает, если смотреть в правильную версию заголовков. Например, между CE4.2 и CE5.0 есть отличия. Ты смотрел именно пятёрку?
L>Насколько я понимаю, теоретически эти хидеры могут быть модифицированы при билде Windows Mobile? Т.е. ТЕОРЕТИЧЕСКИ они могут и не совпадать, поскольку при билде Windows Mobile могут быть внесены какие-то кастомизации?
Нет. Это — работа загрузчика (loader). Он не кастомайзится. Я проверял на 5 девайсах различных изготовителей. Поменяться может на следующей версии винды.
Re[5]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Left2, Вы писали:
L>Насколько я понимаю, теоретически эти хидеры могут быть модифицированы при билде Windows Mobile? Т.е. ТЕОРЕТИЧЕСКИ они могут и не совпадать, поскольку при билде Windows Mobile могут быть внесены какие-то кастомизации?
Да, теоретически это вполне возможно. Плюс могут быть отличия между CE5.0 и, к примеру, CE5.2. Но надо смотреть конкретно. Я не смотрел, как обстоят дела с этими структурами в Windows Mobile 6.0. Надо будет глянуть на досуге.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[6]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Alexander Shargin, Вы писали:
AS>Здравствуйте, Left2, Вы писали:
L>>Насколько я понимаю, теоретически эти хидеры могут быть модифицированы при билде Windows Mobile? Т.е. ТЕОРЕТИЧЕСКИ они могут и не совпадать, поскольку при билде Windows Mobile могут быть внесены какие-то кастомизации?
AS>Да, теоретически это вполне возможно. Плюс могут быть отличия между CE5.0 и, к примеру, CE5.2. Но надо смотреть конкретно. Я не смотрел, как обстоят дела с этими структурами в Windows Mobile 6.0. Надо будет глянуть на досуге.
Я отлаживал это на Windows mobile 6.0 (там как раз ядро 5.2). Можно попробовать, будет ли этот код работать на пятерке...
Re[2]: Методика установки хуков на API вызовы в Windows CE
От:
Аноним
Дата:
06.12.07 09:33
Оценка:
Здравствуйте, Alexander Shargin, Вы писали:
AS>Память в CE делится на 2 части — область ядра и пользовательская область. Чтобы получить возможность работать с областью ядра (верхние 2 гигабайта), используется SetKMode
В Windows Mobile 6.0 (автор именно в нем работает) не поддерживается SetKMode. Она осталась только в Embeded CE 6.0, но и там названа obsolete.
Re[3]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Аноним, Вы писали:
А>В Windows Mobile 6.0 (автор именно в нем работает) не поддерживается SetKMode. Она осталась только в Embeded CE 6.0, но и там названа obsolete.
В Windows Mobile 6.0 эта функция прекрасно работает, и если посмотреть исходный код автора, он её активно использует. Её отменили начиная с Windows CE 6.0, тогда как все существующие на сегодняшний день версии Windows Mobile основаны на Windows CE не старше 5.x.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[4]: Методика установки хуков на API вызовы в Windows CE
Здравствуйте, Alexander Shargin, Вы писали:
AS>Здравствуйте, Аноним, Вы писали:
А>>В Windows Mobile 6.0 (автор именно в нем работает) не поддерживается SetKMode. Она осталась только в Embeded CE 6.0, но и там названа obsolete.
AS>В Windows Mobile 6.0 эта функция прекрасно работает, и если посмотреть исходный код автора, он её активно использует. Её отменили начиная с Windows CE 6.0, тогда как все существующие на сегодняшний день версии Windows Mobile основаны на Windows CE не старше 5.x.
Сорри, запутала меня Микрософт нелогичными номерами версий.