Hexadecimální editace – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hexadecimální editace – Assembler – Fórum – Programujte.comHexadecimální editace – Assembler – Fórum – Programujte.com

 

Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #1
-
0
-

Dobrý den,

vůbec nechápu ty editory - jelikož to ani omylem nepřipomíná strojový kód. Sem tam narazím na čitelný kód - tedy nejen stringy atp., ale i vyloženě adresy - ovšem proložené spoustou nesmyslů. (Po dlouhém študování té změti v tom spatřím třeba cmp, jmp atp.) Tudíž jak se s tím dá vůbec pracovat? Tedy abych mohl číst a psát normální adresy...  Navíc bych raději psal v JSA (jazyk symbolických adres), než přímo ve strojovém. Bylo by něco takového pro Unix systémy? (JSA HexEditor)

Děkuji.

Nahlásit jako SPAM
IP: 78.136.166.–
KIIV
~ Moderátor
+43
God of flame
27. 5. 2013   #2
-
0
-

od toho jsou disassemblery... pokud znas i prekladac, ve kterem to bylo zkompilovano, jde nekdy pouzit i nejaky nastroj na prevod kodu do puvodniho jazyka... (zalezi akorat co to vytaha za informace) v horsim pripade to bude i tak relativne necitelny

(ale i assembler je lepsi nez strojovy kod)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #3
-
0
-

Však JSA bych právě chtěl - neumím moc ve strojovém kódu - ale JSA... :) Assembler právě, že neznám. Vždyť HEX editory mají ukazovat stroják - ne? No a převést strojový kód do JSA přeci není tak složité... Assemblery jen přidávají pár vlastních věciček pro ulehčení práce. O co mi GO? Studuji který vyšší jazyk je nejmenší prase, jak staví kompiler atd...

Nahlásit jako SPAM
IP: 78.136.166.–
KIIV
~ Moderátor
+43
God of flame
27. 5. 2013   #4
-
0
-

hex editor je jen editor binarniho kodu prevedeneho do trosku citelnejsi podoby, kdy kazdy Byte je rozdelen na dva sestnactkove znaky... je to zpusob, jak zobrazit relativne citelne ale to co vidis je pak strojovy kod.. ne assembler..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #5
-
0
-

Já vím - píši to... Ptám se, zda by nebyl takovýto editor co by to ještě překládal do JSA... Navíc jak jsem psal - jako strojový kód to vůbec nevypadá - jelikož ten ani spoustu z těch znaků neobsahuje...

Nahlásit jako SPAM
IP: 78.136.166.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #6
-
0
-

Mám na mysli samotné instrukce - některé se dají dát dokupy, ale mnohé jsou zanesené, nebo vůbec neexistují...

Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #7
-
0
-

Muzes sem postnout kousek hexa casti, ktera se ti nezda? Typicky je kod ulozen v nejakem formatu, treba PE, ktery obsahuje jak kod, tak data (promenne, stringy, atp.), resources (dialogy, obrazky, atp.). Kodova sekce by pak mela obsahovat kod, ktery je normalne zjistitelny a odkazuje treba na data v datove sekci,a tp.

Treba typicky entrypoint win binarky:

8BFF558BEC

se da prelozit jako:

mov          edi,edi
push         ebp
mov          ebp,esp
Nahlásit jako SPAM
IP: 212.4.138.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #8
-
0
-

jeste me napada, ze kazda instrukce je na x86 platforme jinak dlouha, takze mozna koukas doprostred nejake instrukce a pak se ti to zda nesmyslne....ale nevim. Postni kus kodu, nebo screenshot...

Nahlásit jako SPAM
IP: 212.4.138.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #9
-
0
-

   

Já bych prostě raději místo ASCII bloku vpravo JSA přepis...

Nahlásit jako SPAM
IP: 78.136.166.–
~ Anonymní uživatel
0 příspěvků
27. 5. 2013   #10
-
0
-

nejako ti nerozumiem...JSA akoze Jazyk Symbolickych Adries - po anglicky assembly language (tj. akoze assembler)

vidim ze pouzivas linux, mozes pouzit napr program objdump (vacsina distribucii ho uz ma bud predinstalovany/v repozitaroch) ktory zobrazuje aj op code a ku nemu aj ekvivalent v podobe instrukcii (gnu asm, mozes si nastavit aby to zobrazovalo intelacku syntax)

napr:

$ objdump -d ./nejaky_elf_program
...
  4013c4:	bf e6 17 40 00       	mov    edi,0x4017e6
  4013c9:	31 c0                	xor    eax,eax
  4013cb:	e8 a0 f7 ff ff       	call   400b70 <printf@plt>
  4013d0:	48 8b 15 a9 13 20 00 	mov    rdx,QWORD PTR [rip+0x2013a9]
  4013d7:	be 04 00 00 00       	mov    esi,0x4
  4013dc:	48 89 e7             	mov    rdi,rsp
  4013df:	e8 fc f7 ff ff       	call   400be0 <fgets@plt>
  4013e4:	b9 03 00 00 00       	mov    ecx,0x3
  4013e9:	bf ee 17 40 00       	mov    edi,0x4017ee
  4013ee:	48 89 e6             	mov    rsi,rsp
...
Nahlásit jako SPAM
IP: 95.103.177.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #11
-
0
-

Tvou podtrzena cast (83C45866C3) bude nejspis znamenat:

83C458add esp,05866C3retn

- takze konec nejake fce

Pokud nemas primo nejaky disasm (treba navrhovany objdump), tak je problem najit zacatek nejake fce, od ktere se odpichnout a zacit prekladat (abys nezacal prekladat od prostredka instrukce). Vetsinou se to da poznat podle typickych zacatku funkci, ale treba pri nejakem obfuscovanem kodu, to muze byt problem.

Nahlásit jako SPAM
IP: 212.4.138.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #12
-
0
-

Assembly != Assembler - jazyk != překladač...

Jak píši - neznám použitý Assembler - proto se ptám na ten editor. Další věc - editor - ne jen výpis přeloženého kódu...

Nahlásit jako SPAM
IP: 78.136.166.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #13
-
0
-

#11 Tom

Ale to je ten vtip - retn snad ani nikde jinde není. Minimálně já mám jen ret...

Nahlásit jako SPAM
IP: 78.136.166.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #14
-
0
-
Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #15
-
0
-

#13 Matěj Andrle
?? nerozumim. RET je stejne s RETN, pokud vim. Jaky mas tedy opravdu problem?

Nahlásit jako SPAM
IP: 212.4.138.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #16
-
0
-

Retn mi tedy nefunguje... (NASM)

Jak jsem psal - chtěl bych JSA editor souborů... (Místo strojového kódu JSA.)

Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #17
-
0
-

No ja mam pocit, ze proste hledas neco, co ti umozni editovat primo instrukce v assembleru, misto abys musel editovat jejich hexa hodnoty (opcody a parametry v hexa). Pokud to je jinak, tak me oprav a napis, co si presne ty predstavujes pod assemblerem, JSA a strojovym kodem, protoze mozna u tebe panuje male zmateni.

Pokud mam pravdu, tak zkus pohledat na googlu, jake jsou k dispozici linuxove disassemblery. Ja osobne pouzivam jen ty pro Win platformu (i na disassembling linuxovych ELFu).

Nahlásit jako SPAM
IP: 89.102.5.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #18
-
0
-

Jak jsem psal - i kdybych si tipnul, který překladač to je. A i kdybych zkousnul nečitelnost některých instrukcí, které jsou specifické pro daný překladač, nebude to editor... (Nechci jen přeložt, ale i měnit v JSA - přitom stále na úrovni strojového kódu.) Skutečně si nepletu JSA a MachineCode...

Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #19
-
0
-

Prekladace maji sva specifika, ale takova, aby se vyrazne menili pouzivane instrukce procesoru, to fakt ne. Vetsinou se lisi jen skladba sekci, zpusob linkovani, atp.

Muzes teda napsat priklad, jak vypada JSA, jak vypada strojovy kod a jak vypada assembler? Mozna se pletu v pojmech ja, tak abysme oba mluvili o tom samem.

Nahlásit jako SPAM
IP: 89.102.5.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #20
-
0
-

Assembly jazyk:

mov cx, 20 # 20 otáček

ddd:

int 10h # typické přerušení

loop ddd

Assembler je program...

A strojový kód:

000010

00000

00000

00000

10000

000000

Nevím kdo znás spojuje jazyk s překladačem... Neovládám dobře a ani nechci dobře ovládat strojový kód. Umím v JSA a rozhodně se v něm lépe pracuje. Chtěl bych jen změnit soubor na strojové úrovni s použitím JSA... (Aby editor přeložil soubor do JSA a po mé editace uložil zpět do strojového kódu...)

Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #21
-
0
-

Jak jsem psal - i kdybych si tipnul, který překladač to je. A i kdybych zkousnul nečitelnost některých instrukcí, které jsou specifické pro daný překladač

- promin, z tohdle jsem usoudil, ze to spojujes....nicmene nevadi. Zpet k tematu.....Jak tedy vypada ten JSA, ktery bys rad videl a menil? Ja se v tom porad ztracim...hod jeden priklad a snad se uz domluvime :) S editaci binarek a menenim jiz zkompilovaneho kodu pracuju denne, tak bych ti snad mohl poradit, ale porad fakt nevim, jak vypada to, co chces menit (JSA).

Nahlásit jako SPAM
IP: 89.102.5.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #22
-
0
-

Proč tu asi vytahuji HEX editory - chci to co dělá HEX editor jen místo strojového kódu JSA... Prostě změnit hotový program jako v HEX editoru - ovšem s čitelným kódem - s instrukcemi JSA...

Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #23
-
0
-

Jo uz asi chapu....chces proste menit "assembly language". Proste chces videt "mov eax, 0x50" a chces to zmenit na "mov ecx, 0x30" treba. Tak pokud pozadujes tool pro linux, tak tam covece nevim :( Ale pokud bys rozjel treba v nejakem Wine treba HIEW32, tak bys myslim byl velmi spokojeny...

Nahlásit jako SPAM
IP: 89.102.5.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #24
-
0
-

S těmi instrukcemi to tak je - každý assembler má pár vlastích jako třeba NASM. (Tedy příkazy, nebo jak to formulovat...)

Nahlásit jako SPAM
IP: 78.136.166.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #25
-
0
-

#23 Tom


Konečně. :) Prostě strojáku moc nerozumím - JSA je můj domov... Chci se poučit od existujících vyšších jazyků. (Jak řeší problematiku vyšších funkcí, jak propojují instrukce atd.)

Nerad do Unixu (momentálně dočasně OpenUnix8 - čekám na UnixWare) cpu Windows... Také moc nemusím X... (90% CLI.) Každopádně si to již píši sám... :) (V D2.)

Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
27. 5. 2013   #26
-
0
-

Nojo, me porad matlo to, ze neznas assembler, coz je termin v nasich koncinach nejcasteji pouzivany pro assembly language...proto sem porad nechapal, co chces menit jineho. Ale pokud si pises neco sveho, tak by ti mozna mohla pomoct knihovna libdasm, ktera by ti mohla ulehcit tu fazi zobrazovani.

Nahlásit jako SPAM
IP: 89.102.5.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
27. 5. 2013   #27
-
0
-

Mě se hlavně nechce psát konkrétní instrukce - nedají se nějak získat dynamicky? (Aby byly vždy aktuální.)

Nahlásit jako SPAM
IP: 78.136.166.–
Tom
~ Anonymní uživatel
434 příspěvků
28. 5. 2013   #28
-
0
-

Jako opcody (hexa kod, potazmo "strojovy kod" instrukce/prikazu) se uz z principu nemuzou menit, protoze by pak jednou zkompilovana binarka na novejsim procesoru nemohla fungovat. Takze co se tyka CPU, tak tam se muzes spolehnout na urcitou konstantost. Pokud ches databazi opcodu (pro prevod na instrukce/prikazy), tak ten libdasm, co sem ti doporucoval, ma v jednom z hlavickovych souboru seznam....takze to muzes klido prevzit. Pripadne intel manual....

Pripadne proste pro disasm (prevod strojoveho kodu na JSA) pouzij celou tu knihovnu libdasm....lepsi nez znova vynalezat kolo

Nahlásit jako SPAM
IP: 89.102.5.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
28. 5. 2013   #29
-
0
-

"protoze by pak jednou zkompilovana binarka na novejsim procesoru nemohla fungovat"

Není náhodou právě proto stroják potažmo JSA nepřenositelný? :)

Nahlásit jako SPAM
IP: 78.136.166.–
KIIV
~ Moderátor
+43
God of flame
28. 5. 2013   #30
-
0
-

#29 Matěj Andrle
technicky vzato tu urcita uroven prenositelnosti funguje.. alespon mezi stejnejma radama (ikdyz je pravda ze uz treba na nejnovejsich systemech spustis 16b aplikaci snad jen v simulatoru), pokud se pouzijou instrukce, ktere podporuje ten nestarsi pouzitej procesor...

ale jinak treba x51, pic, avr, arm - to ma vsechno pomerne rozdilny instrukce... je to pak lepsi programovat v C .. sice taky je to potom jeste relativne zavisly na platforme ale i to se da jeste jakz takz poresit nejakejma wrapperama

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
28. 5. 2013   #31
-
0
-

Tak vyšší jazyk závislý být nemůže - závislý je jen v místě převodu do MachineCode... (Parser, virtuální stroj,...)

Nahlásit jako SPAM
IP: 78.136.166.–
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
28. 5. 2013   #32
-
0
-

Parser ne - kompilátor - už nějak blbnu... :)

Nahlásit jako SPAM
IP: 78.136.166.–
KIIV
~ Moderátor
+43
God of flame
28. 5. 2013   #33
-
0
-

tady zavislej je... na urovni low level pristupu .. registry a tak... na jednocipy OS moc casto nenarves :)

(leda na ty army, kdyz mas dost ram)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Matěj Andrle
~ Anonymní uživatel
1347 příspěvků
28. 5. 2013   #34
-
0
-

Ale jak může být závisí na instrukci? To bych tam musel použít JSA a to není standardní případ...

Nahlásit jako SPAM
IP: 78.136.166.–
28. 5. 2013   #35
-
0
-

Překlad z vyššího jazyka na strojový kód je závislý na instrukční sadě procesoru a na jeho architektuře. Dobrý příklad je třeba prosté sčítání dvou operandů o velikosti 1 Byte (uint_8) na procesoru který má instrukci pro součet a na procesoru který algebru nemá a má jen instrukce pro logické operace. V prvním případě překladač přeloží jako uložit operandy do registrů nebo/a paměti (uspořádání závisí na architektuře např u 8051 musí být jeden operand v Akumulátoru), pak použije instrukci pro součet a uloží výsledek kam je dáno. V druhém případě začne stejně, ale součet musí popsat sekvencí instrukcí (součet je v podstatě kombinační log. funkce). V obou případech ve vyšším progr. jazyce napíšeš výsledek = operand1 + operand2.

Nejvíc jsou tyto rozdíly ve výsledném kódu patrné když použiješ překladač stejného výrobce pro různé architektury např. Keil uVision pro 8051 a AVR. Stejný zdrojový kód, naprosto rozdílné strojové kódy.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 26 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý