Search the Community
Showing results for tags 'дизассемблер'.
-
Есть устройство на таком мк S9S12G128vll ON51A QQKL183OU. Все работает. Не устраивает некоторый функционал( логика работы). В поисках человека по коррекции прошивки под мои нужды.
-
Сразу скажу - с этим раньше не работал. Есть прибор на стареньком MC912D60ACPV8, это МОТОРОЛЛА серии M68HC12. Есть файлы прошивки в PDB формате по 63Кбт, скорее всего это вид бинарника. Нужно этот файл разобрать - дизассемблировать и декопмилировать. Думаю, что по читаемым командам найду нужные моменты для редактирования. Но я раньше этим не занимался. Знаю что это довольно древний контроллер, с ним активно работали в конце 90-х и 2000-ных. И прошу помощи у спецов помочь с этим вопросом - может кто-то когда-то уже имел дело с подобными задачами.
-
Столкнулся с тем что в интернете куча уроков по ассмеблеру, и везде мол главное практика, главное писать программы на ассемблере под винду. Так же куча информации по взлому и дизассемблированию программ на винде. используя дебагер и тд. Но нигде я не нашел информации по анализу для начинающих кода на ассемблере с микроконтроллеров. Даже просто хотя бы понимать что к чему и как начать и тд. К примеру скажу сразу что как я выяснил дизассемблером так сказать всех времен и народов является IDA Думаю данная инфа будет кому то интересна и полезна а кто то наткнется на эту запись с поисковиков. У меня есть вопросы. Вот я прогнал прошивку через IDA и если для виндовских приложений мы цепляемся за дебагер, запускаем так сказать программу пошагово и смотрим где что выполняется то тут так сделать не получиться и как я подозреваю тут надо работать руками на физическом уровне а именно прозванивать элементы и понимать что как вообще работает хотя бы примерно. И вот я так и сделал, я прозвонил память еепром до микроконтроллера. И узнал на какие ноги идет. Далее я посмотрел в даташите что это вообще за ноги: 1 нога еепром (CS) звониться на 40 ногу мозга PF10/CS0 2 нога eeпром (CLK) звониться на 226 ногу мозга (PL9/ SCK4/IRQ5) 3 нога еепром (DI) звониться на 157 ногу мозга PB10/TxD4/HTxD0/TO8G 4 нога еепром (DO) звониться на 158 ногу мозга PB11/RxD4/HRxD0/TO8H Далее я знаю что у меня микроконтроллер считывает информацию с еепром. А делать он это может как я понимаю только по ноге 158, так как она подрублена к DO (выход данных с еепром), тоесть 158 нога является входом данных. Тоесть микроконтроллер должен уметь считывать её состояние. А значит это операция чтения и в даташите ищем к порту B такой регистр, вот он: Port B Data Register (PBDR) Read/Write Operations. Далее смотрим маску. Обращение к конкретно этому порту PB11 возможно таким способом 0000 1000 0000 0000 (или в HEX это будет 800) Далее в IDA жмем search->immediate value... и вводим нашу маску 800 и просматриваем все что нашли, маска может применяться и для других регистров. В итоге я нашел что это маскаmov.w #h'800, применяется совместно с регистром #PBDR_W тоесть используется как раз порт PB11 а так же тут же в этой функции присутствует маска 400 рядом с регистром PFDR_W а это как раз PF10 который идет на CS еепромки. Вообщем опыта и знаний у меня маловато поэтому и прошу помощи. Однозначно понятно что это не значит что это функция чтения с еепром, но помогите пожалуйста разобраться по шагам что в этой функции твориться, я сам в комментариях тоже попробую. Ниже вырван кусок кода в котором найдены эти маски и регистры. ROM:0000E378 eeprom: ; CODE XREF: sub_1096A+13DC4p ;название eeprom задал я ROM:0000E378 ; sub_1096A+13E66p ... ROM:0000E378 ROM:0000E378 var_18 = -h'18 ; какая то переменная как я понимаю ROM:0000E378 ROM:0000E378 mov.l r14, @-r15 ROM:0000E37A mov.l r13, @-r15 ROM:0000E37C mov.l r12, @-r15 ROM:0000E37E mov.l r11, @-r15 ; какое то значение @-r15 помещается в r11, r12 и тд ROM:0000E380 sts.l pr, @-r15 ;sts это вроде как запись в какое то СОЗУ ROM:0000E382 add #-8, r15 ; складывается что то с r15 ROM:0000E384 mov.w #h'E0, r5 ; что то помещается в r5 ROM:0000E386 mov r15, r4 ; ROM:0000E388 mov.l #sub_2078, r3 ROM:0000E38A jsr @r3 ; sub_2078 ROM:0000E38C add #4, r4 ROM:0000E38E mov #1, r6 ROM:0000E390 mov.w #PFDR_W, r12 ; порт PF ROM:0000E392 mov.w #h'400, r13 ; маска , по идее PF10 должен быть который подрублен к CS еепромки ROM:0000E394 mov.l #sub_4AF4, r14 ROM:0000E396 mov r13, r5 ROM:0000E398 jsr @r14 ; sub_4AF4 ROM:0000E39A mov r12, r4 ROM:0000E39C mov.l #sub_2088, r3 ROM:0000E39E jsr @r3 ; sub_2088 ROM:0000E3A0 mov.l @(h'1C+var_18,r15), r4 ROM:0000E3A2 mov.l #sub_2400, r2 ROM:0000E3A4 jsr @r2 ; sub_2400 ROM:0000E3A6 mov #1, r4 ROM:0000E3A8 mov.w #PBDR_W, r2 ; порт PB ROM:0000E3AA mov.w @r2, r3 ROM:0000E3AC extu.w r3, r3 ROM:0000E3AE mov.w #h'800, r1 ; маска которая соответствует вроде как для PB11 который подрублен к DO еепромки ROM:0000E3B0 mov.w #h'E0, r5 ; 'р' ROM:0000E3B2 tst r1, r3 ROM:0000E3B4 mov.l #sub_2078, r2 ROM:0000E3B6 movt r11 ROM:0000E3B8 jsr @r2 ; sub_2078 ROM:0000E3BA mov r15, r4 ROM:0000E3BC mov #0, r6 ROM:0000E3BE mov r13, r5 ROM:0000E3C0 jsr @r14 ; sub_4AF4 ROM:0000E3C2 mov r12, r4 ROM:0000E3C4 mov.l #sub_2088, r3 ROM:0000E3C6 jsr @r3 ; sub_2088 ROM:0000E3C8 mov.l @r15, r4 ROM:0000E3CA mov r11, r0 ROM:0000E3CC add #8, r15 ROM:0000E3CE lds.l @r15+, pr ROM:0000E3D0 mov.l @r15+, r11 ROM:0000E3D2 mov.l @r15+, r12 ROM:0000E3D4 mov.l @r15+, r13 ROM:0000E3D6 rts ROM:0000E3D8 mov.l @r15+, r14 ROM:0000E3D8 ; End of function eeprom Дополните и поправьте пожалуйста, а то в знаниях дыра =)
- 14 replies
-
- дизассемблер
- ассемблер
-
(and 1 more)
Tagged with: