WinDbg рдХреЗ рд╕рд╛рде рдореИрд▓рд╡реЗрдпрд░ (рдирд╣реАрдВ) рдХреИрд╕реЗ рдЦреЛрдЬреЗрдВ

WinDbg рдХреЗ рд╕рд╛рде рдореИрд▓рд╡реЗрдпрд░ (рдирд╣реАрдВ) рдХреИрд╕реЗ рдЦреЛрдЬреЗрдВ


рдкрд░рд┐рдЪрдп


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, WinDbg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕рд╛ рдореИрд▓рд╡реЗрдпрд░ (рдпрд╛ рдирд╣реАрдВ) рдиреЗ рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЧрдП DLL рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рдкрддрд╛ рдмрджрд▓ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓ 1C рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд▓реЛрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ ред
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ DLL рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ: рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреАрдбрд╝рд┐рдд ( рдкреАрдбрд╝рд┐рдд ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ , рджреВрд╕рд░рд╛ -рджрд░рд┐рдВрджрд╛ рдЗрдВрдЬреЗрдХреНрдЯрд░ ред рдмрд╛рдж рдХреЛ рдкреАрдбрд╝рд┐рдд рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди (рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдиреАрдВрдж рд▓реЗ ) рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреА рдЬрдЧрд╣, рдкреАрдбрд╝рд┐рдд рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдФрд░ рдПрд╡реА рдХреЛ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдХреЙрд▓ рдХрд░реЗрдЧрд╛ (рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╣реЛрдЧреА)ред


рдЪреВрдВрдХрд┐ рдЪреВрдВрдХрд┐ рдбреЗрд▓реНрдлреА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдХрд╛рд░рдг рдХреЛрд░-рдбрдВрдк рдореЗрдВ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди (DLLInjectionDemo) C рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдкреАрдбрд╝рд┐рдд DLL рдХреЗ рд╢реБрд░реБрдЖрддреА рдмрдВрдзрди рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдпрд╣ DLL-рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдкрд╛рд░рд┐рдд, рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдкреАрдбрд╝рд┐рдд рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдкрддреНрдерд░ рд╕реЗ рджреЛ рдкрдХреНрд╖рд┐рдпреЛрдВ рдХреЛ рдорд╛рд░ рджреЗрдВрдЧреЗред


рдПрдкреНрд▓реАрдХреЗрд╢рди рд╕реЛрд░реНрд╕ рдХреЛрдб C рдФрд░ рдбреЗрд▓реНрдлреА 10.3 рд░рд┐рдпреЛ рдХрдореНрдпреБрдирд┐рдЯреА рдПрдбрд┐рд╢рди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ MinGW рдФрд░ рдбреЗрд▓реНрдлреА рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,, рдФрд░ Win64 рдХреЗ рд▓рд┐рдП (рд╕рд╛рде рд╣реА рд╕рд╛рде рд▓рд╛рдЬрд░ рдореЗрдВ FPC)ред


рдЗрд╕рд▓рд┐рдП рд╣рдо DLL рдФрд░ рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


> msbuild /t:build victim.dproj /p:Platform=Win32;Config=Debug;DCC_Exeoutput=.
> msbuild /t:build injector.dproj /p:Platform=Win32;Config=Debug;DCC_Exeoutput=.
> mingw32-make

MinGW рдореЗрдХ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ PATH рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛


:


C:\Users\demo>DLLInjectionDemo.exe
Sleeping 100 milliseconds
Done!

-L injector (, , , - )


c:\Users\demo>DLLInjectionDemo.exe -L injector
Loading injector
Searching...
oleaut32.dll
advapi32.dll
user32.dll
kernel32.dll
kernel32.dll
user32.dll
version.dll
kernel32.dll
kernel32.dll
netapi32.dll
oleaut32.dll
Injected
Sleeping 100 milliseconds
New sleep instead of 100
Done!

, , Sleep - . ( , ). ( , GUI-, , , , -i(interactive)).


c:\Users\demo>DLLInjectionDemo.exe -i -L injector
Loading injector
Searching...
oleaut32.dll
advapi32.dll
user32.dll
kernel32.dll
kernel32.dll
user32.dll
version.dll
kernel32.dll
kernel32.dll
netapi32.dll
oleaut32.dll
Injected
Sleeping 100 milliseconds
New sleep instead of 100
Done!
Press ENTER...

( ). : , , , , " ...", .


WinDbg, :


File тАФ Open Crash Dump (Ctrl+D)


:


%PROGRAM FILES%\Windows Kits\10\Debuggers\x64\windbg.exe" -z C:\Users\demo\App Data\Local\Temp\DLLInjectionDemo.DMP


Loading Dump File [C:\Users\alex\AppData\Local\Temp\DLLInjectionDemo.DMP]
User Mini Dump File with Full Memory: Only application data is available

Symbol search path is: srv*
Executable search path is: 
Windows 7 Version 7601 (Service Pack 1) MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Thu Jul  4 08:46:18.000 2019 (UTC + 3:00)
System Uptime: 17 days 12:25:45.404
Process Uptime: 0 days 0:00:10.000
........................
For analysis of this file, run !analyze -v
ntdll!NtRequestWaitReplyPort+0xa:
00000000`77bcddfa c3              ret

For analysis of this file, run !analyze -v ( , ).


IAT тАФ (Import Address Table) тАФ DLL, (? , IAT ;) ). , PE- ( DLL ) WinDbg Windows 10 SDK ( Windows 7) , " ", WinDbg 6, .


. :


lm


0:000> lm
start             end                 module name
00000000`003b0000 00000000`003db000   injector   (deferred)             
00000000`00400000 00000000`00412000   DLLInjectionDemo   (deferred)             
00000000`00520000 00000000`00616000   victim     (deferred)             
00000000`6e580000 00000000`6e5b4000   libmingwex_2   (deferred)             
00000000`72870000 00000000`72886000   netapi32   (deferred)             
...

Nota bene: 32- , 64-...


, DLL , IAT , !dh -a:


!dh 009c0000 -a



!dh victim -a
0:000> !dh victim -a

File Type: DLL
FILE HEADER VALUES
     14C machine (i386)
       A number of sections
5E5F4251 time date stamp Wed Mar  4 09:53:21 2020

       0 file pointer to symbol table
       0 number of symbols
      E0 size of optional header
    A18E characteristics
            Executable
            Line numbers stripped
            Symbols stripped
            Bytes reversed
            32 bit word machine
            DLL

OPTIONAL HEADER VALUES
     10B magic #
    2.25 linker version
   CE400 size of code
   1BA00 size of initialized data
       0 size of uninitialized data
   CF79C address of entry point
    1000 base of code
         ----- new -----
0000000000400000 image base
    1000 section alignment
     200 file alignment
       2 subsystem (Windows GUI)
    5.00 operating system version
    0.00 image version
    5.00 subsystem version
   F6000 size of image
     400 size of headers
       0 checksum
0000000000000000 size of stack reserve
0000000000000000 size of stack commit
0000000000100000 size of heap reserve
0000000000001000 size of heap commit
       0  DLL characteristics
   DD000 [      A4] address [size] of Export Directory
   DA000 [    105C] address [size] of Import Directory
   F3000 [    2A00] address [size] of Resource Directory
       0 [       0] address [size] of Exception Directory
       0 [       0] address [size] of Security Directory
...

kernel32.dll ( Sleep)


Nota bene: 32- _IMAGE_IMPORT_DESCRIPTOR 64-. , , Delphi .


...
  _IMAGE_IMPORT_DESCRIPTOR 00000000005fa03c
    kernel32.dll
              005FA398 Import Address Table
              005FA11C Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

       003C7C7C    0 Sleep
       76EE184A    0 VirtualFree
       76EE1832    0 VirtualAlloc
       76EE16DC    0 lstrlenW
       76EE4422    0 VirtualQuery
       76EE110C    0 GetTickCount
...

,


`kernel32.dll`
0:000> !dh kernel32

File Type: DLL
FILE HEADER VALUES
     14C machine (i386)
       4 number of sections
5708A7E3 time date stamp Sat Apr  9 10:57:39 2016

...
         ----- new -----
0000000076ed0000 image base
...

.. 0000000076ed0000


, тАФ ?


WinDbg lm :


0:000> lma 003C7C7C    
Browse full module list
start             end                 module name
00000000`003b0000 00000000`003db000   injector   (deferred)             

, ! . ( v lm)


0:000> lma 003C7C7C v
Browse full module list
start             end                 module name
00000000`003b0000 00000000`003db000   injector   (deferred)             
    Image path: z:\habr\DLLInjectionDemo\injector.dll
    Image name: injector.dll
    Browse all global symbols  functions  data
    Timestamp:        Wed Mar  4 09:53:12 2020 (5E5F4248)
    CheckSum:         00000000
    ImageSize:        0002B000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:

!


Image path: C:\Users\demo\injector.dll


, .


рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдореИрдВ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдкреВрд░реНрд╡рд╕реНрдерд╛рдкрд┐рдд рдУрдПрд╕ рдкрд░ рдХреБрдЫ рдЕрдЬреАрдм рдбреАрдПрд▓рдПрд▓ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ WriteFileред


рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдЕрдЧрд▓реЗ рдПрдХ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдкрд╛рдардХ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ WinDbg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд╣реАрдВ рдкрд░) рдПрдХреНрд╕реЗрд╕ рд╡рд╛рдпрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛, рдЬреЛ рдбреЗрд▓реНрд╣реА рдореЗрдВ рд▓рд┐рдЦреЗ DLL рдореЗрдВ рддрдм рд╣реБрдЖ рдЬрдм рд░рд┐рдореЛрдЯ рдбреАрдмрдЧрд┐рдВрдЧ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдпрд╛ рддреЛ рдХрд╛рд░рдгред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдбреЗрд▓реНрдлреА рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрдВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдкреАрдбреАрдмреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПред


All Articles