kategoria: Asembler
[#1] Assembler
nie znam się na Assemblerze, więc przyszło mi do głowy, że ktoś tutaj mi podpowie:

jak wczytać/disassemberować jakiś plik binarny/wykonywalny, wprowadzić kilka literówek i za chwile go ponownie skompilować do pliku wykonywalnego (w asmone chyba A sie asembleruje)


Ostatnia aktualizacja: 08.03.2024 13:05:47 przez Cezarykl
[#2] Re: Assembler

@Cezarykl, post #1

r dh0:jakis_plik.asm
a
wo ram:plik.exe
[#3] Re: Assembler

@Cezarykl, post #1

Jeśli tylko literówki (beż zmiany długości stałych tekstowych - czytaj bez przesunięć), to może edytorem hex podobnie jak opisałem w tym wątku.
1
[#4] Re: Assembler

@sq7bti, post #3

to jest wrecz wskazane, bo nie masz gwarancji ze kod po zassemblowaniu bedzie dzialal identycznie
1
[#5] Re: Assembler

@juen, post #4

Jeśli tylko literówki (beż zmiany długości stałych tekstowych - czytaj bez przesunięć), to może edytorem hex


no i w tym jest problem, że 1 znak jest więcej do zmiany (dłuższa nazwa),
więc hex edytor nie za bardzo pomoże.

r dh0:jakis_plik.asm
a
wo ram:plik.exe


rb dh0:jakis_plik.EXE
i nie widzę kodu :(


Ostatnia aktualizacja: 08.03.2024 13:14:33 przez Cezarykl
[#6] Re: Assembler

@Cezarykl, post #5

A czy wiesz jak zbudowana jest funkcja, która z tego ciągu tekstowego korzysta? Bo może mieć sztywny rozmiar, i niekoniecznie skanować tekst do znaku końca ciągu.

W Asm-One masz Monitor i mozliwość wklejania zdeasemblowanego kodu do swojego programu.

Najpierw musisz wczytać plik za pomocą odpowiedniej funkcji w zależności od rodzaju pliku. Funkcja poda Ci pod jaki adres go załadowała.

Następnie wpisujesz polecenie:

ID - wklei kod spod podanego obszaru w pamięci (wkleja wszystkie lub tylko używane etykiety),
IH - wklei dane DC w postaci szesnastkowej,
IN - wklei dane DC w postaci znaków ASCII.

Po modyfikacji kodu/danych możesz zasemblować kod i zapisać w postaci binarnej/pliku wykonywalnego.

Wydaje mi się, że najwygodniej gdyby program wykonywalny był podzielony na sekcje (kod, dane) widoczne z poziomu chunków. Wtedy zdecydowanie łatwiej go zbadać i nanieść modyfikacje do danych.

Ostatnia aktualizacja: 08.03.2024 13:22:10 przez Hexmage960
[#7] Re: Assembler

@Cezarykl, post #5

ro nazwaplikuexe
czyli read object, o ile pamietam
ale nie wiem czy to sie tak da zrobic
wo
dziala tylko bodaj dla zasemblowanego kodu.
Wiec raczej musisz uzyc Resource'a v5 lub v6
Zdeasemblowac plik exe.
Zaladowac pod edytor np. CED
zeobic zmiany
I dopiero to co Juen napisal zrobic.
1
[#8] Re: Assembler

@Don_Adan, post #7

na aminecie jest sobie programik GetSCSI (bez kodu źródłowego, wielkości 776bajtów)
zgrywa on scsi.device do pliku scsi.device w aktualnym katalogu

chcę zmienić na inną nazwę, aby zgrać inny device do pliku :)

ktoś coś pomoże jak to zrobić?
:)
[#9] Re: Assembler

@Cezarykl, post #8

Taki mały programik to pewnie wystarczy wczytać za pomocą RO i zdeasemblować za pomocą ID. Pytanie po co Ci potrzebny jakiś device z ROM w formie pliku?
[#10] Re: Assembler

@Cezarykl, post #8

Jaką masz pewność że zmiana nazwy, jeśli nawet byłaby możliwa, spowoduje odczytanie danego DEVICE i zapisanie do pliku , tak jak w przypadku scsi.device, dla którego ten program powstał ?

Zobacz program Romsplit
[#11] Re: Assembler

@Norbert, post #10

nie mam,
ale na tym polega nauka i eksperymenty.


ps.
RomSplit działa tylko z kickstartami
a to nie jest w kicku,


Ostatnia aktualizacja: 08.03.2024 16:25:47 przez Cezarykl
[#12] Re: Assembler

@Cezarykl, post #8

Co to znaczy do pliku? Do pliku binarnego? I z kazdego ROM-u rypie?
Najprosciej to bylo odpalic SysInfo.
Zobaczyc pod jakim adresem jest ten device, bo chyba SysInfo to wyswietla.
Uruchomic Asmone.
i wpisac
wb startadres endadres
albo to bylo
wb startadres dlugosc
tylko jak masz MMU aktywne, to moze sie burzyc, wiec trzeba je wylaczyc, czyli bez s-s.

Ewentualnie sprobuj nazwe scsi.device zamienic na taka jaka szukasz. Ale ze ta nowa nazwa jest dluzsza o 1 bajt, to jeszcze zero daj na jej koncu. Moze zadzialac, zalezy jak to jest napisane.
Ale jak chcesz cos lepszego to ReSource, CED i asembler do uzycia.
776 bajty to jest malo.
[#13] Re: Assembler

@Don_Adan, post #12

zwykłe device i library są plikami binarnymi
:)

gdzie szukać / skąd zassać te ReSource ?



Ostatnia aktualizacja: 08.03.2024 16:35:43 przez Cezarykl
[#14] Re: Assembler

@Cezarykl, post #13

Zalezy od definicji, kazdy plik to jest plik binarny. Pliki tekstowe to tez sa pliki binarne. Amigowe exeki tez, ADF-y tez, MOD-y tez itp. Ale jesli napiszesz "Amigowy exek" lub "Atari ST exek" "Mac exek" itp to od razu wiadomo o jaki rodzaj pliku chodzi. A device i library to sa pliki binarne (te sa w kickstarcie) albo pliki exe (te sa w systemie w libs: i devs:) i to nie sa takie same pliki, jesli chodzi o ich uzywanie.
A ReSource powinien byc pewnie w TOSEC tylko nie w grach, a w uzytkach.
[#15] Re: Assembler

@Don_Adan, post #14

ReSource
deassebluje mi ten plik i wychodzi w kilku miejscach coś podobnego:
ORI.B	#????$F3,D0
	ORI.B	#????$E9,D0
	BGT.B	????
	BVS.B	????
	BGE.B	????
	????
	ORI.B	#????$6E,D0


no i oczywiście nie da się tego skompilować.
:(
lipa
[#16] Re: Assembler

@Cezarykl, post #15

Bo zaladowales ten plik jako plik binarny, a jako nie plik exe (object).
To jest po prostu naglowek Amigowego exeka, i tyle.
$000003F3 to sa 4 pierwsze bajty w kazdym Amigowym pliku exek.
[#17] Re: Assembler

@Cezarykl, post #11

RomSplit działa tylko z kickstartami
a to nie jest w kicku,

A niby gdzie jest ten plik.?

Dlaczego przyjąłes że zmiana nazwy device w programie GETSCSI spowoduje, że zostanie ściągnięte "twoje" device?
Scsi.device jest właśnie w kickstarcie.
[#18] Re: Assembler

@Don_Adan, post #16

plik jako plik binarny, a jako nie plik exe (object)


teraz wykłada się na tym:

expansionlibr.MSG	db	'expansion.library',0,0
	db	0
	db	12
	db	'n',0
	db	'$',0
	db	$14
	db	'e'
	db	4
	db	'Nî˙ÜNu'
[#19] Re: Assembler

@Cezarykl, post #18

teraz wykłada się na tym:


Ulżę ci w bólu... 👉 KLIK
[#20] Re: Assembler

@majster, post #19

hehe, super :)
prawdziwy z Ciebie majster , błąd w linii 173

macie może inne, podobne przykłady kodu źródłowego do nauki ?



Ostatnia aktualizacja: 08.03.2024 22:07:41 przez Cezarykl
[#21] Re: Assembler

@Cezarykl, post #20

Tak przegladajac ten kod, po tylu latach przerwy. To tworzy on exeka z binarnego scsi.device, ale raczej na pewno z jego konkretnej wersji, bo dodaje 5 stalych relokow. Wiec Ci sie raczej nie przyda do niczego innego. Nie porownywalem scsi.device pod wzgledem relokacji, byc moze wszystkie wersje od z kickow od 2.0 do 3.1 maja relokacje w tym samym miejscu. Ten device, ktory chcesz rypnac, musialby byc bardzo podobnie napisany, zeby ten programik zadzialal. Tzn. ze oprocz tych 5 relokacji, musi byc w pelni PC relative.
[#22] Re: Assembler

@Cezarykl, post #18

Tez cos zle zrobiles. Exek nie moze startowac od tekstu typu "expansion.library" .
Po pierwsze zmien w opcjach Resource asembler, bodaj na MetaCompo, czy jakos podobnie.
Tak zeby zamiast "db" bylo "dc.b"
A po drugie, jezeli to co widzisz to nie jest tekst ascii. To przesuwasz w dol, i zmieniasz typ danych w opcjach ReSource na kod lub dane. Musisz sie nauczyc rozrozniac kod od danych innego typu.

Ostatnia aktualizacja: 08.03.2024 22:27:03 przez Don_Adan
[#23] Re: Assembler

@Don_Adan, post #22

tu są źródła i w nich coś jest źle !

https://pastebin.com/RzVFxNEN

po wstawieniu kilku średników, w linijkach z błędami, kompiluje się OK,\
teraz tylko sprawdzę czy działa toto OK.
[#24] Re: Assembler

@Cezarykl, post #23

Resource pliku to nie sa jego zrodla, tylko jego wsteczna inzyneria.
Jak chcesz sie uczyc to najpierw naucz sie obslugi Resource'a, tak zeby otrzymac podobny plik tekstowy do tego od majstra.
Tylko on uzywal jakiegos innego deasemblera, wiec beda niewielkie roznice, jesli chodzi o komentarze, labele czy Section.
Ale jesli chodzi o sam kod to powinien wygladac podobnie.
Potem staraj sie ten plik zasemblowac i powinienes otrzymac dokladnie taki sam plik jesli chodzi o jego dlugosc.
A jezeli autor programu tez uzywal Asmone'a to plik powinien byc tez identyczny jesli chodzi o jego CRC.
Jak uzyskasz taki sam plik po asemblacji jak plik zrodlowy tzn. ze zrobiles prawidlowy resource.
I wtedy mozesz zaczac robic zmiany w kodzie.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem