Einfacher Textverschlüssler für .exe ... chr(x)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Einfacher Textverschlüssler für .exe ... chr(x)

Beitrag von Delle »

Hallo,

flog hier nichtmal ein Snippet rum, wo man seinen Text eingeben konnte und was einen String zurücklieferte, wo alle Buchstaben mit chr() codiert waren?

Eingabe: ABC
Programm liefert zurück: Chr(65)+Chr(66)+Chr(67)

Das dient dazu einfache Texte in einer .exe halbwegs unlesbar zu machen...
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Soweit ich weiß optimiert PB aber Chr(65) aber schon zum Byte 65, ohne
ein Aufruf zur Funktion CHR zu machen.
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Hm, geht eigentlich nur darum, dass "Newbies" mit TextEditor nicht einfach in die .exe schauen können. Sollte also Hex-Format oder sowas sein...

bla$="ABC" ---> in .exe lesbar
blu$=Chr(65)+Chr(66)+Chr(67) ---> nicht (wirklich) lesbar
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

> blu$=Chr(65)+Chr(66)+Chr(67) ---> nicht (wirklich) lesbar
doch, ist auch lesbar.
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Mist... wäre ja auch zu schön gewesen ;-/
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Liegt daran, dass PB erkennt, dass die 2 Strings den selben Inhalt haben
und dann gleich das ganze sogar noch ein Schritt weiter optimiert:

Code: Alles auswählen

; bla$ = "ABC"
  MOV    edx,_S1
  LEA    ecx,[v_bla$]
  CALL   SYS_FastAllocateStringFree
; blu$ = Chr(65) + Chr(66) + Chr(67)
  MOV    edx,_S1
  LEA    ecx,[v_blu$]
  CALL   SYS_FastAllocateStringFree    
Bild
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Deine Lösung?

Beitrag von hiltwin »

Ich stand vor dem gleichen Problem und hab die Caesar-Chiffre von NTC

http://www.purearea.net/pb/CodeArchiv/E ... Chiffre.pb

mal ein bisschen abgewandelt:

Code: Alles auswählen

kload = 5
Dim Language$(kload)
Dim Language1$(kload)
Restore BaseLanguage
For k=0 To kload
  Read Language$(k)
Next
abd = 132
For abc = 0 To kload
For Position.l=1 To Len(Language$(abc)) 
    z$=Mid(Language$(abc),Position,1) 
    var1=Asc(z$)+abd
    If var1>255 
    var1-256 
    EndIf 
    Language1$(abc) = Language1$(abc)+Chr(var1) 
Next 
Next

;---------------Dieser Text muss in das orignäre Programm zur Decodierung--------------
;abd=132
;For abc = 0 To kload
;abc$=""
;For Position.l=1 To Len(Language$(abc)) 
;   z$=Mid(Language$(abc),Position,1) 
;   var1=Asc(z$)+256-abd 
;   If var1>255 
;   var1-256 
;   EndIf 
;   abc$=abc$+Chr(var1) 
;Next 
;language$(abc) = abc$
;Next 
;---------------Ende Text muss in die Programmdecodierung--------------


For abc=0 To kload
language1$(abc) = "Data$ "+Chr(34)+language1$(abc)+Chr(34)
Next


  FF = CreateFile(#PB_Any, "spracheneu.txt") 
  
  If FF 
    
For abc=0 To kload
WriteStringN (language1$(abc))
Next

 CloseFile(FF) 
    
  Else 
    
    ; Couldn't create file 
    
  EndIf 

DataSection
BaseLanguage:
  Data$ "Abcdefghijklmnopqrstuvwxyundzett" ;0
  Data$ "Dein eigener Test"  ;1
  Data$ "Dein eigener Text"  ;2
  Data$ "Probier es aus" ;3
  Data$ "und noch einmal? " ;4
  Data$ "es reicht!"  ;5


  EndDataSection
  
Ich hab abd = 132 gewählt, weil evtl. ansonsten mache Zeichen als " wiedergegeben werden könnten.

Einfach die neu erstellte Datei spracheneu.txt öffnen und dann die Data$ in das eigene Programm kopieren und den Decodierer über die so erstellte Data laufen.

Herzlichen Dank an NTQ für die Vorarbeit :allright:
Antworten