gcc-Frage
-
Alle Strings werden im Binary als "plain text" gespeichert.
$ cat > foo.c #include <stdlib.h> #include <stdio.h> int main() { printf("foo bar baz\n"); system("echo 'foo bar baz'"); } $ gcc foo.c $ strings a.out /lib/ld-linux.so.2 __gmon_start__ libc.so.6 _IO_stdin_used puts system __libc_start_main GLIBC_2.0 PTRh [^_] foo bar baz echo 'foo bar baz' $ ./a.out foo bar baz foo bar bazAber auch eine "Verschlüsselung" bringt natürlich nichts. Einerseits steht der Schlüssel dafür ja eh im Quellcode und andererseits ist es auch kinderleicht auszulesen, was du an system übergibst.
$ strace -f ./a.out 2>&1 | grep "/bin/sh" [pid 11286] execve("/bin/sh", ["sh", "-c", "echo \'foo bar baz\'"], [ /* 28 vars */]) = 0<edit>
Ups, da war lagaloplex ein bisschen schneller.
</edit>
-
Aaah, ok, verstehe, danke euch Beiden!
Was mich nur wunderte, wenn ich ein xbeliebiges Programm-binary mit einem Texteditor öffne, dann steht da nur cryptischer Zeichensalat drin und wenn ich meines im Texteditor öffne, stehen da die System-Anweisungen im Klartext drin!
-
Also die normalen Strings sieht man in jedem Programm. Es kann aber durchaus sein, dass dein Programm so klein ist und Scripte nun wieder sehr lange Strings sind, dass einfach das Verhältnis etwas anders ist

Normal sind auch die Strings alle in einer Section eher am Ende der Datei.Das Programm
stringsist ganz hilfreich Strings zu erkennen.
(strings /bin/echogibt zum Beispiel auch den Hilfetext und so aus)Aber ganz davon abgesehen ist es sehr schlechter Stil ständig
systemzu benutzen. Viele Aufgaben lassen sich direkt und einfach in C lösen, für anderen muss man schon etwas mehr Aufwand treiben.
Frage ist natürlich auch, was das Programm überhaupt macht.
-
lagalopex schrieb:
Also die normalen Strings sieht man in jedem Programm. Es kann aber durchaus sein, dass dein Programm so klein ist und Scripte nun wieder sehr lange Strings sind, dass einfach das Verhältnis etwas anders ist

Jo, ist mir dann auch aufgefallen

Normal sind auch die Strings alle in einer Section eher am Ende der Datei
Stimmt!
Das Programm
stringsist ganz hilfreich Strings zu erkennen.
(strings /bin/echogibt zum Beispiel auch den Hilfetext und so aus)Guck ich mir mal an, danke!
Aber ganz davon abgesehen ist es sehr schlechter Stil ständig
systemzu benutzen. Viele Aufgaben lassen sich direkt und einfach in C lösen, für anderen muss man schon etwas mehr Aufwand treiben.Bei Shellscripts bin ich nur besser als bei C

Frage ist natürlich auch, was das Programm überhaupt macht.
Nix wildes eigentlich! Ein bisschen locate, grep, sed, awk, cp.
-
plumps34 schrieb:
Frage ist natürlich auch, was das Programm überhaupt macht.
Nix wildes eigentlich! Ein bisschen locate, grep, sed, awk, cp.
Dafür sind eigentlich Shell-Skripte erfunden worden

-
Dafür sind eigentlich Shell-Skripte erfunden worden

Weiss ich doch

Ich wollt halt nur ein binary draus machen, damit`s komfortabler ist und auch noch ein paar Vollzugsmeldungen OHNE Terminalfenster ausschmeisst - quasi `ne lütte "linux-exe"
-
plumps34 schrieb:
Dafür sind eigentlich Shell-Skripte erfunden worden

Weiss ich doch

Ich wollt halt nur ein binary draus machen, damit`s komfortabler ist und auch noch ein paar Vollzugsmeldungen OHNE Terminalfenster ausschmeisst - quasi `ne lütte "linux-exe"
Ich fände das eher unkonfortabler. Wenn es leicht in ein Shell-Skript umzusetzen ist, braucht man kein Binary. Denn mit dem Binary wirds (häufig) größer, architekturabhängig und schwerer anpassbar.
Und ohne Terminalfenster... schonmal
dialog(und seinen Varianten) gehört
Man kann schon ne Menge skripten (die Bash ist schon ziemlich mächtig und mit den Standard-Tools wirds noch besser) und häufig geht es leichter und schneller als ein Programm zu schreiben. Und genau für solche Aufgaben wurde das ja gemacht.
Aber es ist ja deine Entscheidung wie du es nun schlussendlich machst. Übung hattest du jetzt zumindest

-
Und ohne Terminalfenster... schonmal
dialog(und seinen Varianten) gehört
Klar! Damit mache ich auch viel, aber das läuft übrigens auch in einem Terminalfenster

Aber es ist ja deine Entscheidung wie du es nun schlussendlich machst. Übung hattest du jetzt zumindest

Genau - und das kann ja nie schaden

DANKE noch mal!
-
plumps34 schrieb:
Und ohne Terminalfenster... schonmal
dialog(und seinen Varianten) gehört
Klar! Damit mache ich auch viel, aber das läuft übrigens auch in einem Terminalfenster

Ich weiß jetzt nicht was du mit Terminalfenster meinst. Wenn ich nen Skript nehme (egal ob da jetzt
dialogaufgerufen wird), es ausführbar mache und mit der Maus draufklicke, wird das Skript ohne ein "Terminalfenster" ausgeführt. Also ohnedialogkriegt man nichts direkt davon mit, sonst wird ja nen Dialog angezeigt (je nach dem was mandialogaufträgt).
-
Ich weiß jetzt nicht was du mit Terminalfenster meinst.
Terminal = bash, shell etc.
Unter OS X heisst das Ding Terminal, Beim PC Eingabeaufforderung oder DOS-console, als externes ssh Proggi z.b. putty etc.Wenn ich nen Skript nehme (egal ob da jetzt
dialogaufgerufen wird), es ausführbar mache und mit der Maus draufklicke, wird das Skript ohne ein "Terminalfenster" ausgeführt. Also ohnedialogkriegt man nichts direkt davon mit, sonst wird ja nen Dialog angezeigt (je nach dem was mandialogaufträgt).Ja, bei Linux ist das so, aber z.b. bei OS X und auch noch manch anderen Unix-basierten Systemen nicht
