home *** CD-ROM | disk | FTP | other *** search
/ ftp.sberbank.sumy.ua / 2014.11.ftp.sberbank.sumy.ua.tar / ftp.sberbank.sumy.ua / incoming / 1 / 15173225.asm < prev    next >
Assembly Source File  |  2014-02-08  |  8KB  |  352 lines

  1.       .386
  2.       .model flat, stdcall  ; 32 bit memory model
  3.       option casemap :none  ; case sensitive
  4.  
  5.  
  6.       include \masm32\include\windows.inc
  7.       include \masm32\include\user32.inc
  8.       include \masm32\include\kernel32.inc
  9.       include \masm32\include\gdi32.inc
  10.       include \masm32\include\comdlg32.inc
  11.       
  12.       includelib \masm32\lib\user32.lib
  13.       includelib \masm32\lib\kernel32.lib
  14.       includelib \masm32\lib\gdi32.lib
  15.       includelib \masm32\lib\comdlg32.lib 
  16.       
  17.  
  18.   ID_EDIT equ 10
  19.  
  20.  
  21.       return MACRO arg
  22.         mov eax, arg
  23.         ret
  24.       ENDM
  25.  
  26.  
  27.  
  28.   WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
  29.   WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
  30.   EditProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
  31.   FileOpenDialog    PROTO :DWORD
  32.   GetExeToCopy PROTO 
  33.   IncludeExeFile PROTO :DWORD
  34.   ExcludeExeFile PROTO
  35.   RawDeCoder PROTO :DWORD, :DWORD 
  36.  
  37.  
  38. .data
  39.  
  40. szClassName   db "Kode_666",0
  41. szDisplayName db "<+^->",0
  42. stEditClass   db "EDIT",0
  43. cNewExe       db "kode.exe",0
  44. cExcludeFile  db "666.exe",0
  45.  
  46.  
  47. ;comInk  db "wbhf",0           
  48.  
  49. comText db 256 dup(0)
  50.  
  51. CommandLine   dd 0
  52. hWnd          dd 0
  53. hInstance     dd 0
  54. hIcon         dd 0 
  55. hEdit         dd 0
  56. PosX          dd 0
  57. PosY          dd 0 
  58. dWidth        dd 200
  59. dHeight       dd 80
  60.  
  61. lpEditProc    dd 0
  62.  
  63. ofn OPENFILENAME <0> 
  64. szOrgFile     db 256 dup(0)
  65. szFile        db "*.*",256 dup (0)     
  66. strFilter     db "All Files",0
  67.  
  68. dWspritf db "%d",0
  69.  
  70. RawData       db 100000 dup("6")
  71.  
  72.  
  73.  
  74. .code
  75.  
  76. start:
  77.       invoke GetModuleHandle, NULL
  78.       mov hInstance, eax
  79.  
  80.       invoke GetCommandLine
  81.       mov CommandLine, eax
  82.  
  83.       invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT
  84.       invoke ExitProcess,eax
  85.  
  86. WinMain proc hInst     :DWORD, hPrevInst :DWORD, CmdLine   :DWORD, CmdShow   :DWORD
  87.  
  88.       LOCAL wc   :WNDCLASSEX
  89.       LOCAL msg  :MSG
  90.  
  91.       mov wc.cbSize,          sizeof WNDCLASSEX
  92.       mov wc.style,           CS_HREDRAW or CS_VREDRAW \
  93.                               or CS_BYTEALIGNWINDOW
  94.       mov  wc.lpfnWndProc,    offset WndProc
  95.       mov  wc.cbClsExtra,     NULL
  96.       mov  wc.cbWndExtra,     NULL
  97.       push hInst
  98.       pop  wc.hInstance
  99.       mov  wc.hbrBackground,  COLOR_WINDOW
  100.       mov  wc.lpszMenuName,   NULL
  101.       mov  wc.lpszClassName,  offset szClassName
  102.       push hIcon
  103.       pop  wc.hIcon
  104.       invoke LoadCursor,NULL,IDC_ARROW
  105.       mov  wc.hCursor,        eax
  106.       push hIcon 
  107.       pop  wc.hIconSm
  108.  
  109.       invoke RegisterClassEx, ADDR wc
  110.  
  111.  
  112.       invoke GetSystemMetrics,SM_CXSCREEN
  113.       sub eax, dWidth
  114.       shr eax,1
  115.       mov PosX, eax
  116.  
  117.       invoke GetSystemMetrics,SM_CYSCREEN
  118.       sub eax, dHeight
  119.       shr eax,1
  120.       mov PosY, eax
  121.  
  122.       invoke CreateWindowEx,WS_EX_LEFT,
  123.                             ADDR szClassName,
  124.                             ADDR szDisplayName,
  125.                             WS_OVERLAPPED or WS_SYSMENU,
  126.                             PosX,PosY,dWidth,dHeight,
  127.                             NULL,NULL,
  128.                             hInst,NULL
  129.       mov   hWnd,eax
  130.  
  131.       invoke ShowWindow,hWnd,SW_SHOWNORMAL
  132.       invoke UpdateWindow,hWnd
  133.  
  134.     StartLoop:
  135.       invoke GetMessage,ADDR msg,NULL,0,0
  136.       cmp eax, 0
  137.       je ExitLoop
  138.       invoke TranslateMessage, ADDR msg
  139.       invoke DispatchMessage,  ADDR msg
  140.       jmp StartLoop
  141.     ExitLoop:
  142.  
  143.       return msg.wParam
  144.  
  145. WinMain endp
  146.  
  147.  
  148. WndProc proc hWin   :DWORD, uMsg   :DWORD, wParam :DWORD, lParam :DWORD
  149.  
  150.  
  151.     .if uMsg == WM_CREATE
  152.        invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR stEditClass,0,
  153.                 WS_VISIBLE or WS_CHILDWINDOW or \
  154.                 ES_AUTOHSCROLL or ES_NOHIDESEL,
  155.                 6,10,180,20,hWin,ID_EDIT,hInstance,NULL
  156.          mov hEdit,eax
  157.  
  158.          invoke SetWindowLong,hEdit,GWL_WNDPROC,EditProc
  159.          mov lpEditProc,eax
  160.  
  161.       ;   xor DWORD PTR comInk, 03030303h 
  162.  
  163.       ;   invoke MessageBox, hWin, addr comInk, addr comInk,0
  164.          
  165.         return 0
  166.  
  167.     .elseif uMsg == WM_DESTROY
  168.         invoke PostQuitMessage,NULL
  169.         return 0 
  170.     .endif
  171.  
  172.     invoke DefWindowProc,hWin,uMsg,wParam,lParam
  173.  
  174.     ret
  175.  
  176. WndProc endp
  177.  
  178. EditProc proc hCtl:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
  179.  
  180.     .if uMsg == WM_CHAR
  181.  
  182.       .if wParam == VK_RETURN  
  183.  
  184.         invoke GetWindowText, hEdit, addr comText, 255
  185.  
  186.         mov eax, DWORD PTR comText
  187.         xor eax,03030303h
  188.  
  189.        .if eax == "fhbw" 
  190.  
  191.         invoke FileOpenDialog, hWnd
  192.        ; invoke MessageBox, hWnd, addr szFile, addr szFile, 0
  193.  
  194.         invoke GetExeToCopy 
  195.  
  196.        .else 
  197.          invoke ExcludeExeFile
  198.  
  199.        .endif
  200.  
  201.       .endif 
  202.  
  203.     .endif
  204.  
  205.     invoke CallWindowProc,lpEditProc,hCtl,uMsg,wParam,lParam
  206.  
  207.     ret
  208. EditProc endp
  209.  
  210. FileOpenDialog proc hwnd:DWORD
  211.  
  212.           invoke RtlZeroMemory,ADDR ofn,SIZEOF ofn
  213.           mov ofn.lStructSize,SIZEOF ofn
  214.           mov eax,hwnd
  215.           mov ofn.hwndOwner,eax
  216.           mov eax,OFFSET szFile
  217.           mov ofn.lpstrFile,eax
  218.           mov ofn.nMaxFile,SIZEOF szFile
  219.           mov eax,OFFSET strFilter
  220.           mov ofn.lpstrFilter,eax
  221.           mov ofn.nFilterIndex,1
  222.           mov ofn.lpstrFileTitle,0
  223.           mov ofn.nMaxFileTitle,0
  224.           mov ofn.lpstrInitialDir,0
  225.           mov ofn.Flags,OFN_PATHMUSTEXIST
  226.  
  227.           invoke GetOpenFileName,ADDR ofn 
  228.           ret
  229.  
  230. FileOpenDialog endp
  231.  
  232. GetExeToCopy proc 
  233.      LOCAL hGlobMem:DWORD
  234.      LOCAL lpGlobMem:DWORD
  235.      LOCAL hExeFileRead:DWORD 
  236.      LOCAL hExeFileWrite:DWORD 
  237.      LOCAL dwBytesWritten:DWORD 
  238.      LOCAL dFileSize:DWORD 
  239.  
  240.  
  241.      invoke GlobalAlloc, GMEM_MOVEABLE or GMEM_ZEROINIT, 1500000
  242.      mov hGlobMem,eax
  243.      invoke GlobalLock, hGlobMem
  244.      mov lpGlobMem,eax
  245.  
  246.  
  247.      invoke GetModuleFileName, hInstance, addr szOrgFile, 255  
  248.  
  249.      invoke CreateFile, addr szOrgFile, GENERIC_READ,\
  250.               0, NULL, OPEN_EXISTING,\
  251.               FILE_ATTRIBUTE_NORMAL, NULL
  252.      mov hExeFileRead,eax
  253.  
  254.      invoke GetFileSize, hExeFileRead, 0
  255.      mov dFileSize,eax 
  256.  
  257.      invoke CreateFile, addr cNewExe, GENERIC_WRITE,\
  258.               0, NULL, CREATE_ALWAYS,\
  259.               FILE_ATTRIBUTE_NORMAL, NULL
  260.      mov hExeFileWrite, eax
  261.  
  262.      invoke ReadFile, hExeFileRead, lpGlobMem, dFileSize, addr dwBytesWritten, NULL
  263.  
  264.      push edi
  265.      cld
  266.      mov edi, lpGlobMem 
  267.      mov ecx, dFileSize 
  268.      mov eax,"6666"
  269.      repne scasd
  270.      mov eax,edi
  271.      add eax,4
  272.      pop edi 
  273.  
  274.      invoke IncludeExeFile, eax    
  275.  
  276.      invoke WriteFile, hExeFileWrite, lpGlobMem, dFileSize,\
  277.                           addr dwBytesWritten, NULL        
  278.      
  279.      invoke CloseHandle, hExeFileWrite
  280.      invoke CloseHandle, hExeFileRead 
  281.      invoke GlobalUnlock, hGlobMem
  282.      invoke GlobalFree, hGlobMem 
  283.      ret
  284. GetExeToCopy endp
  285.  
  286. IncludeExeFile proc lpStoreMem:DWORD
  287.   LOCAL hIncFile:DWORD
  288.   LOCAL dwBytesRead1:DWORD
  289.   
  290.      invoke CreateFile, addr szFile, GENERIC_READ,\
  291.               0, NULL, OPEN_EXISTING,\
  292.               FILE_ATTRIBUTE_NORMAL, NULL
  293.      mov hIncFile,eax
  294.  
  295.      invoke GetFileSize, hIncFile, 0
  296.  
  297.      push edi
  298.      mov edi,lpStoreMem 
  299.      
  300.      mov DWORD PTR[edi],eax 
  301.      add edi,4
  302.      mov ecx, edi
  303.      pop edi
  304.  
  305. ;     invoke wsprintf, addr szFile, addr dWspritf, DWORD PTR[ecx-4]
  306. ;     invoke MessageBox, hWnd, addr szFile, addr szFile,0
  307.  
  308.      push ecx 
  309.      invoke RawDeCoder, ecx, DWORD PTR[ecx-4]
  310.      pop ecx
  311.  
  312.      invoke ReadFile, hIncFile, ecx, DWORD PTR[ecx-4], addr dwBytesRead1, NULL 
  313.           
  314.  
  315.      invoke CloseHandle, hIncFile
  316.      ret
  317. IncludeExeFile endp
  318.  
  319. ExcludeExeFile proc
  320.  LOCAL hExFile:DWORD 
  321.  LOCAL dwBytesWrittenInc:DWORD
  322.  
  323.  
  324.      invoke CreateFile, addr cExcludeFile, GENERIC_WRITE,\
  325.               0, NULL, CREATE_ALWAYS,\
  326.               FILE_ATTRIBUTE_NORMAL, NULL
  327.      mov hExFile,eax
  328.      
  329.    
  330.      invoke WriteFile, hExFile, addr RawData+12, DWORD PTR[RawData+8],\
  331.                           addr dwBytesWrittenInc, NULL        
  332.  
  333.      invoke CloseHandle, hExFile
  334.      ret
  335. ExcludeExeFile endp
  336.  
  337. RawDeCoder proc lpRawBits:DWORD, dRawSize:DWORD
  338.      push edi
  339.      
  340.      xor ecx,ecx
  341. RawDeCoder_do:
  342.       
  343.       
  344.      inc ecx 
  345.      cmp ecx, dRawSize 
  346.      jna RawDeCoder_do   
  347.  
  348.      pop edi 
  349.      ret
  350. RawDeCoder endp
  351. end start
  352.