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