Obsidian Notes alternative (Free Sync)?

Guten Tag liebe GF-Community!

Ich mochte Obsidian wirklich sehr weil Obsidian ein sehr umfangreiches Notes Programm ist womit ich in Zukunft gerne auf PC/Android gearbeitet "hätte" aber...

Obsidian ist auf einmal gar nicht mehr kostenlos

nach dem ich das vorher nach Monaten neu installiert und geshen habe. Das Synchronisieren funktioniert nicht mehr ksotenlos! Gar nicht mehr außer du bezahlst monatlich deine blöden 4,00 $.

Okay. 4,00 $ sind zwar nicht viel Geld aber als "nicht" Fan von Abos kratzt das sehr im inneren des Gehirnes. Ich hasse und verabscheue allgemein ABOS.

Jetzt weiss ich nicht wie es in Zukunft weitergehen soll. Ich hätte nämlich gerne diese Sync Option für beide Geräte aber sehe es echt nicht ein "nur" dafür zu zahlen damit ich meine Notizen "Synchronisieren" kann.

Deshalb bin ich nun auf der Suche nach einer Alternative die so wie Obsidian und kostenlos ist.

Klar hat es da "Notion" und an sich ist das auch nicht so schlecht aber irgendwie kann ich mich nicht ganz damit anfreunden auch wenn ich es vielleicht im Notfall verwenden muss da Obsidian die Sync Sperrt und Samsung Notes auf dem PC nicht Synct außer du hast ein Galaxy Book (hab ich aber nicht).

Standart Notes, Joplin, Milanote, Simplenote, Google Notes, One Notes sind zwar alles alternativen aber kommen nicht an den Umfang von Obsidian dran. Das macht Obsidian auch irgendwie so Einzigartig.

Kennt da wer Alternativen oder eine Möglichkeit die Notizen ohne Abo zu Syncen?

Viele herzlichen Dank im Voraus!

Mit freundlichen Grüßen

Robin | TechBrain.

Bild zum Beitrag
Computer, Handy, Arbeit, Windows, Microsoft, Office, App, Schule, Programm, Android, Notizen
Wie kriege ich mit ROP einen "/bin/sh" Pointer in rdi?

Ich versuche, rücksprungorientierte Programmierung (ROP) zu lernen.

Und zwar habe ich ein Programm mit einem Pufferüberlauf auf dem Stack, und ich möchte das Programm dazu bringen, /bin/sh zu öffnen.

Das geht mit dem execve Syscall, wenn ich die richtigen Instruktionen finden kann, um die Funktionsparameter vorzubereiten. Das ist die Signatur von execve:

int execve(const char *pathname, char *const _Nullable argv[], char *const _Nullable envp[]);

Also muss ich die folgenden Register setzen:

  • rax = 0x3b (Syscallnummer von execve)
  • rdi = "/bin/sh" Pointer
  • rsi = NULL
  • rdx = NULL

Die folgenden Instruktionen habe ich bereits gefunden:

pop rax ; ret
pop rdi ; ret
pop rsi ; ret
pop rdx ; ret
syscall

Ich kann also die Instruktionen und Registerwerte mit dem Pufferüberlauf auf den Stack schreiben und so meine Register füllen. Das Problem ist aber, dass ich einen "/bin/sh" Pointer in rdi brauche (also nicht "/bin/sh" im Register, sondern eine Speicheradresse, an der "/bin/sh" steht).

Ich kann natürlich "/bin/sh" in den Puffer auf dem Stack schreiben, aber leider ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Ich weiß, dass "/bin/sh" in libc vorkommt, aber auch dort ist die Speicheradresse jedes Mal anders und ich kenne sie vorher nicht.

Wie komme ich also an einen "/bin/sh" Pointer? Gibt es Tricks oder bestimmte Instruktionen, nach denen ich mich umsehen sollte?

hacken, Hack, Programm, programmieren, pointer, Assembler, Hacker, Hacking, Informatik, IT-Sicherheit, Shell, stack, x64, Exploit, hacken lernen, IT-Sicherheitsexperte, Register, Capture The Flag

Meistgelesene Fragen zum Thema Programm