Witam! Nie wiem czy się dobrze wyraziłem. Chodzi mi o to, że jak sobie otwieram mój program konsolowy to wszystki tekst zawarty w nim, który ma się wyświetlić lub nie jest widoczny w pliku EXE. (Zmieniam rozszerzenie np. na txt i notatnikiem go) Są też informacje o kompilatorze i wiele wiele innych. Jak temu zapobiec żeby nikt nie mógł właśnie otworzyć tak i se zobaczyć co tam jest. Może jakieś opcje kompilatora? Programuję w Code::Blocks.
To akurat jest bardzo rozległy temat. Po pierwsze, niepotrzebne zasoby tworzone przez niektóre kompilatory (na przykład Borland Delphi jest w tym mistrzem :D) można by wywalić za pomocą czegoś takiego jak ResHacker.
Program można spakować (i przy okazji ukryć wszystkie łańcuchy tekstowe) programami w stylu UPX (darmowy), AsPack (shareware), FSG, VMProtect (to chyba bardziej znane); inne: http://en.wikipedia.org/wiki/Executable_compression#Portable_Executable
Co do zabezpieczania kodu programu: nie da się zrobić tego idealnie, można tylko znacznie utrudnić pozyskanie kodu. Wpływa to jednak na łatwość użytkowania programu. Jako przykład można wziąć jakąkolwiek nowszą grę, z DRM-ami i tymi innymi "zabezpieczeniami". Efektem jest to, że grupka wyszkolonych reverserów (to tak się odmienia?) złamie program w mniej niż tydzień, a użytkownik końcowy, który grę kupił, ma same problemy.
Dzięki za wyjaśnienie problemu, popróbuję z tymi programami :)
Ja się dopiszę do tematu bo też mnie to interesuję.
Stringi można zmienić na coś zupełnie nie mówiącego nic jeśli by podglądać "exeka", a co z nazwami importowanych funkcji?
Jak się nie mylę, to po zakodowaniu/szyfrowaniu/itp. niektórymi (lepszymi?) packerami zostają tylko funkcje GetProcAddress
oraz LoadLibrary
(te dwie praktycznie muszą być statyczne); oprócz tego może zostają jakieś niewiele mówiące funkcje. A tak w ogóle, możesz pobrać sobie program typu Ollydbg/IDA (disassembler, ew. +debugger) i zrobić szybki podgląd.
Więc nie ma możliwości zrobienia tego bez użycia pakerów?
Szukałem na necie jakiegoś artykułu na temat działania pakerów jednak nie poszło mi to. Masz może jakieś źródło?
Ja jeszcze się tylko spytam. Chciałbym od razu po kompilacji szyfrować np. UPX'em, ale w Code::Blocks nie znalazłem nic, żeby coś odpalał po kompilacji. Jak to zrobić, że odpalają się wszystkie g++ itp. a na końcu upx.exe -parametry... (powinna być nazwa mojego projektu + ".exe")
.Czy jest to wykonalne? Bo za każdym razem tak szyfrować to [...]
Nie mam Code::Blocks, ale ze screenów widzę, że musisz wejść w "Project options" do zakładki "Pre/post build steps" i w "Post build steps" możesz wpisywać polecenia do wykonania po kompilacji.
Znalazłem, tylko te polecenia to jakie, DOS'owe? Czy w C
? Czy po prostu upx.exe -blabla
?
w C::B przejrzyj sobie menu tools i ConfigureTools.