logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

zmiana napisu startowego w pliku hex

bogon.m 10 Lis 2009 12:57 7426 15
  • #1 7240493
    bogon.m
    Poziom 11  
    Witam !
    W gotowym programie ( nie mam dostepu do zrodel, tylko hex), chciabym zmienic jedna stala. Po desasembleracji w avrstudio znalazlem to, co chcialem. Nie wiem jednak jak to zmienic. po konwersji hex na bin wogole nie moge sie zorientowac o co chodzi. Czy moge prosic o podpowiedz?
    Znalazlem jeszcze opis formatu intel hex, ale w pliku nie moge znalezc adresu, ktory mi wyskoczyl w avrstudio. Probowalem nawet w programie IDA Pro. Tam odczytuje plik hex tak jak tego sobie zycze, jednak nie potrafie sobie poradzic ze zmiana wartosci tej stalej.
    Z gory dziekuje.
  • #2 7240583
    Freddy
    Poziom 43  
    No to zrób deasemblację zmień i skompiluj ponownie.
    Zmiana w HEX nie jest taka prosta, są sumy kontrolne.
    Zobacz tutaj
  • #4 7240987
    bogon.m
    Poziom 11  
    W bascomie nie znalazlem narzedzia to takiej podmiany. Co do desasembleracji i ponownej kompilacji, to wydaje sie bardzo duzo pracy, poniewaz trzeba poprawiac adresy bezwzgledne w calym programie, inaczej assembler nie chce tego przelknac. Sumy kontrolne to pryszcz, poniewaz chce zmienic tylko jedna linijke. Moge sobie na kalkulatorze policzyc.
  • #5 7241170
    Freddy
    Poziom 43  
    To ta opcja którą dajesz "programuj" tam da się edytować pliki.
  • #7 7269470
    Freddy
    Poziom 43  
    CHyba Wam płacą za reklamę tego edytora, w tym miesiącu już trzeci raz widzę link do niego :)
    Kolego djkamilex :arrow: sama zmiana w HEX nic nie da !!!
    Już to pisałem kilka postów wcześniej, w plikach Intel HEX są sumy kontrolne !
  • #8 7270931
    Mad.
    Poziom 18  
    Freddy dobrze radzi. Niedawno coś takiego robiłem na laborce (uP 8051). Nie wiem na ile kolega ma rozbudowany program, oraz na ile zna dane rozkazy dla użytego procesora ;) Jeśli potrafisz odnaleźć rozkaz oraz stałą od niego, to edycja hexa nie jest trudna. Wystarczy zmienić jej wartość, a następnie samemu policzyć sumę kontrolną na końcu danej linii w intel hex. Przykład z 8051, program pisany w asemblerze, a następnie zapisany w intel hexie:

    :10000000750850750952750A4F750B43750C457587

    Pierwszy pogrubiony fragment, to rozkaz nr 75 (czyli MOV), zapisujemy do komórki nr 08, wartość 50 (stała). Wystarczy zmienić wartość 50. Następnie, należy poprawić sumę kontrolną - drugi pogrubiony fragment. Jak liczyć sumę kontrolną, można spokojnie znaleźć na necie. Nie jest to trudne.
  • #9 7271127
    xury
    Specjalista automatyka domowa
    Nie wiem jak to ma się z uC AVR, ale np. na ARM jest wykaz tzw. OPCODE i można podmieniać w skompilowanych plikach bin bez potrzeby liczenia sum kontrolnych. Często tak np. robi się cracki na Symbiana. Korzystam z IDA diassembler'a.
  • #10 7271524
    Freddy
    Poziom 43  
    xury napisał:
    Nie wiem jak to ma się z uC AVR, ale np. na ARM jest wykaz tzw. OPCODE i można podmieniać w skompilowanych plikach bin bez potrzeby liczenia sum kontrolnych. Często tak np. robi się cracki na Symbiana. Korzystam z IDA diassembler'a.


    Kolego nie nabijaj sobie punktów, zanim udzielisz odpowiedzi czytaj, odpocznij, przeczytaj jeszcze raz, zastanów się czy znasz odpowiedź i dopiero odpowiadaj.
    Poza tym
    Cytat:
    ...robi się cracki ...
    mówisz o narkotykach, łamaniu programów, czy o krakaniu wron ?
    Jeśli o tym ostatnim to dobrze, jeśli nie to szybko zmień forum. Tutaj takich nie tolerujemy.
  • #11 7271716
    xury
    Specjalista automatyka domowa
    Mój post był czysto informacyjny, wyluzuj. Pewnie też wszyscy użytkownicy forum używają legalnej wersji Windows, bo piszących z piratów też nie tolerujemy. Sam podałeś informacje pomocne do łamania oprogramowania mikrokontrolerów.
  • #12 7272156
    Freddy
    Poziom 43  
    xury napisał:
    Mój post był czysto informacyjny, wyluzuj. Pewnie też wszyscy użytkownicy forum używają legalnej wersji Windows, bo piszących z piratów też nie tolerujemy. Sam podałeś informacje pomocne do łamania oprogramowania mikrokontrolerów.

    Nie wiem jak ty, ale ja mam wyłącznie legalne oprogramowanie na komputerze. Używam go również do pracy, więc nie mogę sobie pozwolić na pirackie wersje.
    Gdzie niby są te informacje do łamania oprogramowania ?
    Zanim komuś coś zarzucisz, zastanów się.
  • #13 7272271
    xury
    Specjalista automatyka domowa
    Nie mam ochoty na takie dyskusje, nie zarzucam Tobie też, że używasz nielegalnego oprogramowania. Informację jaką podałeś to np. link do wikipedii, gdzie jest opisane liczenie sumy crc. Sama w sobie informacja ta to nic złego podobnie zresztą do mojej, więc dlatego pisałem byś wyluzował. To że napisałem "crack" to nie znaczy, że możesz mnie z forum wyganiać :)
    Wracając do tematu nie widzę sensu edycji hexedytorem plików hex, bo to pliki tekstowe.
    A to samo co w hex możemy podmienić i w skompilowanym bin, jeśli wiemy jak i wtedy nie musimy liczyć crc.
    Pisząc pierwszy post nie widziałem postu kolegi Mad, który to właśnie zademonstrował OPCODE na AVR.

    Poniżej lista OPCODE dla AVR
    http://sourceware.org/binutils/docs/as/AVR-Opcodes.html

    A jeszcze lepsza od samego Atmela
    http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf
  • #14 7272326
    Freddy
    Poziom 43  
    Zgadza się podałem na samym początku link do Wiki, gdzie jest również opisany format pliku IntelHEX. Myślałem, że wystarczy to autorowi, napisałem również, że edycja pliku hex nie jest taka prosta.
    Oprócz znajomości formatu pliku IntelHEX należy znać opcody procesora, o czym Ty również pisałeś.
  • #15 7272364
    xury
    Specjalista automatyka domowa
    No to wszystko wyjaśnione :)
    Pozostaje tylko kwestia czy autor tematu da radę :P
    Do autora
    W IDA pro nie szukaj adresu w pamięci tylko adresu fizycznego, podświetl rozkaz i przejdź do hex view. Podświetli ci się na zielono to co musisz zmienić. Jak już pisałem lepiej diassemblować bin niż hex.

    Edit
    Właśnie z ciekawości pierwszy raz zdiassemblowałem kod dla avr i trzeba mieć hex i bin.
  • #16 7306051
    tmgofer
    Poziom 12  
    Co do sprawdzania integralności pliku HEX - polecam narzędzie avr-objcopy (dostępne w pakiecie WinAVR). Pozwala ono między innymi na sprawdzenie sum kontrolnych. Jeżeli wystąpi niezgodność (np. w wyniku ręcznej edycji pliku) program "wypluwa" na konsole numery linijek w których wystąpił błąd, oraz podaje jakiej wartości się spodziewał.

    Przykład - błąd w pierwszej linii pliku Firmware.hex
    
    D:\AVR\wysw_M16_LCD>avr-objcopy -I ihex firmware.hex
    
    BFD: firmware.hex:1: bad checksum in Intel Hex file (expected 18, found 34)
    avr-objcopy:firmware.hex: File format not recognized
    
    


    Wystarczy zamienić ostatni bajt w pierwszej linii z wartości 34 na 18 (oczywiście hexadecymalnie)...
REKLAMA