AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Shareware Versionen vor Cracker schützen
Thema durchsuchen
Ansicht
Themen-Optionen

Shareware Versionen vor Cracker schützen

Ein Thema von Luckie · begonnen am 17. Mai 2005 · letzter Beitrag vom 15. Apr 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Neue Version des XP Usermanger ist fertig!

  Alt 23. Mai 2005, 02:22
Zu deinen Vermutungen äußere ich mich jetzt mal nicht. Aber für normale Anwender und Gelegenheits-Cracker sollte es reichen - hoffentlich. Ichmeine, wer hindert jemanden mit einer Vollversion daran es weiterzugeben oder ins Internet zu stellen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#12

Re: Neue Version des XP Usermanger ist fertig!

  Alt 23. Mai 2005, 03:21
Zitat von Luckie:
Zu deinen Vermutungen äußere ich mich jetzt mal nicht. Aber für normale Anwender und Gelegenheits-Cracker sollte es reichen - hoffentlich. Ichmeine, wer hindert jemanden mit einer Vollversion daran es weiterzugeben oder ins Internet zu stellen?
Wie gesagt, es ist schwerer - unmöglich geht so oder so nicht

Für alle die es interessiert. Der Mechanismus mit dem die Adressen geholt werden ist recht simpel:
Code:
debug028:00418EE4 dd 18FF0h                              ; RVA to DLL name
debug028:00418EE8 dd 18FA0h                              ; RVA to function address
debug028:00418EEC dd 0
debug028:00418EF0 dd 0
debug028:00418EF4 dd 0
debug028:00418EF8 dd 18FFDh
debug028:00418EFC dd 18FB0h
debug028:00418F00 dd 0
debug028:00418F04 dd 0
debug028:00418F08 dd 0
debug028:00418F0C dd 1900Ah
debug028:00418F10 dd 18FB8h
debug028:00418F14 dd 0
debug028:00418F18 dd 0
debug028:00418F1C dd 0
debug028:00418F20 dd 19017h
debug028:00418F24 dd 18FC0h
debug028:00418F28 dd 0
debug028:00418F2C dd 0
debug028:00418F30 dd 0
debug028:00418F34 dd 19021h
debug028:00418F38 dd 18FC8h
debug028:00418F3C dd 0
debug028:00418F40 dd 0
debug028:00418F44 dd 0
debug028:00418F48 dd 19029h
debug028:00418F4C dd 18FD0h
debug028:00418F50 dd 0
debug028:00418F54 dd 0
debug028:00418F58 dd 0
debug028:00418F5C dd 19036h
debug028:00418F60 dd 18FD8h
debug028:00418F64 dd 0
debug028:00418F68 dd 0
debug028:00418F6C dd 0
debug028:00418F70 dd 19043h
debug028:00418F74 dd 18FE0h
debug028:00418F78 dd 0
debug028:00418F7C dd 0
debug028:00418F80 dd 0
debug028:00418F84 dd 1904Fh
debug028:00418F88 dd 18FE8h
debug028:00418F8C dd 0
debug028:00418F90 dd 0
debug028:00418F94 dd 0
debug028:00418F98 dd 0
debug028:00418F9C dd 0
[color=red]An diesen Stellen steht jeweils vorher (vor dem Auflösen) die RVA zum Funktionsnamen
Wie man sehen kann, ist die Basisadresse hier wieder 0x400000, also einfach RVA + 0x400000 ;)[/color]
debug028:00418FA0 dd 77E901D5h                           ; kernel32_LoadLibraryA
debug028:00418FA4 dd 77E90C5Fh                           ; kernel32_GetProcAddress
debug028:00418FA8 dd 77E96972h                           ; kernel32_ExitProcess
debug028:00418FAC dd 0                                    ; Separator
debug028:00418FB0 dd 793546D3h                           ; advapi32_FreeSid
debug028:00418FB4 dd 0                                    ; Separator
debug028:00418FB8 dd 7171884Ch                           ; comctl32_ImageList_Create
debug028:00418FBC dd 0                                    ; Separator
debug028:00418FC0 dd 77F4241Eh                           ; GDI32_SetBkMode
debug028:00418FC4 dd 0                                    ; Separator
debug028:00418FC8 dd 782F825Ah                           ; mpr_WNetAddConnection2A
debug028:00418FCC dd 0                                    ; Separator
debug028:00418FD0 dd 75117AD6h                           ; netapi32_NetUserDel
debug028:00418FD4 dd 0                                    ; Separator
debug028:00418FD8 dd 779C93D0h                           ; oleaut32_SysFreeString
debug028:00418FDC dd 0                                    ; Separator
debug028:00418FE0 dd 775B4EBEh                           ; shell32_SHGetMalloc
debug028:00418FE4 dd 0                                    ; Separator
debug028:00418FE8 dd 77E087E8h                           ; USER32_SetFocus
debug028:00418FEC dd 0                                    ; Separator
debug028:00418FF0 aKernel32_dll db 'KERNEL32.DLL',0
debug028:00418FFD aAdvapi32_dll db 'advapi32.dll',0
debug028:0041900A aComctl32_dll db 'comctl32.dll',0
debug028:00419017 aGdi32_dll db 'gdi32.dll',0
debug028:00419021 aMpr_dll db 'mpr.dll',0
debug028:00419029 aNetapi32_dll db 'netapi32.dll',0
debug028:00419036 aOleaut32_dll db 'oleaut32.dll',0
debug028:00419043 aShell32_dll db 'shell32.dll',0
debug028:0041904F aUser32_dll db 'user32.dll',0
debug028:0041905A db   0
debug028:0041905B db   0
debug028:0041905C aLoadlibrarya db 'LoadLibraryA',0
debug028:00419069 db   0
debug028:0041906A aGetprocaddress db 'GetProcAddress',0
debug028:00419079 db   0
debug028:0041907A aExitprocess db 'ExitProcess',0
debug028:00419086 db   0
debug028:00419087 db   0
debug028:00419088 aFreesid db 'FreeSid',0
debug028:00419090 db   0
debug028:00419091 db   0
debug028:00419092 aImagelist_crea db 'ImageList_Create',0
debug028:004190A3 db   0
debug028:004190A4 aSetbkmode db 'SetBkMode',0
debug028:004190AE db   0
debug028:004190AF db   0
debug028:004190B0 aWnetaddconnect db 'WNetAddConnection2A',0
debug028:004190C4 db   0
debug028:004190C5 db   0
debug028:004190C6 aNetuserdel db 'NetUserDel',0
debug028:004190D1 db   0
debug028:004190D2 aSysfreestring db 'SysFreeString',0
debug028:004190E0 db   0
debug028:004190E1 db   0
debug028:004190E2 aShgetmalloc db 'SHGetMalloc',0
debug028:004190EE db   0
debug028:004190EF db   0
debug028:004190F0 aSetfocus db 'SetFocus',0
debug028:004190F9 db   0
Da ich, wie gesagt, keine Zeit für eine intensive Analyse habe, hier noch der Teil, wo die eigene Importtabelle gefüllt wird:
Code:
.text:00521422 loc_521422:                            ; CODE XREF: sub_52113B+2E2j
.text:00521422 add    ecx, esi
.text:00521424 mov    [ebp+OwnImportTable], ecx
.text:00521427 add    eax, esi
.text:00521429 push   eax
.text:0052142A mov    eax, [ebp+LoadLibrary]
[color=red]DLL laden[/color]
.text:0052142D call   dword ptr [eax]                ; LoadLibrary
.text:0052142F test   eax, eax
.text:00521431 jz     loc_52153D
.text:00521437 mov    edi, eax
.text:00521439
.text:00521439 loc_521439:                            ; CODE XREF: sub_52113B+32Fj
.text:00521439 mov    ecx, [ebp+OwnImportTable]
.text:0052143C mov    edx, [ecx]
.text:0052143E test   edx, edx
.text:00521440 jz     short loc_52146C
.text:00521442 test   edx, 80000000h
.text:00521448 jz     short loc_521452
.text:0052144A and    edx, 7FFFFFFFh
.text:00521450 jmp    short loc_521456
.text:00521452 ; ---------------------------------------------------------------------------
.text:00521452
.text:00521452 loc_521452:                            ; CODE XREF: sub_52113B+30Dj
.text:00521452 add    edx, esi
.text:00521454 inc    edx
.text:00521455 inc    edx
.text:00521456
[color=red]Funktionsadresse ermitteln und zwischenspeichern[/color]
.text:00521456 loc_521456:                            ; CODE XREF: sub_52113B+315j
.text:00521456 push   edx
.text:00521457 push   edi
.text:00521458 mov    eax, [ebp+GetProcAddress]
.text:0052145B call   dword ptr [eax]                ; GetProcAddress
.text:0052145D mov    ecx, [ebp+var_3C]
.text:00521460 mov    [ecx], eax
.text:00521462 add    [ebp+var_3C], 4
.text:00521466 add    [ebp+OwnImportTable], 4
.text:0052146A jmp    short loc_521439
.text:0052146C ; ---------------------------------------------------------------------------
.text:0052146C
.text:0052146C loc_52146C:                            ; CODE XREF: sub_52113B+305j
.text:0052146C add    ebx, 14h
.text:0052146F jmp    short loc_52140A
.text:00521471 ; ---------------------------------------------------------------------------
.text:00521471
[color=red]Hochinteressant wird's hier auf NT[/color]
.text:00521471 loc_521471:                            ; CODE XREF: sub_52113B+2C8j
.text:00521471                                         ; sub_52113B+2D4j
.text:00521471 mov    eax, large fs:30h
.text:00521478 mov    eax, [eax+PEB.ProcessModuleInfo]
.text:0052147B mov    ebx, [eax+PEB.ProcessModuleInfo]
.text:0052147E mov    [ebp+ModuleInfo], ebx
.text:00521481
.text:00521481 loc_521481:                            ; CODE XREF: sub_52113B+3F3j
.text:00521481 mov    edx, [ebx+PEB_LDR_DATA.ModuleHeader.EntryToInMemoryOrderModuleList.Flink]
.text:00521484 cmp    edx, [ebp+var_50]
OEP ist übrigens: 0x00417160! Aber ich bin noch nicht sicher, ob das der OEP des UPX-gepackten Programmes ist, denn erst danach werden nochmal weiter API-Adressen aufgelöst.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Neue Version des XP Usermanger ist fertig!

  Alt 24. Mai 2005, 21:31
Version mit, hoffentlich, besseren Schutz hochgeladen: http://www.delphipraxis.net/internal...=255881#255881

Kleiner Hinweis: Nicht mit UPX gepackt und nicht verschlüsselt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#14

Re: Neue Version des XP Usermanger ist fertig!

  Alt 24. Mai 2005, 22:29
alte version war besser geschützt

wegen dem was olli beschrieben hat:

einfach breakpoint auf virtualProtect dann hardware breakpoint auf den speicher den er bekommt (noch net mal relocation fix drin oO, er macht nix wenner anderen speicher bekommt oO)

danach nen hw breakpoint auf den speicher -> dann bekommt man nen rep movs, in ESI steht dann die verschlüsselte (jetzt entschlüsselte) exe -> die einfach dumpen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Neue Version des XP Usermanger ist fertig!

  Alt 24. Mai 2005, 22:36
Ich habe ehrlich gesagt kein Wort verstanden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#16

Re: Neue Version des XP Usermanger ist fertig!

  Alt 24. Mai 2005, 22:41
lol - ihr seid wirklich hacker was?
Nico Müller
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#17

Re: Neue Version des XP Usermanger ist fertig!

  Alt 24. Mai 2005, 22:49
kein problem
alte version:

auf virtual protect nen breakpoint setzen, d.h. es wird angehalten wenn das prog versuch den speicher freizumachen im bereich 0x00400000 wo normal die exe liegt, jetzt wird die exe entschlüsselt und dann an den speicher geschrieben
deshalb macht man einen hardware access breakpoint auf die adresse (0x00400000) dann bekommt man die assembler instrucion
die dort den speicher hinschreibt
das ist ein REP MOVS der 2 "parameter" hat EDI und ESI
in EDI steht die stelle wos hingeschrieben wird (0x00400000) in ESI wovon es geschrieb wird und da ist die exe ganz enschlüsselt drin die kann man dann einfach dumpen und starten


neuste version:

debugger detection:

Code:
0040BE46  |. 50             PUSH EAX
0040BE47  |. 64:8B05 300000>MOV EAX,DWORD PTR FS:[30]
0040BE4E    8B40 02        MOV EAX,DWORD PTR DS:[EAX+2]
0040BE51     8805 48D74000  MOV BYTE PTR DS:[40D748],AL
einfach MOV EAX, ...[eax+2] noppen

kernel32.IsDebuggerPresent:

Code:
7C812E03 > 64:A1 18000000   MOV EAX,DWORD PTR FS:[18]
7C812E09   8B40 30          MOV EAX,DWORD PTR DS:[EAX+30]
7C812E0C  0FB640 02        MOVZX EAX,BYTE PTR DS:[EAX+2]
7C812E10   C3               RETN
____

alternativ kommt man an die adresse wenn man
zu 7ffdf000 geht (wenn nicht vorhanden zu 7ffde000)
dann die adresse bei 7ffdf030 bzw 7ffde030 schaut
und dann an diese adresse geht
z.b. 7ffdc000 <- das 3. byte, also 7ffdc003 ist bei nem debugger dann ne 1 oder wenn nix aktiv ist ne 0
only NT


exception(3 an der zahl):

Code:
0040BE9E /$ 31C0           XOR EAX,EAX                             // setzen
0040BEA0  |. 64:FF30        PUSH DWORD PTR FS:[EAX]                 // exception handler pushen
0040BEA3  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
0040BEA6  |. 8160 18 550100>AND DWORD PTR DS:[EAX+18],155            // exception hier
0040BEAD |. 64:8F05 000000>POP DWORD PTR FS:[0]
einfach das AND noppen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Neue Version des XP Usermanger ist fertig!

  Alt 24. Mai 2005, 22:52
OLLI!!! Sag was. Hilf mir! Ich will mein Geld zurück.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#19

Re: Neue Version des XP Usermanger ist fertig!

  Alt 24. Mai 2005, 23:19
Zitat von Olli:
Der PEB sitzt ebenfalls immer einheitlich an 0x7FFDF000 (bisher bei jedem NT).
ab XP SP2 nicht mehr

Zitat von Olli:
Denn jeder nicht allzu dumme Mensch weiß, daß NTDLL und Kernel32 nicht relozierbar sind
!theoretisch! schon praktisch kann man das durch einen hook auch erreichen, vielleicht bekomm ich da mal nen beispel hin, jedoch wird die kernel32.dll / ntdll.dll immer vorher geladen, d.h. sie ist immer an dieser stelle, aber mit bischen tricksen bekomm man sie im laufenden programm an eine andere stelle

http://www.arschvoll.net/forceloadlibraryworking.JPG
gaanz alte version wo man das laden schon hinbekommen hat
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#20

Re: Neue Version des XP Usermanger ist fertig!

  Alt 25. Mai 2005, 01:27
Vorweg: ich habe mir die neue Version noch nicht angeschaut.

Zitat von brechi:
alte version war besser geschützt

wegen dem was olli beschrieben hat:

einfach breakpoint auf virtualProtect dann hardware breakpoint auf den speicher den er bekommt (noch net mal relocation fix drin oO, er macht nix wenner anderen speicher bekommt oO)

danach nen hw breakpoint auf den speicher -> dann bekommt man nen rep movs, in ESI steht dann die verschlüsselte (jetzt entschlüsselte) exe -> die einfach dumpen
Interessante Methode. Danke für den Hinweis
Ich habe es etwas anders gemacht.

Übrigens: wieviele HW-BPX hast du? ... könnte sein, daß die dir irgendwann ausgehen. *grins*

Zitat von Luckie:
Ich habe ehrlich gesagt kein Wort verstanden.
Aber ich

Zitat von brechi:
alternativ kommt man an die adresse wenn man
zu 7ffdf000 geht (wenn nicht vorhanden zu 7ffde000)
dann die adresse bei 7ffdf030 bzw 7ffde030 schaut
und dann an diese adresse geht
z.b. 7ffdc000 <- das 3. byte, also 7ffdc003 ist bei nem debugger dann ne 1 oder wenn nix aktiv ist ne 0
only NT
Na Luckie? Erinnert dich das an was?
@brechi: du bist ganz sicher mit: 0x7ffdc003? Ich eher nicht ... bei mir ist das Byte eins tiefer ... denn wir beginnen ja bei Null die Zählung.

Zitat von Luckie:
OLLI!!! Sag was. Hilf mir! Ich will mein Geld zurück.
Selber schuld wenn du so voreilig was veröffentlichst ... hatte nen Audit angeboten.
Geld? Welches Geld? Ist noch keins bei mir angekommen *grins*

@Luckie: der Rest per PN. Erinnere mich dran!

@brechi: XP SP2 habe ich leider noch nicht überprüft. Aber wozu gibt's FS ... Nebenbei, du bist im DF nicht zufällig unter einem anderen Namen unterwegs (alternativ: -"- gewesen)? Relozierung der System-DLLs ist
1.) unsinnig (nicht umsonst sind alle DLLs je nach OS-Version aufeinander abgestimmt)
2.) gefährlich (weil sich eben doch manche drauf verlassen)
3.) unwahrscheinlich in einem neuen Prozess
4.) wer ist "man"?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz