Zapis tekstu do pliku exe i odczyt w AutoIt.

0

Jak zapisać jakiś ciąg znaków w Delphi do pliku wykonywalnego exe, który został zapisany w AutoIT i to potem odczytać?

0

O ile dobrze zrozumiałem powyższe "pytanie" zadane nie wiadomo w jakimś dziwnym slangu [?] to ja bym zrobił tak. Zapisał bym ten tekst jako tak zwany overlay. Czyli w pliku exe pod offsetem RozmiarTegoPlikuExe - 1. I najlepiej w taki sposób aby najpierw zapisać tekst jaki chcesz, a później jego rozmiar rozmiar w typie liczbowym (typ liczbowy o rozmiarze zależnym od tego, jak długi tekst zapisujesz, ale lepiej na początku go na stałe sobie okreśłić).

Odczyt tekstu dokonujesz odwrotnie, czyli wpierw odczytujesz z pod offsetu RozmiarPlikuExe - 1 - SizeOf(TypZmiennejZawierajacejDlugoscTekstu) długość tekstu, następnie cofasz się o te długość i odczytujesz tekst. Nie używałem nigdy AutoIt, a nawet pod AutoHotKey'em miałbym problem z tym żeby to sprawnie odczytać.

Najlepiej zapis i odczyt zrobić sobie w WinAPI pod Delphi. Kiedyś takie coś pisałem na zlecenie z prostym szyfrowaniem z algorytmem a'la Szyfr Cezara. Do tego była możliowść zmiany ikonki dla generowanego pliku *.exe, który nie może być spakowany przed dodaniem overlay'a. Całośc jest po przemyśleniu banalna do napisania. Wystarczy skorzystać między innymi z takich funkcji WinAPI (opisanych oczywiście na MSDN'ie oraz na wielu stronach w Google) jak: CreateFile, GetFileSize, SetFilePointer, SetEndOfFile, WriteFile, ReadFile i CloseHandle.

A jeśli nie chce się Tobie kombinować samodzielnie, to ostał mi się jeszcze ten kod. Gdybyś był zainteresowany jego zakupem to załóż konto na tym forum i napisz do mnie prywatną wiadomość. Natomiast po informacje jak odczytywać Overlay z poziomu AutoIt, radził bym sięgnąc na oficjalne forum wsparcia tego projektu i języka skryptowego. Chociaż skoro w AutoHotKey'u da się używać funkcji WinAPI, to i z pewnością w AutoIt'cie też mozesz z nich skorzystać.

I na przyszłość pisz po polsku, bo to że korzystasz z języka skryptowego AutoIt, nie znaczy, że chcąć się komunikowac z innymi Użytkownikami Internet'u piszesz też w jakimś własnym skrypcie, a nie w normalnym języku.

0

Przepraszam, że mnie źle zrozumieliście, starałem się to wytłumaczyć najbardziej jak się da. Zacznę od początku.

Mam pewien programik napisany w Delphi, wykompilowałem go do .exe. Ten pliczek .exe został scryptowany pewnym crypterem, który został napisany w AutoIT.
Czyli na wyjściu (po scryptowaniu) nie mam tak naprawdę czystego pliku .exe z Delphi, tylko skrypt .exe AutoIT'a.

Teraz pliczek scryptowany (ten AutoIT) - do niego chcę dopisać pewne informacje zewnętrznym programem (generatorem plików), a po uruchomieniu pliku te dane odczytać.

user image

Czystym plikiem Delphi robiłem po prostu zapis (UpdateResource) do zasobów jako StringTable, a potem w programie robiłem odczyt (LoadString). Jednak jak plik jest skryptem AutoIT, wywalają błędy.

Jak te dane dopisać i je odczytać? Czytałem o overlay, ale konkretniej?

0
Zont napisał(a):

Jak te dane dopisać i je odczytać? Czytałem o overlay, ale konkretniej?

Konkretne informacje już podałem. Wyszczegółniłem dokładnie jakich funkcji API użyć. I wątpie czy ktoś poda Tobie tutaj gotowiec na tacy. Podawanie gotowców rozleniwia i niczego nie uczy. A jeżeli interesuje Ciebie kupno przykładowego kodu w WinAPI mojego autorstwa, który zapisuje oraz odczytuje overlay w Delphi, to tak jak wspomniałem 0 załóż tutaj konto i skontaktuj się ze mną przez prywatną wiadomość. Natomiast konkretnego rozwiązanie pod AutoIt lepiej spróbować uzyskać na oficjalnym forum supportu. A uprzedzając pytania, dlatego oferuje ten kod na sprzedaż, ponieważ był pisany kiedyś na zlecenie dla osoby, która kombinowała podobnie jak Ty, tylko bez potrzeby użycia AutoIt. Chcę być wobec tej osoby fair i nie oferować za darmo na tacy, to za co ktoś już płacił. I oczywiście gotowców między innymi ze wspomnianych powyżej względów nie udostępniam już od jakiegoś czasu.

0

Nie wiem czy chodzi ci o to samo, bo mam takie coś (funkcje nie są pisane przeze mnie):

Zapis danych do exe

procedure SaveToFile(File_Name, Str: string); 
var F: File of Byte; I: Integer; 
begin AssignFile(F, File_Name); Reset(F); 
try Seek(F, FileSize(F) - SizeOf(I)); BlockRead(F, I, SizeOf(I));
if (I < SizeOf(I)) or (I > FileSize(F)) then 
I := 0; Seek(F, FileSize(F) - I); Truncate(F); BlockWrite(F, Str[1], Length(Str)); 
I := Length(Str) + SizeOf(I); BlockWrite(F, I, SizeOf(I)); 
finally
CloseFile(F);
end;
end;

Odczyt dopisanych danych z exe

function LoadFromExe(FName: string):string;
var F : file of Byte; i : Integer;
begin Result := ''; AssignFile(F, FName); FileMode := fmOpenRead; Reset(F);
try Seek(F, FileSize(F) - SizeOf(i)); BlockRead(F, i, SizeOf(i));
if (i < SizeOf(i)) or (i > FileSize(f)) then
Exit; Seek(F, FileSize(F) - i); SetLength(Result, i - SizeOf(i));
BlockRead(F, Result[1], Length(Result)); XXX := Result;
Split(XXX,0); 
Split(XXX,1);
finally CloseFile(F);
end;
end;

Takie coś niestety nie działa, gdy plik jest skryptem AutoIT.

0
Zont napisał(a):

Takie coś niestety nie działa, gdy plik jest skryptem AutoIT.

Mniej więcej o takie coś, tylko z użyciem wspomianych wcześniej funkcji WinAPI. I nie wiem dokladnie co robi i po co został tam użyty jakiś Split Mogę się tylko domyślać. Natomiast rozumiem, że przez gdy plik jest skryptem AutoIT chodzi Tobie o skompilowany do postaci exeka skrypt? Czy po dodaniu do overlaya z tekstem w exeku na jego końcu faktycznie go widać pod na przykłąd podglądem w Total Commanderze lub innym filemanagerze albo pod jakimś Hex Edytorem?

A i przed chwilą sprawdziłem i niestety w przypadku AutoHotKey'a nie da się nic dopisać do overlaya ani rozpakować UPX'em z parametrem -d. onieważ inaczej po uruchomieniu podaje on informację, że jest corrupted i tyle. Nie wiem czy to co kombinujesz da się jakoś rozwiązać. Popytaj na oficjalnym forum supportu, o ile nie dążysz do jakiś działań szkodliwych dla użytkownika, to powinni Ci tam pomóc.

A w ogóle to czy nie możesz tego, co robi Twoj skrypt w AutoIt osiągnąc kodując w Delphi samodzielnie taki program? Wiem, że może użycie skryptu jest wygodniejsze, ale takie języki skryptowe i tak korzystają z funkcji WinAPI. Dlatego może warto spróbować napisać to samodzielnie i mieć nad tym wszystkim większą kontrolę. A wtedy możesz spróbować używać dopisków do overlaya albo aktualizować zasoby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1