Body kit yang bisa dieksekusi. Bagian 2

Artikel kedua dalam seri kecil tentang perlindungan yang digunakan untuk menyembunyikan algoritme aplikasi. Di artikel terakhir, kami membahas bagian utama perlindungan dan menyusun aplikasi pengujian. Di sini kita akan mengenal struktur penangan perintah dan mencoba men-debug dan mendekode file yang dapat dieksekusi.





Deskripsi VMProtect work

, -. :





  1. ;





  2. ;





, , .





:





, VMP . , .





, , VMP . .





pusha ;   
push 0 ;   
mov esi, [esp+x+var] ; esi =   VM  ,      x  var
mov ebp, esp ;   VMProtect    ,  ebp = VM "stack" 
sub esp, 0C0h
mov edi, esp ; edi =  ,     

 :
add esi, [ebp+0]

  :
mov al, [esi];     EIP  
movzx eax, al
sub esi, -1;   EIP  
jmp ds:VMHandlers[eax*4] ;   

      
      



, :





, , :





, , .





VM

x64dbg, Windows ( WinDBG). , , . :





, . , , main_loop. , :





main loop. , , ESI. EIP AX . . , , . , , breakpoint, . .





, :





"breakpoints" :





, "Log Text" . , : { : }



. eax



$breakpointcounter



.





Command Text



. , .





:





, โ€” 669. , , . . notepad++ :





: ^(.*?)$\s+?^(?=.*^\1$)



53 . , .





, . , main loop. ? .





, :





import pefile

#  
pe = pefile.PE(filePath)
#   
image = pe.get_memory_mapped_image()
#    
baseOffset = 0xB400

#  255    
handlers = []
for i in range(255):
    offset+=4
    handlers.append(image[offset])

#   
for h in handlers:
    md = Cs(CS_ARCH_X86, CS_MODE_32)
    for i in md.disasm(h, 0x1000):
        print("0x%x:\t%s\t%s" %(i.address, i.mnemonic, i.op_str))

      
      



:





โ€” . , . . .






โ€” .



"Reverse-Engineering. Basic".



ยซ . 2ยป: type confusion; .








All Articles