hex file olvasás

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

hex file olvasás

Hozzászólás Szerző: szovhoz »

azt szeretném megtudni hogyha a procimból kiolvasom a hex filet akkor hogyan tudnám azt decompile-olni bascomba?
Hooligan01

Hozzászólás Szerző: Hooligan01 »

Megközelítőleg sehogy.
Hooligan01

Hozzászólás Szerző: Hooligan01 »

Bascomba, tehát basic nyelvre, szép beszédes változókkal (kommentezve - lol) esély nincs rá, ez talán logikus is.

Ha konyítasz az assembly-hez, (~ 10 éves rutin) akkor van értelme ilyesmin munkálkodni... persze csak ha megéri...

Példának egy nagyon egyszerű kis progi visszafejtése:

Kód: Egész kijelölése

$regfile = "attiny2313.dat"
$crystal = 20000000

Config Portb = Output

Dim A As Byte

Do

For A = 0 To 255 Step 1
   Portb = A
Next A

Loop

End
És az eredmény disassembly után:

Kód: Egész kijelölése

; byte constants:
;
k00	= 0x00	;
k01	= 0x01	;
k1F	= 0x1F	;
k60	= 0x60	; '`'
k7E	= 0x7E	; '~'
kB8	= 0xB8	; '¸'
kC0	= 0xC0	; 'Ŕ'
kDF	= 0xDF	; 'ß'
kF7	= 0xF7	; '÷'
kFF	= 0xFF	; '˙'
;
; io register addresses:
;
p17	= 0x17
p18	= 0x18
p21	= 0x21
p34	= 0x34
p3D	= 0x3D
;
; bit numbers:
;
b0	= 0x00
b1	= 0x01
b2	= 0x02
b3	= 0x03
b4	= 0x04
b5	= 0x05
b6	= 0x06
b7	= 0x07
;---------------------------------------
;
L0000:
	rjmp	__start	; L0013
;	-----------	jump on last line
	reti
;----------------------*
; pc=0x2(0x4)
;
	reti
;----------------------*
; pc=0x3(0x6)
;
	reti
;----------------------*
; pc=0x4(0x8)
;
	reti
;----------------------*
; pc=0x5(0xA)
;
	reti
;----------------------*
; pc=0x6(0xC)
;
	reti
;----------------------*
; pc=0x7(0xE)
;
	reti
;----------------------*
; pc=0x8(0x10)
;
	reti
;----------------------*
; pc=0x9(0x12)
;
	reti
;----------------------*
; pc=0xA(0x14)
;
	reti
;----------------------*
; pc=0xB(0x16)
;
	reti
;----------------------*
; pc=0xC(0x18)
;
	reti
;----------------------*
; pc=0xD(0x1A)
;
	reti
;----------------------*
; pc=0xE(0x1C)
;
	reti
;----------------------*
; pc=0xF(0x1E)
;
	reti
;----------------------*
; pc=0x10(0x20)
;
	reti
;----------------------*
; pc=0x11(0x22)
;
	reti
;----------------------*
; pc=0x12(0x24)
;
	reti
;----------------------*
; pc=0x13(0x26)
;
__start::
; L0013:
	ldi	r24,kDF
	out	p3D,r24
	ldi	r28,kC0
	ldi	r30,kB8
	mov	r4,r30
	clr	r29
	mov	r5,r29
	ldi	r30,k7E
	ldi	r31,k00
	ldi	r26,k60
	ldi	r27,k00
	in	r24,p34
	mov	r0,r24
	andi	r24,kF7
	out	p34,r24
	ldi	r24,k1F
	out	p21,r24
	ldi	r24,k00
	out	p21,r24
	clr	r24
L0027:
	st	X+,r24
	sbiw	r30,k01
	 brne	L0027
;	-----		branch on last line
	clr	r6
	ldi	r24,kFF
	out	p17,r24
L002D:
	ldi	r24,k00
	sts	D0060,r24
L0030:
	lds	r16,D0060
	cpi	r16,kFF
	 brcs	L0036
;	-----		branch on last line
	 breq	L0036
;	-----		branch on last line
	rjmp	L003F
;	-----------	jump on last line
L0036:
	ldi	r26,k60
	ld	r24,X
	out	p18,r24
	ldi	r26,k60
	ld	r24,X
	subi	r24,kFF
	st	X,r24
	 brcc	L003F
;	-----		branch on last line
	rjmp	L0030
;	-----------	jump on last line
L003F:
	rjmp	L002D
;	-----------	jump on last line
	cli
L0041:
	rjmp	L0041
;	-----------	jump on last line
; pc=0x42(0x84)
;
L0042:
	sbiw	r30,k01
	 brne	L0042
;	-----		branch on last line
	ret
;----------------------*
; pc=0x45(0x8A)
;
	set
	bld	r6,b2
	ret
;----------------------*
; pc=0x48(0x90)
;
	clt
	bld	r6,b2
	ret
;----------------------*
; pc=0x4B(0x96)
;
__text_end::
;
; last flash byte address = 0x0095
; last flash word address = 0x004A
;---------------------------------------
	.area	bss (abs)
	.org	0x0060
;
__first_bss::
;
D0060:
;
__last_bss::
;
; last lds/sts data byte at 0x0060
;---------------------------------------
;<eof>
Szóval jó szórakozást :twisted:

Bocs hogy ilyen hosszúra sikerült :)
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

és akkor hex-ből vissza fordtani bármilyen programozási nyelvre?
Hooligan01

Hozzászólás Szerző: Hooligan01 »

Csak assembly-be, tehát gépi kódba. Ezt eszi a kontroller...

Ez a fentebb visszaforgatott hex:

Kód: Egész kijelölése

:1000000012C0189518951895189518951895189563
:100010001895189518951895189518951895189578
:100020001895189518958FED8DBFC0ECE8EB4E2E06
:10003000DD275D2EEEE7F0E0A0E6B0E084B7082E05
:10004000877F84BF8FE181BD80E081BD88278D934C
:100050003197E9F766248FEF87BB80E080936000DB
:10006000009160000F3F10F009F009C0A0E68C91EC
:1000700088BBA0E68C918F5F8C9308F4F1CFEDCF15
:10008000F894FFCF3197F1F70895689462F80895D6
:06009000E89462F80895F7
:00000001FF
Egy programozási nyelv általában "magas szintű". Tehát magát a nyelvezetet a fordító alakítja a céleszköz számára ehetővé.
Még az assembly-ben írt programok is beszédesek az ember számára, hiszen jellegzetes változóneveket használhatsz, struktúráltan írhatod meg a programodat, ilyesmi.

Na ez disasm után felejtős. Elég száraz anyag a végeredmény... :twisted:

Tehát legalább 1 percig törd a fejed, vajon mivé lehet ezt még visszaforgatni, ismerve az architektúrát amire készült.

De mivel szinte semmi sem lehetetlen, így ez sem. Csak ember legyen a talpán aki átlátja az eredményt :)
Hooligan01

Hozzászólás Szerző: Hooligan01 »

Egyébként ezen az egyszerű kis példán szerintem tök jól el lehet igazodni, csak a változókat értelmesen át kell nevezni valami emberibbre. :)
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

Már csak egy kérdésem van mivel teszed át assemblybe? nekem az is jó volna anno tanultuk a pollackon.
Hooligan01

Hozzászólás Szerző: Hooligan01 »

Gugli a barátod, wiki a barátnőd....

Csak egy példa a sok közül:
http://avr.jassenbaum.de/ja-tools/reavr.html
Avatar
qwertzu
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2008. március 8. szombat, 7:00

Hozzászólás Szerző: qwertzu »

Kérdés.Ha csak a HEX van meg,akkor azt hogyan tudom az avr-be progizni?(Attiny2313)
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

Hozzászólás Szerző: norbi »

AvrOsp, AvrProg, Bascom beépített programozója....
Avatar
Bence
Tranzisztorgyógyász
Hozzászólások: 166
Csatlakozott: 2007. október 30. kedd, 6:00

Hozzászólás Szerző: Bence »

PonyProg, (én azt használom egyébként, nem a Bascom-ot).
Bence
Avatar
norbi
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2006. augusztus 3. csütörtök, 6:00

Hozzászólás Szerző: norbi »

A Ponyról már hallottunk érdekességeket, azért nem írtam oda. 8)
Avatar
qwertzu
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2008. március 8. szombat, 7:00

Hozzászólás Szerző: qwertzu »

van STK200 azzal megpróbálom hátha összejön.eddig Bascom-al "dolgoztam" de ez a hex file kifogott rajtam.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Biztos HEX?

Bascom, mint programozó ->
http://avr.tavir.hu/modules.php?name=Co ... age&pid=49


Van olyan HEX, ami érdekes. Pl mert kisebb chipbe akarod beletuszkolni, mint amihez kitalálták, és a Flash területet túlnövi.... Vagy EEPROM-ként akarod a Flash métretnyit beégetni....


A Pony tényleg felejtős.....
Hacsak nem sok IC-d van, és nem baj, ha 1-2 meghal a kísérletek alatt.....
Avatar
Bence
Tranzisztorgyógyász
Hozzászólások: 166
Csatlakozott: 2007. október 30. kedd, 6:00

Hozzászólás Szerző: Bence »

Nekem még nem halt meg Pony alatt IC-m. A biztosíték biteket Bascom alatt állítom, de a programot Ponyval égetem, mert nekem a Bascommal nem sikerült mindig.
Bence
Válasz küldése