ASProtect SKE x86 2.71 API

Sujets variés concernant le développement en PureBasic
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Re: ASProtect SKE x86 2.71 API

Message par CaptainCrunch »

Exemple de macros Armadillo pour PureBasic...

Code : Tout sélectionner


!macro CODEREPLACE_START {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}
!macro CODEREPLACE_END {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}

!macro ENCODE_START {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}
!macro ENCODE_END {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}

!macro CLEAR_START {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}
!macro CLEAR_END {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}

!macro VM_START {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}
!macro VM_END {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}

!macro UNREGISTERED_START {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}
!macro UNREGISTERED_END {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}

!macro REGISTERED_START {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}
!macro REGISTERED_END {DB 0xEB, 0x10, 0x57, 0x4C, 0x20, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4C, 0x20, 0x20}

Macro CHECK_PROTECTION(var, val)
!DB 0xEB, 0x10, 0x67, 0x31, 0xAB, 0x91, 0x7A, 0x71, 0x8B, 0x8A, 0xBD, 0x7A, 0x11, 0xBC, 0x00, 0x00, 0x00, 0x00
!push val
!pop dword [var]
!DB 0xEB, 0x0C, 0xBD, 0x7A, 0x11, 0xBC, 0x7A, 0x71, 0x8B, 0x8A, 0x67, 0x31,0xAB, 0x91
EndMacro

Macro CHECK_CODE_INTEGRITY(var, val)
!DB 0xEB, 0x10, 0x67, 0x31, 0xAB, 0x91, 0x7A, 0x71, 0x8B, 0x8A, 0xBD, 0x7A, 0x11, 0xBC, 0x01, 0x00, 0x00, 0x00
!push val
!pop dword [var]
!DB 0xEB, 0x0C, 0xBD, 0x7A, 0x11, 0xBC, 0x7A, 0x71, 0x8B, 0x8A, 0x67, 0x31,0xAB, 0x91
EndMacro

Macro CHECK_REGISTRATION(var, val)
!DB 0xEB, 0x10, 0x67, 0x31, 0xAB, 0x91, 0x7A, 0x71, 0x8B, 0x8A, 0xBD, 0x7A, 0x11, 0xBC, 0x02, 0x00, 0x00, 0x00
!push val
!pop dword [var]
!DB 0xEB, 0x0C, 0xBD, 0x7A, 0x11, 0xBC, 0x7A, 0x71, 0x8B, 0x8A, 0x67, 0x31,0xAB, 0x91
EndMacro

Macro CHECK_VIRTUAL_PC(var, val)
!DB 0xEB, 0x10, 0x67, 0x31, 0xAB, 0x91, 0x7A, 0x71, 0x8B, 0x8A, 0xBD, 0x7A, 0x11, 0xBC, 0x03, 0x00, 0x00, 0x00
!push val
!pop dword [var]
!DB 0xEB, 0x0C, 0xBD, 0x7A, 0x11, 0xBC, 0x7A, 0x71, 0x8B, 0x8A, 0x67, 0x31,0xAB, 0x91
EndMacro
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Re: ASProtect SKE x86 2.71 API

Message par CaptainCrunch »

J'ai déja contacté la société, mais j'ai un commercial comme contact, c'est lourd... et surtout trop long
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Re: ASProtect SKE x86 2.71 API

Message par CaptainCrunch »

Re

J'ai retesté les macros avec une ancienne version d'ASProtect.... et la ca marche !

Mon code était bon :)

Code : Tout sélectionner


!macro USER_POLY_BUFFER {DB 0xEB, 0x04, 0xEB, 0x05, 0x39, 0x19}

Macro CRC_BEGIN
!DB 0xEB, 0x04, 0xEB, 0x05, 0x19, 0x01, 0xE9, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
EndMacro

Macro CRC_END
!DB 0xEB, 0x04, 0xEB, 0x05, 0x29, 0x01, 0xE9, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
!DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
EndMacro


procedure Test()
  
  CRC_BEGIN
  MessageRequester("", "CRC Test",0)
  CRC_END
   
EndProcedure

Miracle ! ca marche même avec le includeBinary...

Donc la nouvelle version ASProtect est buggée
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: ASProtect SKE x86 2.71 API

Message par falsam »

Bravo pour ta persévérance :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: ASProtect SKE x86 2.71 API

Message par graph100 »

buggué ou alors ils ont modifier un truc pour la sécurité ?!
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Re: ASProtect SKE x86 2.71 API

Message par CaptainCrunch »

lol, je pense pas..... c'est tous les marqueurs qui sautent, c'est justement pour la sécurité :-)

Je suis en train de regarder Enigma Protector, je pense que je vais craquer pour celui ci

Je n'ai pas envie de courir après le support technique.

http://enigmaprotector.com
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: ASProtect SKE x86 2.71 API

Message par Backup »

je suis pas sur que ça garantisse que ton soft ne soit pas Cracké ...

je crois que ça crypte le prg pour ne pas qu'on puisse le Tracer ...
mais il existe des Debugger qui peuvent tracer le Code en Ram non ? (en tout cas sur XP c'etait le Cas )
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Re: ASProtect SKE x86 2.71 API

Message par CaptainCrunch »

Va voir la doc, c'est une machine de guerre :)
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Enigma Protector 4.20 x86

Message par CaptainCrunch »

Une sacrée différence !!! ca marche du premier coup

Code : Tout sélectionner

Macro CHECK_PROTECTION_BEGIN
!DB $EB, $08, $43, $48, $43, $4B, $50, $52, $54, $42
EndMacro

Macro CHECK_PROTECTION_END
!DB $EB, $08, $43, $48, $43, $4B, $50, $52, $54, $45
EndMacro

CHECK_PROTECTION_BEGIN
MessageRequester("","CRC OK",0)
CHECK_PROTECTION_END

MessageRequester("","T'as vu le dernier message ? ",0)
Il y a même des marqueurs pour executer du code dans une machine virtuelle 8)
CaptainCrunch
Messages : 52
Inscription : dim. 29/juin/2014 6:32

Enigma Exemple

Message par CaptainCrunch »

Code : Tout sélectionner

; Exemple d'utilisation Enigma Protector x86 avec PureBasic - CaptainCrunch

; 2 APIS à déclarer

; EP_RegHardwareID_()
; EP_RegCheckKey_()

Enumeration
  #mainReg     = 1
  #edtId       = 2
  #edtName     = 3
  #edtSerial   = 4
  #btnCopierId = 5
  #btnValider  = 6
  #btnAnnuler  = 7
  #txtName     = 8
  #txtSerial   = 9
  #txtId       = 10
EndEnumeration


Macro CHECK_PROTECTION_BEGIN
  !DB $EB, $08, $43, $48, $43, $4B, $50, $52, $54, $42
EndMacro

Macro CHECK_PROTECTION_END
  !DB $EB, $08, $43, $48, $43, $4B, $50, $52, $54, $45
EndMacro

Macro VM_RISC_BEGIN ; Pas dans la démo :(
  !DB $EB, $08, $56, $4D, $42, $45, $47, $49, $4E, $31
EndMacro

Macro VM_RISC_END ; Pas dans la démo :(
  !DB $EB, $08, $56, $4D, $45, $4E, $44, $31, $00, $00
EndMacro

Macro VM_BEGIN
  !DB $EB, $08, $56, $4D, $42, $45, $47, $49, $4E, $00
EndMacro

Macro VM_END
  !DB $EB, $08, $56, $4D, $45, $4E, $44, $00, $00, $00
EndMacro

;**********************************************

Procedure.i RegCheck()
  
 Protected tmpName.s, tmpSerial.s
 Protected RetCheckKey.i
 
 VM_BEGIN
   tmpName   = GetGadgetText(#edtName) ; Récupération du nom dans une machine virtuelle
 VM_END
    
 VM_BEGIN
   tmpSerial = GetGadgetText(#edtSerial) ; et Récupération du sérial saisi dans une autre.
 VM_END 
  
CHECK_PROTECTION_BEGIN ; SI le CRC est OK, exécuter cette partie
  
   
        If Len(tmpName) = 0 
           MessageRequester("","Veuillez saisir votre nom SVP",#PB_MessageRequester_Ok)
            Else
                If Len(tmpSerial) = 0 
                  MessageRequester("","Veuillez saisir votre numéro de série SVP",#PB_MessageRequester_Ok)
                    Else
                                            
                      RetCheckKey = EP_RegCheckKey_(tmpName, tmpSerial)
                      
                      Select RetCheckKey
                      Case 1
                      MessageRequester("","Merci d'avoir enregistré votre logiciel.",#PB_MessageRequester_Ok)
                      Default
                      MessageRequester("","Numéro de série invalide.",#PB_MessageRequester_Ok)
                      EndSelect
                    
                
                EndIf
        EndIf
    
    ProcedureReturn 0 ;...... et quitter la procédure

CHECK_PROTECTION_END

; Cette partie sera exécutée seulement si le CRC n'est pas bon....

; Exécution de notre MessageRequester dans une machine virtuelle

VM_BEGIN

MessageRequester("","To be or not to be...that is the question",#PB_MessageRequester_Ok)

VM_END

EndProcedure

;**********************************************

Procedure mainRegOpen()
OpenWindow(#mainReg, 0, 0, 290, 190, "Purebasic - Enigma API", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_WindowCentered)

StringGadget(#edtName, 10, 80, 270, 20, "")
StringGadget(#edtSerial, 10, 130, 270, 20, "")
StringGadget(#edtId, 10, 30, 160, 20, "")

ButtonGadget(#btnValider, 90, 160, 90, 20, "Valider")
ButtonGadget(#btnAnnuler, 190, 160, 90, 20, "Annuler")
ButtonGadget(#btnCopierId, 180, 30, 20, 20, "")

TextGadget(#txtName, 10, 60, 220, 20, "License d'utilisation accordée à :")
TextGadget(#txtSerial, 10, 110, 100, 20, "Numéro de série :")
TextGadget(#txtId, 10, 10, 120, 20, "Identifiant Machine :")

DisableGadget(#edtId, 1)

GadgetToolTip(#edtName, "Veuillez saisir votre nom ici SVP.")
GadgetToolTip(#edtSerial, "Veuillez saisir votre numéro de série ici SVP.")
GadgetToolTip(#btnCopierId, "Copie votre identifiant machine dans le presse papier")

EndProcedure

;**********************************************

Procedure mainRegEvent()
  
Protected glEvent.l, glGadget.l, glType.l, glWindow.l
Protected ptIdEx.l

ptIdEx = EP_RegHardwareID_()
SetGadgetText(#edtId,PeekS(ptIdEx))

Repeat

glEvent  = WaitWindowEvent()
glGadget = EventGadget()
glType   = EventType()
glWindow = EventWindow() 

If  glwindow = #mainReg
If glEvent = #PB_Event_Gadget
  
Select glGadget
    
Case #btnCopierId
SetClipboardText(GetGadgetText(#edtId))
MessageRequester("Information","Identifiant machine copié dans le presse papier",#PB_MessageRequester_Ok)
    
Case #btnValider
RegCheck()
    
Case #btnAnnuler
End  
    
EndSelect

EndIf
EndIf


Until glEvent = #PB_Event_CloseWindow
End
EndProcedure

;**********************************************

mainRegOpen()
mainRegEvent()

Capture d'écran :

http://hpics.li/4bc6f5e
Répondre