Advertisement
Guest User

FASM

a guest
May 8th, 2016
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. format PE GUI 4.0 ; VANS-SOFT.RU
  2. entry start
  3.  
  4. include 'include\win32A.inc'
  5.  
  6. section '.data' data readable writeable
  7.  
  8. buff      rb 100h
  9. encoded   rb 100h
  10. decode    db 'ahrtkslpbz1234567890',0 ;строка декодирования
  11. generate  db '1234567890dynfgxmie0',0 ;строка замены
  12.  
  13.  
  14. section '.VANS' code readable executable ;своя секция, круто
  15.  
  16.   start:
  17.         invoke  GetModuleHandle,0
  18.         invoke  DialogBoxParam,eax,37,HWND_DESKTOP,WindowProc,0
  19.         invoke  ExitProcess,0
  20.  
  21. proc WindowProc hwnd, msg, wparam, lparam  ;обработчик событий
  22.       push    ebx esi edi
  23.         cmp     [msg], WM_COMMAND
  24.         je      .wmcommand
  25.         cmp     [msg], WM_CLOSE
  26.         je      .wmclose
  27.         xor     eax,eax
  28.         jmp     .finish
  29.   .wmcommand:
  30.         cmp     [wparam], BN_CLICKED shl 16 + ID_GEN
  31.         je      .wmgen
  32.         jmp     .processed
  33.   .wmgen:
  34.         invoke  GetDlgItemText,[hwnd],ID_TXT,buff,255
  35.         stdcall GenCode,buff,eax,encoded
  36.         invoke  SetDlgItemText,[hwnd],ID_ENC,encoded
  37.         jmp     .processed
  38.  
  39.   .wmclose:
  40.         invoke  EndDialog,[hwnd],0
  41.   .processed:
  42.         mov     eax,1
  43.   .finish:
  44.         pop     edi esi ebx
  45.         ret
  46. endp
  47.  
  48. proc    GenCode lpData:DWORD, dSize:DWORD, lpBuff:DWORD
  49.         push    eax ecx edi esi
  50.         mov     ecx,[dSize] ;количество итераций цикла
  51.         mov     esi,[lpData];ключ
  52.         mov     edi,[lpBuff];приёмник
  53.         or      ecx,ecx ;не пустая строка
  54.         jz      .loc_done
  55.  
  56. .round_one: ;цикл по введёному коду
  57.         ;берём первый символ и смещаем позицию на 1
  58.         lodsb ;символ будет в регистре al
  59.         mov ebx,ecx ;Сохраняем счётчик в EBX
  60.         mov ecx,20  ;Счётчик внутреннего цикла
  61.  
  62. .round_two: ;цикл по строке
  63.         ;в ассемблере нет массивов по этому используем адреса
  64.         ;decode - начальный адрес строки + смещение
  65.         cmp     al, byte [decode+ecx-1]
  66.         je      .loc_ex ;если символы равны то будет переход
  67.         loop .round_two
  68.         jmp .err ;если не нашло то негодуем
  69.         .loc_ex:
  70.         ;далее берём символ с того же места, но из другого массива
  71.         mov al, byte [generate+ecx-1]
  72.         .err:
  73.         mov ecx,ebx ;восстанавливаем значение счётчика
  74.  
  75.         stosb ;вернуть взятый байт обратно в строку
  76.         loop    .round_one
  77.  
  78. .loc_done:
  79.         mov     al,0
  80.         stosb
  81.  
  82.         pop     esi edi ecx eax
  83.         ret
  84. endp
  85.  
  86. section '.idata' import data readable writeable
  87.  
  88.   library kernel32,'KERNEL32.DLL',\
  89.           user32,'USER32.DLL'
  90.  
  91.   include 'api\kernel32.inc'
  92.   include 'api\user32.inc'
  93.  
  94.  
  95. section '.rsrc' resource data readable
  96.   directory RT_DIALOG,dialogs
  97.  
  98.   resource dialogs,\
  99.            37,LANG_ENGLISH+SUBLANG_DEFAULT,keygen
  100.  
  101.   ID_TXT = 100
  102.   ID_ENC = 101
  103.   ID_GEN = 102
  104.   ID_RESET = 103
  105.  
  106.   dialog keygen,'LinkReader KeyGen by VANS',0,0,200,75,WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_SYSMODAL
  107.     dialogitem 'EDIT','k6a0a3l0h', ID_TXT,5,23,190,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL
  108.     dialogitem 'EDIT','',ID_ENC,5,37,190,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL+ES_READONLY
  109.     dialogitem 'STATIC','-=VANS-SOFT.RU=-',0, 0, 8, 200, 8 ,WS_VISIBLE+SS_CENTER
  110.     dialogitem 'BUTTON','Gen',ID_GEN,5,55,90,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON
  111.     dialogitem 'BUTTON','Reset Activation',ID_RESET,100,55,95,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON
  112.   enddialog
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement