Показать полную графическую версию : Извлечение экзешника из экзешника
Суть проблемы. В экзешнике (не SFX архив) есть другой экзешник (медицинское ПО ели важно). Раньше экзешник как и положено выплёвывал 64 битный экзешник, а теперь что-то пошло не так. Разрабы из административного центра говорят, что у них всё работает и потому просто шлют нафиг. Можно ли как-то скриптом извлечь экзешник? Использование стороннего софта вроде ResHacker заблокировано на уровне политик ограниченного использования программ.
greg zakharov
19-06-2021, 21:46
Смотрите в таблицу ресурсов, находите нужный, получаете его смещение и размер. Для простоты можете обратиться к модулю peview.
Install-Module peview
Пример извлечения драйвера из Process Monitor Руссиновича.
┌─[E:\sandbox]
└λ Import-Module peview
┌─[E:\sandbox]
└λ Get-PeResources .\test\procmon.exe
AFX_DIALOG_LAYOUT
HISTORY_DEPTH (RVA:000FE428, Offset:000F4A28, Size:0x2)
USAGE (RVA:000FE420, Offset:000F4A20, Size:0x2)
BINRES
RCDRIVERNT (RVA:000FE430, Offset:000F4A30, Size:0x16F78) # драйвер
CURSOR
21 (RVA:000FE180, Offset:000F4780, Size:0x134)
...
┌─[E:\sandbox]
└λ [IO.File]::WriteAllBytes(
>> 'E:\sandbox\procmon.sys', (Format-Hex .\test\procmon.exe -Offset 0xF4A30 -Count 0x16F78
>> ).Bytes)
┌─[E:\sandbox]
└λ Get-PeHeaders procmon.sys
FILE HEADER VALUES
8664 machine (AMD64)
8 number of sections
6080496E time date stamp (21.04.2021 15:49:02)
0 pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
DLL
EXECUTABLE_IMAGE
LARGE_ADDRESS_AWARE
OPTIONAL HEADER VALUES
20B magic # (PE32+)
14.28 linker version
...
По аналогии извлекается любой другой PE файл.
Хотелось бы одной командой, но все равно спасибо. Можно помечать тему решенной.
А как такое может быть: у exe есть иконка, а Get-PeHeaders из указанного модуля показывает что ресурсов нет?
FILE HEADER VALUES
14C machine (I386)
3 number of sections
4651D825 time date stamp (21.05.2007 17:34:29)
0 pointer to symbol table
0 number of symbols
E0 size of optional header
...
0 [ 0] RVA [size] of Resources Directory
0 [ 0] RVA [size] of Exception Directory
0 [ 0] RVA [size] of Certificates Directory
0 [ 0] RVA [size] of Base Relocation Directory
0 [ 0] RVA [size] of Debugs Directory
0 [ 0] RVA [size] of Architecture Directory
0 [ 0] RVA [size] of Global Pointer Directory
0 [ 0] RVA [size] of Thread Storage Directory
0 [ 0] RVA [size] of Load Configuration Directory
0 [ 0] RVA [size] of Bound Import Directory
0 [ 0] RVA [size] of Import Address Table Directory
0 [ 0] RVA [size] of Delay Import Directory
0 [ 0] RVA [size] of Com Descriptor Directory
0 [ 0] RVA [size] of Reserved Directory
Name VirtSize VirtAddr DataSize RawData Characteristics
---- -------- -------- -------- ------- ---------------
dat0 0000C000 00001000 00000000 00000400 {MEM_WRITE, CNT_UNINITIALIZED_DATA, MEM_EXECUTE, MEM_READ}
dat1 00009000 0000D000 00008400 00000400 {MEM_WRITE, CNT_INITIALIZED_DATA, MEM_EXECUTE, MEM_READ}
dat2 00001000 00016000 00000200 00008800 {MEM_WRITE, CNT_INITIALIZED_DATA, MEM_READ}
greg zakharov
21-06-2021, 17:33
Судя по секциям, файл пожат чем-то похожим на UPX. Возможно, что это и он есть, правда видоизменённый. В бытность актуальности PEiD можно было бы глянуть в последнем, сейчас ничего не остаётся как смотреть в hex-редактор или рыскать по БД сигнатур YARA. Последняя используется не только как инструмент в борьбе с вирусами, но и для выявления пакеров и протекторов.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.