Эльфпак : Эльфы : Форум |
Страница 125 из 128: « 1 ... 121 122 123 124 [125] 126 127 128 » |
IDOL1234: |
06.12.11, 19:42 |
Есть идея. Прошу больно не пинать Исправьте, если я где-то ошибся. 1) В библиотеке функций содержатся ссылки на стандартные функции телефона. 2) Если какая-либо функция (ещё) не найдена в прошивке, в библиотеке её нет. 3) При заливке lib.vkp вместо адреса отсутствующей функции будет то, что там было до установки патча, с большой вероятностью - FFF...F. 4) Если эльф использует функцию, адрес которой в библиотеке отсутствует, то происходит попытка обращения к недопустимому диапазону памяти или выполнение "мусора". 5) А что, если создать функцию, которая выводит сообщение об ошибке с указанным номером отсутствующей функи (найти по адресу возврата?), и вписать её адрес в либу вместо всех не портированных/отсутствующих у данного телефона функций? Это решило бы проблему вопросов "почему у меня ребууут?!!". Подозреваю, что, если бы всё было так просто, и без меня бы давно что-то подобное сделали, но всё же... [ Редактировано IDOL1234 в 6.12.11 19:45 ] |
Pavlus: |
07.12.11, 19:50 |
IDOL1234, если не ошибаюсь, то аргументы ф-ии толкаются в стек, перед вызовом, а во время исполнения ф-ии - поднимаются оттуда. Если аргументы положить в стек, а потом не забрать оттуда, то поведение программы будет не предсказуемо ввиду того, что в стэке находятся данные отличные от ожидаемых. Поднять правильное количество аргументов мы не можем так-как не знаем их количество (для каждой подпрограммы оно ведь разное может быть). |
IDOL1234: |
07.12.11, 19:56 |
Да. Согласен. Предвидел Но идея в том, чтобы получить номер функции. В общем-то, никто не мешает для каждой функи сделать заглушку, которая выбрасывает "лишие" аргументы и кладёт в стек нужное кол-во ноликов вместо возвращаемого значения. Но больно уж много их делать надо. Да и ненадёжно это - мало кто проверяет результат выполнения обыденных функций -> будут ошибки из-за некорректных значений Ещё раз повторю: идея в том, чтобы телефон завис с номером отсутствующей функции на экране (завис не от ошибки функции, а намеренно, чтобы не потерять изображение при ребуте). [ Редактировано IDOL1234 в 7.12.11 19:59 ] |
Pavlus: |
07.12.11, 20:01 |
IDOL1234, я не сильно в работе ЭП разбираюсь, но можно слегка модифицировать его так, чтоб он запускал ельф-хелпер, который бы патчил кеш либы и подставлял вместо неопределённых функций свои. |
IDOL1234: |
07.12.11, 20:11 |
А я только идею высказал.. Потому как понятия не имею, получится ли так сделать. Я не умею работать с памятью напрямую, ибо даже примерно не знаю, где там что находится. Сам я не нашёл, а на вопросы никто не ответил.. |
Pavlus: |
07.12.11, 20:20 |
IDOL1234, Код: typedef struct EP_DATA { LIST* UserDataList;//unused LIST* gKbdHookList; PROCESS HPID; LIST* UIHookList; LIST* OseHookList;//unused LIST* DBExtList; FILESUBROUTINE* elf_ext_m; LIST* DLLList; LIST* UIPageHook_Before; DB_EXT* (*CreateDbExt)(void); IMAGEID IconSmall; IMAGEID IconBig; void** LibraryCache; // Не перемещать!!!!! void* LibraryDLL; wchar_t LastKey; LIST* UIPageHook_After; }EP_DATA; Из ЭП запустить ельф с параметром-указателем на существующую структуру EP_DATA (не знаю как другим способом её получить), в которой пробежаться по LibraryDLL и заменить FFFFFFFF или 00000000 на аналоги соответствующих функций. |
IDOL1234: |
07.12.11, 20:45 |
А если там мусор будет? |
Pavlus: |
07.12.11, 20:51 |
А это уже твои проблеммы - там мусора по-умолчанию не должно быть. |
IDOL1234: |
07.12.11, 20:56 |
Как это - не должно быть? О_о Ладно, поиск отсутствующих функций - это уже детали.. Буду думать и копать исходники. |
IDOL1234: |
13.12.11, 23:48 |
Да, ещё вопрос. На вики лежит гора функций, которых нет в либе. Среди них - несколько для 3D. Их не добавляют, так-как ещё не все необходимые для работы функции найдены, или по какой-то другой неведомой причине? |
Страница 125 из 128: « 1 ... 121 122 123 124 [125] 126 127 128 » |
URL этой темы: https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=2468&start=1240 © 2005-2018 supertrubka.org |