Zmiana MaxLength kontrolki edit w exe

0

Witam, badal ktos kiedys, czy w pliku exe (przykladowo aplikacja delphi)
mozna zmusic kontrolke edit, ktora moze przyjac tylko jedna cyfre, aby przyjela dwie cyfry?
Przypuszczam ustawiono tam maxlength na 1...

Da sie bez ubersuper crackingu i asm?

0

Raczej się nie da. Bo z tego co mi wiadomo nie możliwe jest odwrócenie procesu kompilacji do kodu źródłowego. Ale może niech wypowiedzą się bardziej doświadczeni a szczególnie @olesio

0

Jeżeli zapisano to w delphi to odszukujesz RES formatki i zmieniasz w nim bez problem na dowolną wartość jednobajtową.

1

Jeżeli plik nie pakowany/szyfrowany i rzeczywiście zostało ustawione MaxLength w Object Inspector to nie ma żadnego problemu pod warunkiem że nie zmieni się liczba bajtów odpowiadająca limitowi czyli z 1 można bez problemu zmienić na max 255 (FF). Wtedy wystarczy zwykły Hex Edytor trzeba poszukać ciągu MaxLength dla odpowiedniego Edita i po prostu Edytować wartość.
hex.jpg
W przypadku gdy ilość znaków ma być większa i się nam "nie mieści" najprościej użyć jakiegoś narzędzia pozwalającego na edycję zasobów (swego czasu dobry był Resource Hacker obecnie pewnie jest wiele lepszych). Natomiast w przypadku gdy wartość ta zmieniona jest podczas działania programu czy to przez ustawienie właściwości MaxLength czy bezpośrednio komunikatem EM_SETLIMITTEXT trzeba to wywołanie znaleźć (najlepiej skorzystać z jakiegoś dekompilatora dla Delphi IDR lub trochę podstarzały DeDe) a później edytować odpowiednie bajty w hexedytorze.

0

Faktycznie zapomnialem o Resource hackerze- male ustrojstwo a skutecznie pomoglo zrobic co trzeba.

Kombinowalem na poczatku cos w stylu sendmessage - skoro da sie wysylac tekst do edita to moze mozna mu wysylac SetmaxLength(moze ma ktos na to przyklad jesli sie da)

Problem rozwiazany, gorzej by bylo jakby soft byl pisany w czyms innym albo juz w ogole gdyby byl jakos chroniony kod.

0

A tam @babubabu jaki ja tam doświadczony ;/ A co do pytania, to można jak radzi @kAzek. Z bardziej inwazyjnych technik to injekcja dllki w proces programu i subclasing tej kontrolki edycyjnej. I obsługa jej komunikatów po swojemu. Ewentualnie może mniej inwazyjne jednak też z użyciem dllki. Czyli próba spoofnięcia dllki (co ja kiedyś błędnie nazywałem wrrappowaniem dllki, więc art o tym raczej nie napisze jak się przymierzałem, bo technika opisana w sieci dość dokładnie).

Aby spoofnąc dllkę jest to nieco pracochłonne, bo trzeba zobaczyć sobie jakie dllki systemowe importuje ten program, wybrać taką która jest udokumentowana poprzez źródła VCL i ma namnniej exportów. A później zakodzić taką, która exportuje to co potrzeba. Czasem pamiętać o ewentualnym dodaniu indexów. Później w wątku podczepiamy się pod tę kontrolkę. Oczywiście do ustalenia uchwytu kontrolki odpowiednio enumerujemy wszystkie kontrolki - dzieci żądanego okna.

Ewentualnie inwazyjna technika z dllką, jeśli nie chcemy injectować, ani tworzyć takiej z masą exportów, ale za to reversujemy już wtedy, ale to nie jest trudne. Pokazałem to na swoim tutorialu na YT. Link na moim blogu. Także pod PE Editorem, dodajesz import do na przykład twoja.dll, exportującą jakąś funkcję ByleCoKolwiek i taką dodajesz pod PE Editorem. Wtedy już dllka robi to co chcesz w ramach tego wątku, oczywiscie musi istnieć w katalogu programu.

Niestety rozwiązanie te nadaje się tylko na niespakowany lub prawidłowo rozpakowany exek z prawidłową tablicą importów. niestety później często wieloma popularnymi packerami nie można wedle mojej wiedzy i testów tak zmodyfikowany exek spakować. A ostatni pomysł jaki mam trochę na około to napisać loader, który poprzez ReadProcessMemory / WriteProcessMemory znajdzie odpowiednie opcody jakie sugerował @kAzek do zmian i podmienił je. To wszystko co mogę wyjaśnić nie widząc tego programu.

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