Microsoft Excel

Herbers Excel/VBA-Archiv

Suchen & Ersetzen im Programmcode


Betrifft: Suchen & Ersetzen im Programmcode von: Jens
Geschrieben am: 09.08.2018 11:15:08

Hallo zusammen, gibt es die a) Möglichkeit in der VBA-Entwicklerumgebung im Programmcode Leerzeilen und auch Leerzeichen schnell zu löschen? Bspw. über Suchen & Ersetzen? ^p ging leider nicht. b) Gibt es eine gute Möglichkeit für Nonsensezeilen, in denen man etwas wichtiges gut verstecken kann? Das Ziel ist ein gewisser Schutz meines Aufbaues durch einen schwerer nachvollziebareren Aufbau (Obfuscation). Viele Grüße Jens

http://www.vba-forum.de/forum/View.aspx?ziel=46311-Suchen_&_Ersetzen_im_Programmcode

  

Betrifft: AW: Suchen & Ersetzen im Programmcode von: Martin
Geschrieben am: 09.08.2018 11:24:57

Hallo Jens,

es ist tatsächlich möglich mit VBA-Code auf den VBA-Code im VBE-Editor zuzugreifen. Aber ganz ehrlich: Lohnt sich der Aufwand wirklich? Ich rate dir von dem Aufwand ab.

Viele Grüße

Martin


  

Betrifft: AW: Suchen & Ersetzen im Programmcode von: Daniel
Geschrieben am: 09.08.2018 11:37:17

Hi

Programmcode ist nur Text.
Du kannst den Code kopieren, in ein beliebiges Bearbeitungsprogramm einfügen,dort bearbeiten und wieder zurückkopieren.

Geht auch in eine Exceltabelle.
Wenn du den Code dort eingefügt hast, kannst du bspw mit dem Autofilter nach Leerzeilen filtern und diese Löschen.

Eine weitere Idee wäre, z.B alle sprechenden Variablennamen durch eine Kombination aus ähnlichen Buchstaben (I und l) zu ersetzen.

llllllll(lllllllIlll, Illllllllll) = IIllllIl(IIIllllll, IlIlIIIII) 

Jede Variable wäre dann im Prinzip eine fortlaufende Binärnummer, je länger um so besser. VBA kann lange Variablennamen verarbeiten.

Wenn du den Code in eine Exceltabelle kopiert, kannst du ja ein Makro schreiben, dass solche Veränderungen durchführt.

Eine weitere Möglichkeit wäre, durch Goto-Sprünge den Ablauf durcheinander zu wirbeln, so dass man den Code nicht sinnvoll von oben nach unten lesen kann. Natürlich sollten auch die Sprungmarken nach oben genannten Prinzip benannt sein.

Fasse mit Doppelpunkt möglichst viele Programmzeilen zu einer langen Programmzeile zusammen.
Wenn dabei eine solche Zeile über die Grenze eines logischen Blocks hinaus geht, um so besser.



Gruß Daniel


  

Betrifft: Viel Spaß bei der Wartung danach ;-) von: Zwenn
Geschrieben am: 09.08.2018 11:55:54

Hallo

Klar kann man das Ausgangsmakro behalten und dieses dann warten. Aber bei jeder Änderung den ganzen Aufwand neu zu veranstalten? Die meisten Makros sind eher kurz, was den Quelltext angeht. Allein deshalb ist Obfuscation für VBA in meinen Augen völlig sinnfrei.

Abgesehen davon ist auch ein ordentlich strukturierter Quellcode für die meisten Anwender nicht nachvollziebar, weil die in der Regel nicht programmieren können. Wenn jemand unbedingt rausfinden will, was ein Programm macht, bzw. wie es das macht, dann nutzt dieser ganze HeckMeck sowieso nix. Egal für welche Programmiersprache und egal ob interpretiert oder compiliert. Man erhöht nur die Hürde.

Das ist natürlich nur meine Meinung :-)

Viele Grüße,

Zwenn


  

Betrifft: AW: Viel Spaß bei der Wartung danach ;-) von: Daniel
Geschrieben am: 09.08.2018 12:02:31

Hi

Deswegen ja die Idee mit dem Obfuskationsmakro.
Blöd isses natürlich, wenn man sich bei der Obfuskatin den Fehler einbaut.

Gruß Daniel


  

Betrifft: AW: Viel Spaß bei der Wartung danach ;-) von: Zwenn
Geschrieben am: 09.08.2018 12:55:38

Ja schon,

aber da z.B. Sprungmarken vorzusehen halte ich für einigermaßen kompliziert. Der Code soll danach ja noch laufen. Mag sein, dass es möglich ist, aber nach meiner (sehr vagen) Einschätzung dürfte der Aufwand das Ergebnis nicht rechtfertigen. Man bräuchte ja ein Programm, das mit jedem beliebigen Makrocode umgehen könnte.


  

Betrifft: AW: Dafür gibt's schon Fertiges... von: Michael (migre)
Geschrieben am: 09.08.2018 15:17:26

...falls es interessiert: zB https://www.spreadsheet1.com/unviewable-vba-project-app-for-excel.html
Aber Google bringt sicher noch andere fertige Obfuskatoren.

Im oben verlinkten Tool ist ein einfacher Obfuskator für VBA-Code dabei.

LG
Michael


  

Betrifft: AW: Viel Spaß bei der Wartung danach ;-) von: Daniel
Geschrieben am: 09.08.2018 15:25:22

Naja, die Sprungmarken müssten natürlich schon in den regulären Code eingebaut werden, das muss ha auch sinnvoll sein und funktionieren.

Ein Makro, welches in einem Code der in einem Tabellenblatt liegt, die Leerzeilen und Kommentare löscht, sowie die Variablennamen austauscht, sollte aber erstellbar sein.
Eigentlich ne schöne Fingerübung für jemanden, der sich in das Thema "bearbeiten von texten" einarbeiten will.

Gruß Daniel


Beiträge aus dem Excel-Forum zum Thema " Suchen & Ersetzen im Programmcode"