Avatar billede jakob12345 Nybegynder
04. maj 2004 - 19:40 Der er 7 kommentarer og
1 løsning

Gemme data i exe

Jeg ved at man kan gemme data i resource filer som så bliver compilet med ind i exe filen. Men er det muligt at bruge disse data, ændre på dem, og så gemme dem i exe filen igen??

Dataen jeg skal have gemt er ting som feks passwords og lign. Og derfor ville det være nemmest hvis jeg ikke skal hen og kryptere og gemme i registrerings db eller i en anden fil.
Avatar billede Slettet bruger
04. maj 2004 - 20:14 #1
Umiddelbart nej, din exe er jo statisk når den er lavet.
Det du måske kunne gøre var at gemme disse ting i en fil, navnet bestemmer du helt selv, men du kan kryptere data'ene når du gemmer og dekryptere når du henter dem ind igen.
Avatar billede Slettet bruger
04. maj 2004 - 20:15 #2
Og jeg læste ikke dine sidste linier ordentligt :-)
Men det er efter min bedste overbevisning stadig et godt forslag :-)
Avatar billede jakob12345 Nybegynder
04. maj 2004 - 20:29 #3
Jeg tror også at jeg vil begynde at lave noget krypterings modul, men tak for hjælpen alligevel.
Avatar billede Slettet bruger
04. maj 2004 - 20:42 #4
Avatar billede martin_moth Mester
05. maj 2004 - 14:20 #5
En exe bliver jo netop kompilet så den kan køre uden at du har vb installeret. Og jeg vil æde min hat på, at det du forsøger derfor ikke er muligt, for du kan jo ikke kompile igen og igen.

Kun hvis du køre programmet fra VB, men det gør du vel ikkehver gang (så var der ikke brug for en .exe ;o)
Avatar billede _cyberdude_ Nybegynder
05. maj 2004 - 17:02 #6
martinm_moth.. det er forkert... har selv leget meget med det her... jeg ved så ikke om man kan vælge en "højre"/"bedre" kompilering end det jeg gør.. men når jeg kompiler bruger jeg settings: Compile to Native Code og Optimze for Fast Code, og der kan du åbne dit program med notepad og kigge i det, der er ikke så meget brugligt, men man kan se og ændre labels.caption, de skal bare være nøjagtig samme længde som den originale kompilet label caption var.. dette kan du udnytte ved at åbne den pågældne fil som binary access read og write... ser lige om jeg kan finde mit eksempel...

Kopiere dette ind i en notepad tekst, og gem det som form1.frm og form2.frm
Sorry, det er lidt dårligt skrevet, og lidt sjusket... kan nok forbedres, men det er lang tid siden jeg har lavet den... Start et nyt Project, og hent disse to forme ind i projektet, husk at sætte form1 til at være startup objekt, og så kompile den og prøv den, prøv så at skrive Regi i tekstboxen og trykke Save... det skulle stadig virke...
Form1: 'dette skal ikke kopieres med...

VERSION 5.00
Object = "{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"; "RICHTX32.OCX"
Begin VB.Form Form1
  Caption        =  "Form1"
  ClientHeight    =  1290
  ClientLeft      =  60
  ClientTop      =  450
  ClientWidth    =  4965
  LinkTopic      =  "Form1"
  ScaleHeight    =  1290
  ScaleWidth      =  4965
  StartUpPosition =  3  'Windows Default
  Begin VB.CommandButton Command1
      Caption        =  "Save"
      Height          =  375
      Left            =  2040
      TabIndex        =  8
      Top            =  720
      Width          =  1215
  End
  Begin VB.Timer Timer1
      Enabled        =  0  'False
      Interval        =  1
      Left            =  7440
      Top            =  6840
  End
  Begin RichTextLib.RichTextBox RichTextBox5
      Height          =  4095
      Left            =  3480
      TabIndex        =  7
      Top            =  4800
      Visible        =  0  'False
      Width          =  2775
      _ExtentX        =  4895
      _ExtentY        =  7223
      _Version        =  393217
      Enabled        =  -1  'True
      TextRTF        =  $"Form2.frx":0000
  End
  Begin RichTextLib.RichTextBox RichTextBox4
      Height          =  4215
      Left            =  360
      TabIndex        =  6
      Top            =  4800
      Visible        =  0  'False
      Width          =  3015
      _ExtentX        =  5318
      _ExtentY        =  7435
      _Version        =  393217
      Enabled        =  -1  'True
      TextRTF        =  $"Form2.frx":008B
  End
  Begin RichTextLib.RichTextBox RichTextBox3
      Height          =  3135
      Left            =  6720
      TabIndex        =  5
      Top            =  1560
      Width          =  3015
      _ExtentX        =  5318
      _ExtentY        =  5530
      _Version        =  393217
      Enabled        =  -1  'True
      TextRTF        =  $"Form2.frx":0116
  End
  Begin RichTextLib.RichTextBox RichTextBox2
      Height          =  3015
      Left            =  3360
      TabIndex        =  4
      Top            =  1560
      Visible        =  0  'False
      Width          =  3135
      _ExtentX        =  5530
      _ExtentY        =  5318
      _Version        =  393217
      Enabled        =  -1  'True
      TextRTF        =  $"Form2.frx":01A1
  End
  Begin RichTextLib.RichTextBox RichTextBox1
      Height          =  3255
      Left            =  240
      TabIndex        =  3
      Top            =  1440
      Visible        =  0  'False
      Width          =  2895
      _ExtentX        =  5106
      _ExtentY        =  5741
      _Version        =  393217
      Enabled        =  -1  'True
      TextRTF        =  $"Form2.frx":022C
  End
  Begin VB.TextBox Text1
      Height          =  495
      Left            =  120
      TabIndex        =  2
      Top            =  720
      Width          =  1695
  End
  Begin VB.Label Label2
      Caption        =  "Set:|                    "
      Height          =  495
      Left            =  2160
      TabIndex        =  1
      Top            =  0
      Width          =  2655
  End
  Begin VB.Label Label1
      Caption        =  "Label1"
      Height          =  375
      Left            =  0
      TabIndex        =  0
      Top            =  120
      Width          =  2535
  End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim b1() As String
Dim b2, b3 As String
Dim b4 As String
Dim b5() As String

Private Sub Command1_Click()
Close #1
Close #2
FileCopy App.Path & "\" & App.EXEName & ".exe", App.Path & "\temp.exe"
Open App.Path & "\temp.exe" For Binary Access Read As #1
If LOF(1) = 0 Then Exit Sub
Dim a1 As String
a1 = Space$(LOF(1))
Get #1, , a1
Close #1
Dim a3 As Long
Dim a4, a5, a6 As String
a3 = InStr(1, a1, "Set:")
a4 = Mid$(a1, 1, a3 - 1)
a5 = Mid(a1, a3 + 5 + Len(Text1.Text))
a6 = a4 & "Set:|" & Text1.Text & a5
Open App.Path & "\temp.exe" For Binary Access Write As #2
Dim a2 As String
a2 = a6
Put #2, , a2
Close #2
DoEvents
Shell App.Path & "\temp.exe " & App.EXEName & "|" & Form1.Top & "|" & Form1.Left, vbHide
End
End Sub

Private Sub Command2_Click()

End Sub

Private Sub Command3_Click()

End Sub

Private Sub Command4_Click()

End Sub

Private Sub Form_Load()

If Command <> "" Then
b4 = Mid(Command, 1, 7)
  If b4 = "slettemp" Then
b5 = Split(Command, "|")
Form1.Top = b5(1)
Form1.Left = b5(2)
DoEvents
On Error GoTo 1
Kill App.Path & "\temp.exe"
DoEvents
GoTo 2
1:
Timer1.Enabled = True
Exit Sub
2:
GoTo 3
  End If
 
Form2.Text1 = Command
Load Form2
Form1.Hide
Exit Sub
End If
3:
DoEvents

b2 = Label2.Caption
b3 = Right(b2, 1)
Do While b3 = " "
b2 = Mid(b2, 1, Len(b2) - 1)
b3 = Right(b2, 1)
Loop

b1 = Split(b2, "|")
  If b1(1) = "Regi" Then
Label1.Caption = "Registreret"
  Else
Label1.Caption = "Ikke registreret"
Text1.Text = b1(1)
  End If
End Sub

Private Sub Label3_Click()

End Sub

Private Sub Label2_Click()

End Sub

Private Sub Text1_Change()

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Command1.Value = True
End If
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
Form_Load
End Sub



Form2: 'dette skal ikke kopieres med..

VERSION 5.00
Begin VB.Form Form2
  Caption        =  "Form2"
  ClientHeight    =  6885
  ClientLeft      =  60
  ClientTop      =  450
  ClientWidth    =  7890
  LinkTopic      =  "Form2"
  ScaleHeight    =  6885
  ScaleWidth      =  7890
  StartUpPosition =  3  'Windows Default
  Visible        =  0  'False
  Begin VB.Timer Timer2
      Enabled        =  0  'False
      Interval        =  1
      Left            =  2400
      Top            =  2640
  End
  Begin VB.Timer Timer1
      Interval        =  1
      Left            =  840
      Top            =  2640
  End
  Begin VB.TextBox Text1
      Height          =  615
      Left            =  1320
      TabIndex        =  0
      Top            =  960
      Width          =  1935
  End
End
Attribute VB_Name = "Form2"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim a1 As Integer
Dim a2, a3, a4 As String
Dim b1() As String
Dim b2 As Integer

Private Sub Form_Load()
a1 = 1
End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub

Private Sub Timer1_Timer()
On Error GoTo 1
b1() = Split(Text1.Text, "|")
Do Until a1 = 2
a2 = App.Path & "\" & b1(0) & ".exe"
a3 = App.Path & "\" & "temp" & ".exe"
Kill a2
FileCopy a3, a2
a4 = a2 & " slettemp" & "|" & b1(1) & "|" & b1(2)
Shell a4, vbNormalFocus
a1 = 2
End
Exit Sub
Loop
1:
Timer1.Enabled = False
Timer2.Enabled = True
End Sub

Private Sub Timer2_Timer()
Timer2.Enabled = False
Timer1.Enabled = True
End Sub
Avatar billede fgsupermand Nybegynder
05. maj 2004 - 20:10 #7
jakob12345:
Ja det kan godt lave sig gøre, ved at åbne din exe fil og ændre noget af den statiske test der er i den, testen skal dog have samme længde som den man ændre. Det er en MEGET dårlig ide at gøre dette, og dataen skal adligevel krypteres (hvis det skal være sikkert)
Avatar billede _cyberdude_ Nybegynder
20. maj 2004 - 10:44 #8
har du prøvet det svar jeg gav??.. virker det? var det det du ledte efter?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester