Programy
Konwerter obrazów do postaci ciągu heksadecymalnego i binarnego
Program w wersji alpha, posiadać może dużą liczbę błędów i niedociągnięć. Wszelkie uwagi mile widziane, w przypadku zainteresowania możliwy byłby rozwój aplikacji. Cechy użytkowe:- konwersja plików między kilkoma formatami (ograniczenie ze względu na rozdzielczość!)
- eksport obrazu (binarnych wartości poszczególnych pikseli, nie samego pliku) do postaci ciągu wartości heksadecymalnych (1 bajt/piksel, konwersja do postaci monochromatycznej w locie) lub binarnych (1 bajt/8pikseli, obraz konwertowany jest do postaci B/W z progowaniem jasności na poziomie 128/255)
PICtoC.zip (442kB)
Pseudo-terminal libusb
Aplikacja przypominająca typowy terminal COM, ale współpracująca z urządzeniami USB wykorzystującymi sterownik libusb (zalecana do współpracy wersja snapshot: libusb-win32-device-bin-20051120).2006.08.31 Dodana prezentacja odbieranych danych jako ciągu heksadecymalnego.
libusb_terminal_bin_20060418.zip (323kB)
libusb_terminal_bin_20060831.zip (334kB)
Kod źródłowy (BCB6 PE), GPL v2

Konwerter plików binarnych na tablicę C
Pliki wejściowe traktowane mogą być jako bajtowe, typu word oraz int (little endian). Program napisany ze względu na problemy ze znalezieniem aplikacji przetwarzającej na tablicę dane typu word. Możliwość ustalenia separatora między poszczególnymi elementami (domyślnie przecinek + spacja) oraz zawijania tekstu (domyślnie po 70 znakach).bin2hex.c
bin2hex.exe (26kB)
linux executable: bin2hex (12kB)
Konwerter kodu heksadecymalnego na plik
hex2bin.zipSkaner TCP
Pierwsze zetknięcie z Turbo C++, mały programik szukający w sieci lokalnej komputerów z otwartym wskazanym portem. Z nieznanych powodów problemy ze znalezieniem opcji linkowania statycznego (Linker/Linking/Use dynamic RTL + Packages/Build with runtime packages). Oprócz tego zaskoczyło mnie korzystanie z wątków: Synchronize(&UpdateCaption); oraz inna niż przy BCB4-6 postać funkcji wywoływanej przy OnTerminate wątku.skaner_tcp.zip (366kB)

AV to MAP
Program parsuje plik map generowany przez linkery Borlanda (sprawdzona zgodność z BCB6 i BDS2006/Turbo C++ Explorer, Detailed map file) próbując odszukać funkcję do której należy adres zawarty w komunikacie o błędzie typu Access Violation. Prawdopodobnie niewielkim nakładem pracy dodać można obsługę innych formatów plików map.Adres zawarty w komunikacie o błędzie AV zawiera użyteczną informację jedynie czasami - jeżeli błąd powstał w wyniku np. wywołania jakiejś funkcji winapi z nieprawidłowymi parametrami adres ten będzie jej adresem, a nie funkcji wywołującej. Jeżeli (szczęśliwie) błąd wygenerowany został bezpośrednio przez kod użytkownika, to adres funkcji generującej go będzie równy lub najbliższy mniejszy różnicy adresu zawartego w komunikacie o błędzie Access Violation i sumy adresu ładowania programu (Image Base, typowo 400000h) i przesunięcia kodu (Code Base, typowo 1000h).
Map Address <= AV Address - (Image Base + Code Base)
Niniejszy program ułatwia odnalezienie tej funkcji w pliku map.
AVtoMAP.zip (334 kB wraz ze źródłami)
AVtoMAP_test.zip (program generujący błędy do testów wraz z plikiem map, 383 kB)
Znacznie skuteczniejsze (nie wspominając o wygodzie) jest użycie narzędzi do śledzenia stosu - dla kompilatorów Borlanda JCL Debug, madExcept, EurekaLog.

Skype API - test komunikacji
Program demonstrujący komunikację z programem Skype z użyciem komunikatu WM_COPYDATA. Działanie programu jest analogiczne do dostępnego na stronie Skype przykładu example_win.zip, został jednak napisany w BDS2006/Turbo C++ Explorer.binarka: skype_test.zip (326 kB)
źródła: skype_test_src.zip (47kB), beerware
AudioScope
Drobna aplikacja udająca oscyloskop. Korzysta z interfejsu WAVE IN.audioscope.zip (340 kB wraz ze źródłami)

Turbo C++ (BDS2006) project cleaner

Proste narzędzie mające zastąpić pominiętą w BDS2006 funkcję "Clean Project". Usuwa wskazane, wybrane z zestawu typy katalogów i plików w celu przygotowania do zarchiwizowania lub publikacji, w tym ukryte katalogi __history. Wskazane ostrożne używanie i wykonanie kopii projektu przed użyciem.
turbocpp_clean.7z
Resolution
Narzędzie do szybkiej zmiany rozdzielczości ekranu. Pierwsze kliknięcie przełącza ekran na rozdzielczość 800x600, kolejne do na rozdzielczość domyślną jeżeli aktualna rozdzielczość jest taka jak żądana. Żądana rozdzielczość może być zmieniona z linii komend (skrót):resolution rozdzielczoscX rozdzielczoscYProjekt utworzony w Code::Blocks. resolution.zip
ECC DSA
Testowa aplikacja dla easy-ecc, zastosowana do generowania sygnatur w systemie licencjonowania.Wybór schematu licencjonowania dla drobnej aplikacji jest tylko pozornie prostym zadaniem. Funkcje hashujące i szyfry symetryczne są złym wyborem ze względu na to, że umożliwiają stworzenie key generatora - narzędzia bardziej akceptowalnego niż crack i zazwyczaj umożliwiającego bezproblemowy upgrade do nowszej wersji oprogramowania. Asymetryczne algorytmy szyfrowania i podpisywania są z drugiej strony dostępne zazwyczaj tylko jako część większych bibliotek jak OpenSSL czy Crypto++, których użycie zwiększa znacząco rozmiar aplikacji lub może być niemożliwe w zastosowaniach wbudowanych (np. kompilatory pozbawione obsługi wyjątków). Biblioteka easy-ecc (Kenneth MacKay) jest tu zdecydowanie pozytywnym wyjątkiem, oferując szyfrowanie/podpis eliptyczne (bardzo dobry stosunek bezpieczeństwa do długości podpisu) w formie pojedyńczego modułu C bez żadnych zewnętrznych zależności jak biblioteki do obsługi liczb arbitralnej długości.

ecc.zip
Low memory warning
Prosta, "bezokienkowa" aplikacja ostrzegająca przy pomocy głośnika systemowego o przekroczeniu założonego (90%) zużycia pamięci RAM. Konfiguracja może być zmieniona przez ponowną kompilację przy użyciu Code::Blocks/MinGW.memwarning.zip