www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

HEX koda - pomoč

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
omron
Član
Član



Pridružen-a: Pet 08 Maj 2009 14:46
Prispevkov: 100
Aktiv.: 0.51
Kraj: Smartrace

PrispevekObjavljeno: Ned Jul 07, 2013 1:56 am    Naslov sporočila:  HEX koda - pomoč Odgovori s citatom

Mene zanima, če ve kdo od vas kako ugotoviti kateri del HEX kode, ko jo prebereš iz nekega Flash pomnilnika ali EEPROMA je namenjen za kaj in kaj pomeni.

Zaenkrat vem le nekaj posebnosti razumevanja in sicer, da lahko dele kode rolaš v levo ali desno in s tem dobiš razumljivejšo obliko zapisa. Deliš z 8, 16 ali 32 (odvisno od sistema).

Zanima me predvsem razumevanje tega programskega jezika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mujo
Član
Član



Pridružen-a: Ned 02 Jan 2005 19:24
Prispevkov: 746
Aktiv.: 3.14
Kraj: MB

PrispevekObjavljeno: Ned Jul 07, 2013 8:03 am    Naslov sporočila:   Odgovori s citatom

Ko prevedeš program iz poljubnega programskega jezika na koncu dobiš izedljivo datoteko - hex (poenostavimo).
V svetu mikrokrmilnikov se koda naprej z višjega jezika prevede v assembler (zbirnik). Iz zbirnika pa se prevede v hex. Kje in kako bo kaj z assemblerja pristalo v hex kodi je odvisno od ukazov in nastavitev.
Najbolj pa od same arhihekture za katero je program.

Da ugotoviš "kateri del hex" je za kaj se moras spoznati z arhiehkturo. Tako lahko ugotoviš kateri del kode je za kaj. Tako hitro najdeš kaj se izvaja ob prekinitvah.

Kaj pa del hex počne pa lahko ugotoviš če pogledaš ukaze za to arhihekturo.
V kolikor pa se ti ne da s tem ukvarjati pa obstajajo programi ki iz hex generirajo assember (seveda brez komentarjev, in ostale krame ki je v orginalnem programu)
Ko enkrat imaš assembler ti je lažje da ugotoviš kaj je za kaj in kaj pomeni.

Če želiš kaj bolj konkretnega pa kar vprašaj... se ravno ukvarjam s tako zadevo Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
omron
Član
Član



Pridružen-a: Pet 08 Maj 2009 14:46
Prispevkov: 100
Aktiv.: 0.51
Kraj: Smartrace

PrispevekObjavljeno: Ned Jul 07, 2013 11:53 am    Naslov sporočila:   Odgovori s citatom

Problem je, ker mi je arhitektura nepoznana in lahko program vidim samo v hex kodi.

Bi pa bil izjemno vesel, če mi lahko poveš kje bi dobil tak program, ki ti zadevo pretvori v assembler Smile.

V prihodnje bom gotovo še potreboval pomoč pri razumevanju teh zadev, zato bi se priporočal da ostaneva v kontaktu.

Mimogrede, jaz uporabljam "HEX editor" za delo s hex kodo. Imaš kaj izkušenj z njim ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tonko
Član
Član



Pridružen-a: Sob 25 Jun 2005 13:45
Prispevkov: 541
Aktiv.: 2.28
Kraj: Črnomelj

PrispevekObjavljeno: Ned Jul 07, 2013 12:08 pm    Naslov sporočila:   Odgovori s citatom

IDA - Interactive DisAssembler
Orodje za to kar iščeš, imam pa občutek da si ne boš kaj dosti s tem pomagal.

Lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gregoral
Član
Član



Pridružen-a: Pet 24 Nov 2006 9:42
Prispevkov: 688
Aktiv.: 3.04
Kraj: Ljubljana

PrispevekObjavljeno: Ned Jul 07, 2013 12:18 pm    Naslov sporočila:   Odgovori s citatom

Zivjo,
to kar imaš je binaren zapis, hex je le oblika zapisovanja binarnih podatkov z znaki 0-9 in A-F.
En byte je v hex zapisan kot številka od 0x00 do 0xFF.

Glede razumevanja pa to lahko že bolj meji na magijo Smile .

Prva stvar ki bi jo moral vedeti je za katero arhitekturo je binary (x86, x64, ARM, itanium, ...).
To lahko sicer uganeš s sklepanjem iz delov binary datoteke, ni pa nujno (odvisno kako je velika, kaj je noter, ...).

Naslednja stvar ki jo je treba ugotovit je kje procesor začne izvajat kodo.
Nato potrebuješ disassembler za izbrano arhitekturo (lahko pa delaš tudi peš).
Na tem naslovu potem začneš z disasembliranjem.

To pomeni da po korakih ugotavljaš kaj koda počne in iz katerih naslovov kliče podprocedure (funkcije, procedure, ....)

lp, Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
omron
Član
Član



Pridružen-a: Pet 08 Maj 2009 14:46
Prispevkov: 100
Aktiv.: 0.51
Kraj: Smartrace

PrispevekObjavljeno: Ned Jul 07, 2013 12:57 pm    Naslov sporočila:   Odgovori s citatom

gregoral je napisal/a:
Zivjo,
to kar imaš je binaren zapis, hex je le oblika zapisovanja binarnih podatkov z znaki 0-9 in A-F.
En byte je v hex zapisan kot številka od 0x00 do 0xFF.

Glede razumevanja pa to lahko že bolj meji na magijo Smile .

Prva stvar ki bi jo moral vedeti je za katero arhitekturo je binary (x86, x64, ARM, itanium, ...).
To lahko sicer uganeš s sklepanjem iz delov binary datoteke, ni pa nujno (odvisno kako je velika, kaj je noter, ...).

Naslednja stvar ki jo je treba ugotovit je kje procesor začne izvajat kodo.
Nato potrebuješ disassembler za izbrano arhitekturo (lahko pa delaš tudi peš).
Na tem naslovu potem začneš z disasembliranjem.

To pomeni da po korakih ugotavljaš kaj koda počne in iz katerih naslovov kliče podprocedure (funkcije, procedure, ....)

lp, Gregor


Saj zapis katerega obdelujem je v HEX obliki in je zapisan s številakmi 0-9 in črkami A-F.

Če ti kaj pomaga:

Zapisi s katerimi se ukvarjam so ponavadi v velikosti 2kb, 4kb ali 8kb in sistemi so 8, 16 in ponekod tudi 32 bitni. Čiparija je bolj ali manj Motorolina(Freescale) ali Atmelova.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gregoral
Član
Član



Pridružen-a: Pet 24 Nov 2006 9:42
Prispevkov: 688
Aktiv.: 3.04
Kraj: Ljubljana

PrispevekObjavljeno: Ned Jul 07, 2013 1:07 pm    Naslov sporočila:   Odgovori s citatom

Meni ne, tebi pa Smile.
Jaz sem se igral samo z disassemblerjem za x86, drugega nisem nikoli rabil.

Torej rabiš disassembler za freescale (lahko je PowerPC) in atmel.
IDA uporablja module za posamezne arhitekture, tako da rabiš modul za tvojo arhitekturo.

Drugače pa ... veliko zabave Smile

Predvsem pa, začni najprej pisati programe v zbirniku za izbrani procesor.
Potem bo tudi v obratno smer precej lažje.

Opcijsko pa napiši v C, prevedi in poglej kaj dobiš v binarni datoteki.
Torej najprej začni z disasemblanjem svojih lastnih programov.

lp, Gregor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
omron
Član
Član



Pridružen-a: Pet 08 Maj 2009 14:46
Prispevkov: 100
Aktiv.: 0.51
Kraj: Smartrace

PrispevekObjavljeno: Ned Jul 07, 2013 1:35 pm    Naslov sporočila:   Odgovori s citatom

gregoral je napisal/a:
Meni ne, tebi pa Smile.
Jaz sem se igral samo z disassemblerjem za x86, drugega nisem nikoli rabil.

Torej rabiš disassembler za freescale (lahko je PowerPC) in atmel.
IDA uporablja module za posamezne arhitekture, tako da rabiš modul za tvojo arhitekturo.

Drugače pa ... veliko zabave Smile

Predvsem pa, začni najprej pisati programe v zbirniku za izbrani procesor.
Potem bo tudi v obratno smer precej lažje.

Opcijsko pa napiši v C, prevedi in poglej kaj dobiš v binarni datoteki.
Torej najprej začni z disasemblanjem svojih lastnih programov.

lp, Gregor


Oprosti, v začetku sem se malce narobe izrazil Smile. Hotel sem napisati, da mi boš mogoče vedel svetovati kaj več če ti napišem točnejše informacije o tem kaj uporabljam.

Zaenkrat hvala za nasvet. V bodoče poročam o rezultatih.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mujo
Član
Član



Pridružen-a: Ned 02 Jan 2005 19:24
Prispevkov: 746
Aktiv.: 3.14
Kraj: MB

PrispevekObjavljeno: Ned Jul 07, 2013 1:43 pm    Naslov sporočila:   Odgovori s citatom

Hex in binarno je samo oblika zapisa nekega digitalnega podatka. Kaj pa je ta podatek pa je čisto relativno.

Če ne poznaš arhihekture za katero je program napisan se boš imel zelo lepo Smile

Če imaš nek nabor možnih arhihektur potem je zadeva malo lažja:
Pogledaš kje imajo tiste arhihekture lokacijo reseta (kam se postavi PC, ko se zgodi reset) in kaj se nahaja tam. Če je ukaz za jump na neko lokacijo potem si verjetno na dobri poti.

Se pa strinjam z predhodniki - najboljše je da imaš nekaj izkušenj z pisanjem programa v assemblerju in da se potem lotiš kakega hekanja in disasseblerja.
Ter seveda - da poznaš arhihekturo za ta program.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 10 dni


Powered by phpBB © 2001, 2005 phpBB Group