Page 3 sur 3

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 9:40
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

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 9:42
par CaptainCrunch
J'ai déja contacté la société, mais j'ai un commercial comme contact, c'est lourd... et surtout trop long

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 11:28
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

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 13:00
par falsam
Bravo pour ta persévérance :)

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 15:29
par graph100
buggué ou alors ils ont modifier un truc pour la sécurité ?!

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 17:17
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

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 17:28
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 )

Re: ASProtect SKE x86 2.71 API

Publié : mer. 09/juil./2014 17:31
par CaptainCrunch
Va voir la doc, c'est une machine de guerre :)

Enigma Protector 4.20 x86

Publié : jeu. 10/juil./2014 10:35
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)

Enigma Exemple

Publié : jeu. 10/juil./2014 12:45
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