motofan logo
22 страниц V < 1 2 3 4 > »         
> 

Ковырнём Прошивку ..., Hex Workshop 4.0, Hiew etc...

сообщение 8.8.2003, 7:31


Гость











Я думаю, что надо подождать прошивку от 450, врядли моторола что то сильное замутила. Очень похоже на ряд Simiensов A,C,S.. Железо, похоже, одно и тож. На счет RTС - похоже они гонят, на моем C350 часы идут при выключенном телефоне (а без батареи он и так не включится). Может они там частоту CPU подняли, может памяти добавили, но все это не принципиально!. Задача сейчас получить декриптовать SHX файл, что бы копнуть прошивку. Я пробую чейчас PST.dll посредством IDA4.20 раскусить. Добрался до PSTWriteData, копаюсь в нем...
Кстати PST.dll свободно подключается к программе, я даже детекчу телефон с ее помощью.

P.S. Надежда умирает последней. Если что, куплю c450.
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 8:20


Гость











Появилась еще одна мысль. После прочтения фака по заливке явы в 720. Правда для этого нужен и с350 и 720. Можно при выборе нового KJava файла в ПСТ сравнить ответ 720 и с350
(на с350 пишет что телефон либо не поддерживает яву либо она не включена)
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 9:48


Гость











Цитата
Задача сейчас получить декриптовать SHX файл, что бы копнуть прошивку. Я пробую чейчас PST.dll посредством IDA4.20 раскусить. Добрался до PSTWriteData, копаюсь в нем...


Jhon, а что по поводу моих выкладок??? :o Я же показал адреса в моём последнем топике: 0159D565 CALL (всё остальное: Loading Boot, Erase, ... , FLASH COMPLETED!!!). Используя TRW2k (или SoftIce). По поводу получить: смотри предыдущие страницы. Там линк на мою прогу, она выдёргивает...ещё раз даю расклады:
//------------------------------------------------------------------------------------------
1. SHX состоит из 4-х файлов !!!
2. Эти 4 - 'Motorola S-Records' файлы !!!
3. Моя прога дёргает эти 4 файла в *.BIN (учитывая формат !!!)
4. BIN'ы получаются такие же как и временные SMG файлы ПСТ.

>bpx 159d49a в TRW2000 (ставиш бряк)
>CTRL+N
>Жмёшь "Flash"
>выскакивает окно TRW (реакция на бряк)
>жмёшь F10 - пишет в StringGrid: Creating Image File (это и есть SMG)
>жмёшь F10 по адресу 159d4a5 - создаёт эти SMG!!!
>...
>далее мы попадаем на 159d565 CALL z..z, там идёт вызываются оставшиеся процедуры: загрузка bootloader, и т.д. Если нажать F10, то ПСТ их сделает все, в стринггрид'е будет надпись: FLASH COMPLETED !!! И вернёт управление TRW, и адрес будет следующий за 159d565, следовательно - надо заходить в 159d565 по F8 !!! И рыть ТАМ !!!!!!!

5. SMG и BIN - одно и тоже! Они закрипчены...
//------------------------------------------------------------------------------------------

Помогите достать IDA Pro 4.5 !!!!!!!!!!!!! У меня есть плагин для декомпилляции C под v4.5 - всяко удобочитаемость повысится...
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 10:09


Гость











Цитата
загрузить сам JAR в телефон не проблема


T-Troll, - Как? Поясни-ка пожалуйста. (Не MBE.exe - это факт !!!)

Цитата
Сейчас под игры там отдельная зона, загрузить в которую просто не дают.


Что за зона? Кинь линк на источник этой инфы. Довольно-таки интересно!

Цитата
сравнить ответ 720 и с350


Теоретически - возможно. А практически я пока немогу, т.к. 1) T720 у меня нет, 2) USB и COM blink.gif , 3) 2р. трасить ПСТ.
Пока 1 раз хочу до ума довести - снять крипт.

А вообще мне нравится, что народ подключается (Эх дубинушка, ухнем... и по (o) )
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 10:24


Гость











Lord-3X, я до BIN уже дошел. Ищу и смотрю как и где они расшифровываются.
А IDA 4.3 сам C понимает. Проблема в том что Motorola "запорола" таблицу импорта, во вторых при инициализации PCT.DLL рабочий кусок кода перекидывается c 0x10019000 в 0x10011000-0x10019000 при этом хитрым образом через 4 байта. Собственно я обработал PCT.DLL в IDA, потом добовлял в проект дампы реальных адресов, которые выдергивал своей софтиной после инициализации PST.DLL.

Вообще я смотрю MultiFlashFlex Tool V1.4
Распределение памяти (из того что в каталоге PST ):
0x10000000 len 0x25000 - PST.dll
0x012F0000 len 0x3B000 - PST_FP_Flash.dll
0x01180000 len 0x09000 - PST_FP_FlashDevApi.dll
0x01180000 len 0x23000 - UniBus_PRJ_Engine.dll

и все. Для всех этих DLL адреса стандартные. Хоть я их к своей проге подключу.

Так вот:
UPX0:10001790 ; Exported entry 60. PSTWriteData
UPX0:10001790
UPX0:10001790 public PSTWriteData
UPX0:10001790 PSTWriteData:
UPX0:10001790 sub esp, 8
UPX0:10001793 call sub_10013959 ; mov eax, 1001B2C0h
UPX0:10001793
UPX0:10001798 push eax
UPX0:10001799 lea ecx, [esp+4]
UPX0:1000179D call sub_10013510 ; -> 6C3E0F27h
UPX0:1000179D
UPX0:100017A2 mov eax, [esp+20h]
UPX0:100017A6 mov ecx, [esp+1Ch]
UPX0:100017AA mov edx, [esp+18h]
UPX0:100017AE push eax
UPX0:100017AF mov eax, [esp+18h]
UPX0:100017B3 push ecx
UPX0:100017B4 mov ecx, [esp+18h]
UPX0:100017B8 push edx
UPX0:100017B9 mov edx, [esp+18h]
UPX0:100017BD push eax
UPX0:100017BE push ecx
UPX0:100017BF push edx
UPX0:100017C0 call sub_1000CEA0 ; eax=659AD6BCh
UPX0:100017C0
UPX0:100017C5 mov ecx, eax
UPX0:100017C7 call SUB_WR2PH
UPX0:100017C7
UPX0:100017CC mov ecx, [esp+4]
UPX0:100017D0 mov edx, [esp+0]
UPX0:100017D4 mov [ecx+4], edx
UPX0:100017D7 add esp, 8
UPX0:100017DA retn
UPX0:100017DA
UPX0:100017DA ; ---------------------------------------------------------------------------

UPX0:1000C980 SUB_WR2PH proc near ; CODE XREF: UPX0:100017C7p
UPX0:1000C980
UPX0:1000C980 arg_0 = dword ptr 4
UPX0:1000C980 arg_4 = dword ptr 8
UPX0:1000C980 arg_8 = dword ptr 0Ch
UPX0:1000C980 arg_C = dword ptr 10h
UPX0:1000C980 arg_10 = dword ptr 14h
UPX0:1000C980 arg_14 = dword ptr 18h
UPX0:1000C980
UPX0:1000C980 call sub_10002BF0
UPX0:1000C980
UPX0:1000C985 call sub_10002DC0
UPX0:1000C985
UPX0:1000C98A test eax, eax
UPX0:1000C98C jnz short locret_1000C9B8
UPX0:1000C98C
UPX0:1000C98E mov eax, [esp+arg_14]
UPX0:1000C992 mov ecx, [esp+arg_10]
UPX0:1000C996 mov edx, [esp+arg_C]
UPX0:1000C99A push eax
UPX0:1000C99B mov eax, [esp+4+arg_8]
UPX0:1000C99F push ecx
UPX0:1000C9A0 mov ecx, [esp+8+arg_4]
UPX0:1000C9A4 push edx
UPX0:1000C9A5 mov edx, [esp+0Ch+arg_0]
UPX0:1000C9A9 push eax
UPX0:1000C9AA push ecx
UPX0:1000C9AB push edx
UPX0:1000C9AC call sub_10008530 ; eax = 671D3802h
UPX0:1000C9AC
UPX0:1000C9B1 mov ecx, eax
UPX0:1000C9B3 call sub_100086B0 ; <--- Вот тут то и вся фишка зарыта
UPX0:1000C9B3
UPX0:1000C9B8
UPX0:1000C9B8 locret_1000C9B8: ; CODE XREF: SUB_WR2PH+Cj
UPX0:1000C9B8 retn 18h
UPX0:1000C9B8
UPX0:1000C9B8 SUB_WR2PH endp



"Гребанные" моторольщики извратили все до нельзя. Идет манипуляция регистрами (вызов подпрограммы где в EAX грузится число/адрес) потом "колбасится" стек, потом:
UPX0:100086F8 mov ecx, [esp+1Ch+arg_14]
UPX0:100086FC mov edx, [eax]
UPX0:100086FE push ecx
UPX0:100086FF mov ecx, [esp+20h+arg_10]
UPX0:10008703 push ecx
UPX0:10008704 mov ecx, [esp+24h+arg_C]
UPX0:10008708 push ecx
UPX0:10008709 mov ecx, [esp+28h+arg_8]
UPX0:1000870D push ecx
UPX0:1000870E mov ecx, [esp+2Ch+arg_4]
UPX0:10008712 push ecx
UPX0:10008713 mov ecx, eax
UPX0:10008715 call dword ptr [edx+0Ch]

Так мне трассировать нечем, у меня шнурка нет, а вычислить адрес перехода - краша завернулась.
Если можешь, помоги.
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 10:31


Гость











SmasH,
Ты скажи где видел и у кого...
А то я уж такое много раз слышал....
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 10:50


Гость











SmasH, - спасибо за информацию... :)

Что я думаю (даже не думая кого-то обидеть (o) ):
1. В соседнем форуме ПРОШИВКИ бурно шли, идут и будут идти дискуссии по-поводу 74R. Есть много однострочных, ленивых и банальных постов, повторяющихся через каждые три страницы. Ссылок - нет !!!
2. В соседнем форуме ИГРЫ бурно шли, идут и будут идти дискуссии по-поводу JAVA. Ссылки - есть, только характер написанного напоминает что-то из оперы пудренья мозгов или попытки буржуев нажиться на чужом горе, либо одно из двух.
3. По поводу "ТАМ НАПИСАНО": на заборе тож написано, а там дрова. :D
4. Есть сайт GSM HOSTING, про который хорошо все знают. По моему опыту - там находится то, что порой с трудом находит ГУГЛЬ. На ГСМ хостинге тихо.
5. Я предпочитаю действовать, а не ждать.
6. Пока сам не увижу - не поверю! (Изходя из 1-го и 2-го)
7. Даже если и есть в 74R JAVA, то я опираюсь в своих трудах не на неё, а на одного красавчика, который из J70 Гейм Бой сделал... Если бы мог, то лично пожал бы ему руку.
8. Просто я очень люблю ASM, взлом и т.д. И мне даже просто будет интересно поменять слова в телефоне, н-р: 'Поиск сети ' на 'Ищу тебя' или что-то подобное.
9. Пишу здесь, потомучто хочу поделиться с народом. Какая мне разница: 1) буду я один с фитчёвым телефоном или ещё кто. Даже мож кто добрым словом вспомнит когда-нить. 2) Мож кто поможет. Ключ декрипта узнают все, т.к. я постоянно делаю выкладки проделанной работы. Исходники все выложу.
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 11:22


Гость











Цитата
UPX0:1000C9B1 mov ecx, eax

Цитата
UPX0:1000C9B3 call sub_100086B0 ; <--- Вот тут то и вся фишка зарыта


Стандартный прикол всяких упаковщиков. SafeDisk так чудит тоже.
Ты попробуй все файлы разжать (UPX енто)... На предыдущих страницах я писал как это сделать. А сафедиск, так вообще по EXE'шнику, как бешаный горный козёл по горам скачет. Пудрево мозгов, да и только. А как только OEP найдёшь, так всё на свои места встаёт, кроме таблиц ИМПОРТА, но не вслучае UPX !!! Всё прекрасно разжимается... ;)
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 11:35


Гость











Видел в продаже:
смотрю на ценнике написанно J2ME - не поверил... попросил посмотреть - и правда в основоном меню вывели пункт "Дополнительные", а там свойства-закачки.
посмотрел прошивку 74R
что самое интересное - цвет корпуса оригинальной поставки - синий

Наверное уже можно по сервис центрам пробежать насчет новой прошивки, на инет пока надежды мало.
В друзья
К началу страницы
+Ответить
T-Troll
сообщение 8.8.2003, 12:30


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.8.2003
Пользователь №: 400
Модель телефона: V300, V635, V3x

Рейтинг: 8.5



Lord-3X Отвечаю на оба вопроса.
Через MBE или нет - неважно. Важно, что через ems + немного обработать напильником в виде hex-editor.

Информация про зоны и вообще архитектуру платформы Нептун от самих Мотороллеров - моя контора их авторизованные девелоперы. Доки они обещали подогнать, но пока их у меня нет (хотя кое-что можно выяснить при _внимательном_ прочтении Guides на их девелоперском сайте)- иначе я был бы конкретнее в том, как и что. Можешь позадавать вопросы, постараюсь у них выяснить. Но, естетственно, про алгоритмы заливки и криптования они ничего не скажут.

Ты делаешь очень нужное дело по расшифровке прошивки, если получится - чует мое сердце изменения там будут минимальные.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 8.8.2003, 12:55


Гость











Групый вопрос: "А вы уверены, что инфа - зашифрована?" Может просто проц в мобиле какой-нить 12 (наример) битный вот о получится, чтобы привести всё это к читаемому виду надо ноликов добавить (4 шт - до 16-и довести). Мне кажется, что нечитаемость файлов должна быть связана с какими-то особенностями железа, хотя могу и ошибаться.
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 13:14


Гость











Smash а как насчет 75-й прошивки?
есть ложь, есть наглая ложь и есть статистика. Так вот,
тут http://stats2.gala.net/?si=3044&r=5&dt=20030701
она говорит о том, что существует
MOT-c350/G_09.04.75R MIB/2.0 0
В друзья
К началу страницы
+Ответить
MBG
сообщение 8.8.2003, 14:51


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 17.7.2003
Пользователь №: 281

Рейтинг: 0



Lord-3X

IDA PRO v4.5.0.762 (пять частей) (crack не требуется):

http://ttdown.com/SoftDown.asp?ID=20776
http://ttdown.com/SoftDown.asp?ID=20775
http://ttdown.com/SoftDown.asp?ID=20773
http://ttdown.com/SoftDown.asp?ID=20772
http://ttdown.com/SoftDown.asp?ID=20774

Общий объем примерно 11,5 Мб

Качать оттуда можно только FlashGet'ом.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 8.8.2003, 16:19


Гость











Если чем то поможет, есть бинарники считанные с напрямую с микрух памяти для V60 и V66
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 16:51


Гость











T-Troll, - доки бы не помешали.

Цитата
Но, естетственно, про алгоритмы заливки и криптования они ничего не скажут.


Пусть хотябы скажут есть ли вообще криптование или это ужо и есть код проца, хотя на всех телах прошивки удобоваримы, будь-то Samsung, Ericsson, Siemens и т.д. Я о том, что строки ASCII хотя бы встречаются и нули, а тут не крипт даже, больше похоже на сжатие. Хотя это может быть и динамическое криптование - предыдущим числом, например. <_<

MBG, - Большое спасибо, но я немогу их скачать! Fashget определяет из asp реальные имена файлов, коннектится, а потом БАЦ и ошибка, пауза 5 сек и т.д. Облом... А ты катанул их оттуда? Мож намылишь? Или выложишь куда? Край надо... unsure.gif
Добавлено:
Стоп ! Flashget пробился... Качаю, правда связь убитая "в хлам". Ещё раз спасибо MBG !!!
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 17:06


Гость











Цитата
Если чем то поможет, есть бинарники считанные с напрямую с микрух памяти для V60 и V66


А V60 и V66 шьются с помошью пст? Если да, то поможет, даже очень. Тока надо знать версию прошивки, чтоб мне оригинал скачать в SHX.

Кто встречался с V60 и V66?

В любом случае кинь линки или намыль. А я посмотрю чем это мне поможет...
В друзья
К началу страницы
+Ответить
Jhon
сообщение 8.8.2003, 17:19


Новичок
*

Группа: Пользователи
Сообщений: 8
Регистрация: 8.8.2003
Пользователь №: 409
Модель телефона: Nokia 3650

Рейтинг: 0



Кстати, там же, в статистике, помимо 75R есть MOT-c350/g_09.04.62i MIB/2.0 0
Здесь возникает вопрос в буковке "i". Может improved? Или как T720 и T720i?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 8.8.2003, 18:32


Гость











Jhon, - как дела продвигаются? Похоже ты прав насчёт PST.WriteData!!!Смотри чего я дальше нарыл.

Новые выкладки!!! Все из ENTRY, вызываемого по адресу 159d565 процедурой CALL:

;-------------------------------------------------------
15a21d7 call Loading Boot
15a2272 call Write "Erasing Language Only" & EraseProgress (лью ланг0011)
15a1456 call Kernel32.CreateFile (OPEN_EXISTING) - open SMG
15a14dd call Write "Flashing Code Group 4"
15a150d call FlashProgress - ВОТ !!! ЭТО МОЯ СЛЕДУЮЩАЯ ЦЕЛЬ !!!
15a1562 call Write "Code Group 4 Flashed"
15a2461 call Write "Verifying checksums" & VerifyingProgress
;---------------- cut ----------------------------------
159e5d1 call Write "Flash Completted !!!"
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 19:16


Гость











15a150d CALL 159ded0, шагаем туда:

;--------------------------------------------------------
159df6d call Kernel32.SetFilePointer - без коментариев !!!
159e209 call ReadFile (Буфер находится по адресу 16edbbc и имеет стандартный формат: 2 байта - длина, а дальше данные, т.е. по адресу 16edbbc+2)
159e239 call PST_FP_FLASHDEVAPI (адрес 15d2530)
;--------------------------------------------------------
Дальше поставил бряк: bpx 16edbbe RW - вот прогнал!!! Надо было на 16edbbc.
CTRL+N. TRW проявился при попытке обращения к данной ячейке памяти. И я уже был здесь:

15d1b9e rep movsd (копирование нашего буфера в другую переменную)
15d146f call PST!WriteData (адрес 10001790). Jhon - чуешь близость разгадки?

и понесло меня по F8 по разным CALL'ам после моего прогона с последним бряком, у меня пропало настроение, так что продолжу завтра. 12 часов трассировки и один завтрак дают о себе знать. Надо отдохнуть... :(
В друзья
К началу страницы
+Ответить
сообщение 8.8.2003, 20:41


Гость











Jhon, - я тебя понял !!! (o) А чё у тебя UPX0-то? IDA сама распаковывает?

Короче, гулял я по PST!WRITEDATA и по 100086b0 проходил. Ты дело говоришь (o) , просто меня сначала смутили UPX0, а потом я из PST.exe, через PST_FP_FLASH.DLL попал в PST!WRITEDATA, но пока ещё не смотрел конкретно! Так - мельком.

Завтра скажу результат трассировки. Надо ещё адрес буфера найти, а то я его с помощью bpm 16edbbe rw благополучно потерял... см пред пост.
В друзья
К началу страницы
+Ответить
сообщение 9.8.2003, 11:10


Гость











PST!WriteData (10001790)
Буфер с данными по адресу: 7370BC

захожу в 100086B0 (в EDI: 7370BC), там 10008715 call dword ptr [edx+0c] - захожу. Что вижу:
;-------------------------------------------------------------------------------------------------------------
100058B8 rep movsd (7370bc -> 16ec435)
100058E2 Kernel32!DeviceIoControl (!!! об этом далее !!!)
100058F5 Kernel32!WaitForSingleObject (??? - позже в SDK по WinAPI посмотрю)
1000590D Kernel32!GetOverlappedResult ( !!! Имеем дело со Overlapped структурой)
1000591B Kernel32!CancelIO (Без коментариев !!!)
10005930 Kernel32!FindCloseChangeNotification (??? - пока тож незнаю)
;----------------------------- ret ---------------------------------------------------------------------------
>From SDK: :D
The DeviceIoControl function sends a control code directly to a specified device driver, causing the corresponding device to perform the specified operation.

BOOL DeviceIoControl(

HANDLE hDevice, // handle to device of interest
DWORD dwIoControlCode, --------------// control code of operation to perform
LPVOID lpInBuffer, ------------------------// pointer to buffer to supply input data
DWORD nInBufferSize, ---------------------// size of input buffer
LPVOID lpOutBuffer, ----------------------// pointer to buffer to receive output data
DWORD nOutBufferSize, -------------------// size of output buffer
LPDWORD lpBytesReturned, --------------// pointer to variable to receive output byte count
LPOVERLAPPED lpOverlapped ----------// pointer to overlapped structure for asynchronous operation
); - я выделил важные на данный момент параметры !!!
...
dwIoControlCode
Specifies the control code for the operation. This value identifies the specific operation to be performed and the type of device on which the operation is to be performed. The following values are defined: (выпишу интересные...)

<_<
FSCTL_GET_COMPRESSION Obtains the compression state of a file or directory
FSCTL_SET_COMPRESSION Sets the compression state of a file or directory.
IOCTL_SERIAL_LSRMST_INSERT - Enables or disables placement of a line and modem status data into the data stream.
;----------------------------------------------------------------------------------------------------------------
порты открываются как файлы (и в бейсике и в делфи, и в асме (ф-ии BIOS))!!!
В друзья
К началу страницы
+Ответить
CeproBaH
сообщение 9.8.2003, 13:02


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.7.2003
Из: Архангельск
Пользователь №: 174

Рейтинг: 0



FindCloseChangeNotification - прекращает отслеживание извещений об изменениях для заданного дискриптора. Дискриптор контроля изменений, создается вызовом функции FindFirstChangeNotification (где-то выше она должна была быть...)
FindFirstChangeNotification - создает дискриптор контроля изменений и устанавливает начальные условия фильтрации извещений об изменениях в заданом каталоге или поддереве. Состояние заданного каталога или поддерева контролирует ф-ия WaitForSingleObject с использованием дескриптора возращаемого этой функцией. В параметрах ф-ии задаются условия фильтрации событий, т.е. можно отслеживать там всякие изменения размеров или атрибутов или времени файлов, или имени, или всего сразу, смотря что в параметрах стояло.
CancelIO - отменяет все невыполненные операции ввода вывода, запросы на выполнение которых были выданы для указанного дескрипторафайла вызывающей нитью. Операции запрошенные с других нитей не отменяются.

P.S. Ты наверно и сам уже разобрался, просто надоело без дела сидеть, надо помогать. ;)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 9.8.2003, 14:25


Гость











CeproBaH, - тему толкаеш !!! (o)

The WaitForSingleObject function returns when one of the following occurs (Задержка для одного объекта, возврат из фкнкции когда происходит одно из событий):

·The specified object is in the signaled state(Указанный объект в отмеченном состоянии (симафорит, блин)).
·The time-out interval elapses(время ожидания истекло).

DWORD WaitForSingleObject(

HANDLE hHandle, // handle of object to wait for (дескриптор объекта)
DWORD dwMilliseconds // time-out interval in milliseconds (интервал таймаута)
);
Хе-хе!!! Сергофан (o), кореш. Спасибо... А у меня к тебе другое предложение! И ко всем кто со мной (o) :

ВСЁ !!!! С ПСТ - ВСЁ !!! ЧИТАЕМ ВНИМАТЕЛЬНО !!! И ЕСЛИ ЧТО ПОПРАВЛЯЕМ, А ТО Я МОГУ НЕ ТУДА ЗАБРЕСТИ !!!

BOOL DeviceIoControl (
hDevice: 000000BCh
dwIoControlCode: 2018h (2018h=10000000011000b. Кто может определить параметры?)
lpInBuffer: 16ec430h (заголовок+наши данные(реальные из файла!!!))
nInBufferSize: 00001006h (длина данных)
lpOutBuffer: 0
nOutBufferSize: 0
lpBytesReturned: 0
lpOverlapped: 016ec414
);

ВЫВОД !!!
Надо пройтись по Kernel32!DeviceIoControl чтобы найти МЕСТО, КУДА ЭТИ ДАННЫЕ УХОДЯТ (я о драйвере !!! хе-хе.). Но про PST нельзя забывать, т.к. ф-я WriteData используется не только в нашем случае! Другими словами нам нужны наши данные из файла, а не левые комманды. Поэтому бряки будут такие:

1) bpx 0159e239 - жмём и "Flash", блок уже считан из файла, как только TRW проявится ставим:
2) bpx 100058e2 - жмём , вываливаемся в TRW и перед глазами наблюдаем:

100058E2 call Kernel32!DeviceIoControl, в стек уже занесены все параметры функции, которые я только-что выписал, остаётся тока нажать F8, чтобы зайти в Kernel32. Кто что думает???
В друзья
К началу страницы
+Ответить
CeproBaH
сообщение 9.8.2003, 15:34


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.7.2003
Из: Архангельск
Пользователь №: 174

Рейтинг: 0



Цитата
dwIoControlCode: 2018h (2018h=10000000011000b. Кто может определить параметры?)

Вот так собирается значение параметра
Код
// Macro definition for defining IOCTL and FSCTL function control codes.  Note
// that function codes 0-2047 are reserved for Microsoft Corporation, and
// 2048-4095 are reserved for customers.
//
#define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
   ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)

Кстати посмотри внимательно, у нас значение Function получается равно 2054!

Так можно узнать номер девайса:
Код
//
// Macro to extract device type out of the device io control code
//
#define DEVICE_TYPE_FROM_CTL_CODE(ctrlCode)     (((DWORD)(ctrlCode & 0xffff0000)) >> 16)

Это думаю понятно без перевода.

В твоем листинге не хватает старшего слова в параметре, иначе device=0???
Вот список допустимых девайсов:
Код
#define DEVICE_TYPE DWORD

#define FILE_DEVICE_BEEP                0x00000001
#define FILE_DEVICE_CD_ROM              0x00000002
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM  0x00000003
#define FILE_DEVICE_CONTROLLER          0x00000004
#define FILE_DEVICE_DATALINK            0x00000005
#define FILE_DEVICE_DFS                 0x00000006
#define FILE_DEVICE_DISK                0x00000007
#define FILE_DEVICE_DISK_FILE_SYSTEM    0x00000008
#define FILE_DEVICE_FILE_SYSTEM         0x00000009
#define FILE_DEVICE_INPORT_PORT         0x0000000a
#define FILE_DEVICE_KEYBOARD            0x0000000b
#define FILE_DEVICE_MAILSLOT            0x0000000c
#define FILE_DEVICE_MIDI_IN             0x0000000d
#define FILE_DEVICE_MIDI_OUT            0x0000000e
#define FILE_DEVICE_MOUSE               0x0000000f
#define FILE_DEVICE_MULTI_UNC_PROVIDER  0x00000010
#define FILE_DEVICE_NAMED_PIPE          0x00000011
#define FILE_DEVICE_NETWORK             0x00000012
#define FILE_DEVICE_NETWORK_BROWSER     0x00000013
#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
#define FILE_DEVICE_NULL                0x00000015
#define FILE_DEVICE_PARALLEL_PORT       0x00000016
#define FILE_DEVICE_PHYSICAL_NETCARD    0x00000017
#define FILE_DEVICE_PRINTER             0x00000018
#define FILE_DEVICE_SCANNER             0x00000019
#define FILE_DEVICE_SERIAL_MOUSE_PORT   0x0000001a
#define FILE_DEVICE_SERIAL_PORT         0x0000001b
#define FILE_DEVICE_SCREEN              0x0000001c
#define FILE_DEVICE_SOUND               0x0000001d
#define FILE_DEVICE_STREAMS             0x0000001e
#define FILE_DEVICE_TAPE                0x0000001f
#define FILE_DEVICE_TAPE_FILE_SYSTEM    0x00000020
#define FILE_DEVICE_TRANSPORT           0x00000021
#define FILE_DEVICE_UNKNOWN             0x00000022
#define FILE_DEVICE_VIDEO               0x00000023
#define FILE_DEVICE_VIRTUAL_DISK        0x00000024
#define FILE_DEVICE_WAVE_IN             0x00000025
#define FILE_DEVICE_WAVE_OUT            0x00000026
#define FILE_DEVICE_8042_PORT           0x00000027
#define FILE_DEVICE_NETWORK_REDIRECTOR  0x00000028
#define FILE_DEVICE_BATTERY             0x00000029
#define FILE_DEVICE_BUS_EXTENDER        0x0000002a
#define FILE_DEVICE_MODEM               0x0000002b
#define FILE_DEVICE_VDM                 0x0000002c
#define FILE_DEVICE_MASS_STORAGE        0x0000002d
#define FILE_DEVICE_SMB                 0x0000002e
#define FILE_DEVICE_KS                  0x0000002f
#define FILE_DEVICE_CHANGER             0x00000030
#define FILE_DEVICE_SMARTCARD           0x00000031
#define FILE_DEVICE_ACPI                0x00000032
#define FILE_DEVICE_DVD                 0x00000033
#define FILE_DEVICE_FULLSCREEN_VIDEO    0x00000034
#define FILE_DEVICE_DFS_FILE_SYSTEM     0x00000035
#define FILE_DEVICE_DFS_VOLUME          0x00000036
#define FILE_DEVICE_SERENUM             0x00000037
#define FILE_DEVICE_TERMSRV             0x00000038
#define FILE_DEVICE_KSEC                0x00000039
#define FILE_DEVICE_FIPS  0x0000003A


Данные взяты из файла winioctl.h
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 9.8.2003, 18:36


Гость











Ух-ты ?!?!?! blink.gif
Сергофан, - ты посмотри на моё лицо ... Ну ты понял насколько я понял?
Цитата
значение Function получается равно 2054!


почему?

Цитата
В твоем листинге не хватает старшего слова в параметре, иначе device=0???


2018h в моём случае - 00002018h, я просто нулики поленился писать! А вообще я брал все значения со стека перед вызовом самой функции.

Дошли до меня BIN'ки от V60 и V66, скачаные с флешей программатором. Также дошли до меня SHX'ы от этих моделей... Большое спасибо доброму человеку!!! (o) Вот результат осмотра:
В BIN'ках всё открыто!!! Слова есть всякие и нули. А SHX'ы прекрасно сконвертились моей прогой в BIN - таже фигня, что и с C350 !!! Я думаю, что всё-таки надо ковыряться в дровах !!!
Кстати, я нарыл строчку в BIN'ках от Vxx: Encryption by RSA Security. Кто-нить знает что енто такое???
В друзья
К началу страницы
+Ответить
CeproBaH
сообщение 9.8.2003, 18:56


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.7.2003
Из: Архангельск
Пользователь №: 174

Рейтинг: 0



значение Function получается равно 2054 потому-что
2018h >> 2 = 806h = 2054
Ну это в общем номер какойто ф-ии который содержится в параметре 2018h, и который DeviceIoControl передает драйверу.

А вообще из тех параметров которые приведены в SDK WinAPI для DeviceIoControl, значения 2018h нету, видимо этот параметр ссылается на какую-то ф-ию в дровах (как ты и говоришь). Что-же это еще может быть, ведь:
Цитата
The DeviceIoControl function sends a control code directly to a specified device driver, causing the corresponding device to perform the specified operation.

А вот сами управляющие коды (control code) известны наверно только тому кто написал этот драйвер. В данном случае я так понимаю драйвер MotorolaUSB.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 9.8.2003, 19:14


Гость











Цитата
А вот сами управляющие коды (control code) известны наверно только тому кто написал этот драйвер. В данном случае я так понимаю драйвер MotorolaUSB.

Да. Скорее всего так оно и есть. Завтрашний день начну с Kernel32!DeviceIoControl.

Самое интересное что буфер с данными (7370BC) выглядит так:
идёт небольшая строка, в которой фигурирует слово "BIN", затем длина строки данных (WORD) и сами данные. А в прошивке от Vxx фигурируют слова ACK, ERASE, BIN, ERR, BAUD, POWER_DOWN, ... , RSVN - и это не что иное как AT команды!!! Последняя, кстати, возвращает версию прошивки, лично проверял. ;)
В друзья
К началу страницы
+Ответить
сообщение 10.8.2003, 9:39


Гость











Цитата
2018h в моём случае - 00002018h, я просто нулики поленился писать! А вообще я брал все значения со стека перед вызовом самой функции.

Сергофан, - я опять прогнал zootag; , блин восьмёрка замаскировалась... Правильное число: 80002018h. rolleyes.gif Ну же - говори же уже скорее. Я знаю, что ты знаешь что енто !!! А? (o)

Пока Сергофан думает, я сообщаю о результатах прогулки по Kernel32!DeviceIoControl. В общем, мы вываливаемся в итоге в P2K.SYS. Адрес такой: FF05C92A. А вобще у меня есть ещё вопросы:

1) Как связаны между собой приложение, драйвер и устройство? Каки-то комманды мож в UNICODE отправляются? Или прерывание? Или тупо IN, OUT инструкции? Кто что знает - выкладывайте :) ... На благо народа пойдёт!
2) Вот DLL, например, экспортирует функции, а как работает драйвер устройства???
В друзья
К началу страницы
+Ответить
CeproBaH
сообщение 10.8.2003, 11:30


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.7.2003
Из: Архангельск
Пользователь №: 174

Рейтинг: 0



Lord-3X, ничего хорошего сказать не могу, девайса под номером 80h (а я не зря выше привел таблицу стандартных девайсов) не существует. В WinAPI о параметре 80002018h ничего определенного нет.
Попробуй для начала выяснить на что указывает параметр hDevice, он должен был быть где-то ранее получен вызовом CreateFile.
Цитата
Как связаны между собой приложение, драйвер и устройство?

Как раз DeviceIoControl их и связывет.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
CeproBaH
сообщение 10.8.2003, 11:47


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.7.2003
Из: Архангельск
Пользователь №: 174

Рейтинг: 0



Вот еще можно глянуть:
Программировение обмена по USB
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 10.8.2003, 12:53


Гость











CeproBaH, - всё понял.
Эх, зря дяди Била с нами нет... rolleyes.gif

А знаешь что конкретно делает DeviceIoControl? (н-р: делает то, потом обращается к XXX, потом вызывает YYY и т.д.)
В друзья
К началу страницы
+Ответить
сообщение 10.8.2003, 13:26


Гость











ВЗГЛЯНИТЕ-КА НА ЭТО !!! blink.gif

Нашёл по ссылке, что выложил Сергофан... Помоему - то что надо...
В друзья
К началу страницы
+Ответить
сообщение 10.8.2003, 13:48


Гость











Значится так, pst.sys:

Як сюда попадают, я не знаю, DevIOCtrl не нашел...
....
.text:00010C80 cmp ecx, 80002018h
.text:00010C86 jz short PROG
....
.text:00010C9B PROG:
.text:00010C9B push eax
.text:00010C9C push esi
.text:00010C9D mov ecx, edi
.text:00010C9F call Programming //или чего то там
.text:00010CA4 jmp exit
....
.text:00010A3A ; --------------- S U B R O U T I N E ---------------------------------------
.text:00010A3A
.text:00010A3A ; Attributes: bp-based frame
.text:00010A3A
.text:00010A3A Programming proc near
.text:00010A3A
.text:00010A3A var_4 = dword ptr -4
.text:00010A3A arg_0 = dword ptr 8
.text:00010A3A arg_4 = dword ptr 0Ch
.text:00010A3A
.text:00010A3A push ebp
.text:00010A3B mov ebp, esp
.text:00010A3D push ecx
.text:00010A3E mov eax, [ebp+arg_4]
.text:00010A41 mov [ebp+var_4], ecx
.text:00010A44 push ebx
.text:00010A45 push esi
.text:00010A46 mov ecx, [eax+8]
.text:00010A49 push edi
.text:00010A4A cmp ecx, 6
.text:00010A4D jb short loc_10AA5
.text:00010A4F mov eax, [ebp+arg_0]
.text:00010A52 mov eax, [eax+0Ch]
.text:00010A55 mov bl, [eax]
.text:00010A57 mov esi, [eax+1]
.text:00010A5A add eax, 5
.text:00010A5D mov [ebp+arg_4], eax
.text:00010A60 lea eax, [esi+5]
.text:00010A63 cmp ecx, eax
.text:00010A65 jb short loc_10AA5
.text:00010A67 mov ecx, [ebp+var_4]
.text:00010A6A xor edi, edi
.text:00010A6C call sub_1152F
.text:00010A71 cmp byte ptr [eax+4], 0
.text:00010A75 jbe short loc_10AA5
.text:00010A77
.text:00010A77 loc_10A77:
.text:00010A77 mov ecx, [ebp+var_4]
.text:00010A7A push edi
.text:00010A7B call sub_11846
.text:00010A80 cmp [eax+3], bl
.text:00010A83 jnz short loc_10A94
.text:00010A85 mov ecx, [ebp+var_4]
.text:00010A88 push edi
.text:00010A89 call sub_11846
.text:00010A8E test byte ptr [eax+2], 80h
.text:00010A92 jz short loc_10AAC
.text:00010A94
.text:00010A94 loc_10A94:
.text:00010A94 mov ecx, [ebp+var_4]
.text:00010A97 inc edi
.text:00010A98 call sub_1152F
.text:00010A9D movzx eax, byte ptr [eax+4]
.text:00010AA1 cmp edi, eax
.text:00010AA3 jb short loc_10A77
.text:00010AA5
.text:00010AA5 loc_10AA5:
.text:00010AA5 mov eax, 0C000000Dh
.text:00010AAA jmp short loc_10AEC
.text:00010AAC ; ---------------------------------------------------------------------------
.text:00010AAC
.text:00010AAC loc_10AAC:
.text:00010AAC cmp bl, 1
.text:00010AAF jbe short loc_10AA5
.text:00010AB1 cmp bl, 2
.text:00010AB4 jz short loc_10AD2
.text:00010AB6 cmp bl, 3
.text:00010AB9 jnz short loc_10AE9
.text:00010ABB push offset loc_14522
.text:00010AC0 mov ecx, [ebp+var_4]
.text:00010AC3 push [ebp+arg_0]
.text:00010AC6 push edi
.text:00010AC7 push esi
.text:00010AC8 push [ebp+arg_4]
.text:00010ACB call sub_11710
.text:00010AD0 jmp short loc_10AEC
.text:00010AD2 ; ---------------------------------------------------------------------------
.text:00010AD2
.text:00010AD2 loc_10AD2:
.text:00010AD2 push offset loc_14522
.text:00010AD7 mov ecx, [ebp+var_4]
.text:00010ADA push [ebp+arg_0]
.text:00010ADD push edi
.text:00010ADE push esi
.text:00010ADF push [ebp+arg_4]
.text:00010AE2 call sub_11710
.text:00010AE7 jmp short loc_10AEC
.text:00010AE9 ; ---------------------------------------------------------------------------
.text:00010AE9
.text:00010AE9 loc_10AE9:
.text:00010AE9 mov eax, [ebp+arg_0]
.text:00010AEC
.text:00010AEC loc_10AEC:
.text:00010AEC pop edi
.text:00010AED pop esi
.text:00010AEE pop ebx
.text:00010AEF leave
.text:00010AF0 retn 8
.text:00010AF0 Programming endp
.text:00010AF0

Капаюсь далее....
В друзья
К началу страницы
+Ответить
сообщение 10.8.2003, 14:12


Гость











Цитата
Як сюда попадают, я не знаю, DevIOCtrl не нашел...

Для кого пишу, причём по шагам? Сам незнаю... blink.gif
Цитата
.text:00010C80 cmp ecx, 80002018h

А вот это уже интересно... молодец... так держать... (o)
В друзья
К началу страницы
+Ответить
сообщение 10.8.2003, 18:00


Гость











ССЫЛКИ НА ВСЯКИЙ СЛУЧАЙ !!!

W A S M . R U
WWW.REVERSiNG.NET
В друзья
К началу страницы
+Ответить
сообщение 10.8.2003, 19:48


Гость











Народ !!!
Код
Ради всеобщего блага я зарегистрировался на сайтах, указанных постом выше, создал свои темы и изложил суть дела. В темах указал ссылку на первый пост нашей темы, в результате чего решил его модифицировать...

Администраторам: если что не так, лучше предупредите сразу, чтобы небыло последствий... :)

Первая страница ЗДЕСЬ
В друзья
К началу страницы
+Ответить
T-Troll
сообщение 10.8.2003, 20:54


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.8.2003
Пользователь №: 400
Модель телефона: V300, V635, V3x

Рейтинг: 8.5



Насчет RCA... Это криптография с открытым ключем, как раз ее ломали на disturbed.net, кто помнит.

Теперь о хорошем. Она используется в WAP-браузере для секьюрных транзакций, так что прошивка скорее всего не ей закриптована - ресурсов много надо.....
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
CeproBaH
сообщение 10.8.2003, 21:00


Интересующийся
**

Группа: Пользователи
Сообщений: 40
Регистрация: 7.7.2003
Из: Архангельск
Пользователь №: 174

Рейтинг: 0



Зачем много ресурсов? Мы не собираемся подбирать ключ - он у нас под носом, только найти никак не можем. Изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
сообщение 10.8.2003, 21:20


Гость











На MOBILE-FILES.RU зарегистрирован, а новую тему создать немогу blink.gif ... чё за прикол!? Мож кто рискнёт сообщить туда о том, что мы есть?
В друзья
К началу страницы
+Ответить
сообщение 11.8.2003, 8:01


Гость











Совсем забыл, что адреса могут меняться. Установил кучу софта. Библиотек в пямяти прибыло. Старые бряки перестали работать. Выход из этого положения такой:
набираем по-очереди: EXP32 Pst_fp_flash!, EXP32 Pst_fp_flashdevapi! и т.д. Дальше и так всё станет ясно. У меня адрес стал 158E239 вместо 159E239! Короче говоря поменялся адрес загрузки... Адреса переменных тоже поуплывали. Но это не проблема, т.к. за начальный адрес для слежения я беру адрес из переменной lpInBuffer, которая находится в стеке перед вызовом DeviceIoControl. Потом ставлю бряки на чтение/запись в этот участок. И т.д. Что это дало? А дало это то, что TRW2k меня выкинул сюда:
Код
ADDR: FF07CBF5 in module p2k.sys>

MOV BL, [EAX]       ;в EAX адрес нашего буфера, BL=2
PUSH ESI
MOV ESI, [EAX+1] ;ESI=1000h=4096 байт наших данных
ADD EAX, 5            ;А вот теперь EAX содержит адрес где сами данные
...

Т.к. я представления не имею каким образом драйвер ложится в память, то мне пришлось выписать кучу байт из адреса FF07CBF5 с целью последующего нахождения реальных адресов в p2k.sys файле. Я думаю это упростит поиск, т.к. я даже незнаю где начало этой подпрограммы и TRW2k не позволяет этого сделать.

Кстати, дальше TRW2000 выкидывет меня туда, где буфер заполняется новыми данными !!! :D Ну вы понимаете о чём я ?!?! B) Как найду адресочек - выложу... bigsmile;
В друзья
К началу страницы
+Ответить
Ковырнём Прошивку ..., Hex Workshop 4.0, Hiew etc... · Патчи и всё для них · Forum
 

22 страниц V < 1 2 3 4 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.6.2025, 6:37

Форум живёт: