· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› минимальная pe-прога

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Сен 8, 2004 02:48:29

> у меня если align меньше 4096 оно не запускается
если у тебя NT, то минимальное выравнивание == 2. ms link умеет создавать такие файлы. задай ему ключ драйвера. он ругнется, что это никакой не драйвер в натуре, но файл таки создаст.


Дата: Сен 8, 2004 10:27:43

kaspersky
„ты мне в самом файле релоки покажи“
велл.

собрано на FASM'e, он сам себе линкер.

1197402520__testPE.rar


Дата: Сен 8, 2004 15:45:43

Оно то все создается но если align<4096 при запуске вылетает окно "Error Starting Program - file is improperly linked with aligment less than 0x1000. Fix the error, and then link again"

Возможно если вручную набирать машинный код, то оно и работает. Эта экономия имхо важна только для разработчиков вирусов.


Дата: Сен 8, 2004 19:19:21

„ _583851587__xxx.zip“

О пипл , я вас прошу , не обзывайте так аттачи . У некоторых в squid-е фильтры стоят на порно Ж)

„та экономия имхо важна только для разработчиков вирусов.“

Имхо , я считаю каждый должен попробывать сделать минипе :)
Просто , чтобы разобраться и уверен можно сделать полезные для себя выводы .


Дата: Сен 8, 2004 20:48:15 · Поправил: ovod

На assembler.ru была статья "Минимальная stub-программа"
и приводилась такая вот прога в 64 байта (она работает как в 98, так и в DOS),автор некто Grief
00000000:  4D 5A 00 00 01 00 00 00 │ 01 00 00 00 50 45 00 00   MZ  ☺   ☺   PE
00000010:  4C 01 07 00 08 00 00 00 │ B0 21 CD 29 B4 4C CD 21   L☺• ◘   °!Н)_LН!
00000020:  E0 00 0E 01 0B 01 04 14 │ 20 00 00 00 00 2E 00 00   а ♫☺♂☺♦¶     .
00000030:  18 00 00 00 00 E0 00 00 │ 00 10 00 00 0C 00 00 00   ↑    а   ►  ♀


Дата: Сен 9, 2004 00:43:46

В начале ovod спрашивал про маленький elf.
У меня есть на 88 байт, особо не оптимизировал, уверен, что можно еще десяток байтов выкинуть.


Дата: Сен 9, 2004 00:55:50

выкладывай, можно и с комментариями.


Дата: Сен 9, 2004 01:14:14

Нашел в залежах у себя на диске, авторство не мое. Есть несколько неиспользуемых полей (например с 8 по 15 байты) в которые можно что-нибудь засунуть.
00: 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00
10: 02 00 03 00 01 00 00 00 4C 80 04 08 2C 00 00 00
20: 00 00 00 00 00 00 00 00 34 00 20 00 01 00 00 00
30: 00 00 00 00 00 80 04 08 00 80 04 08 58 00 00 00
40: 58 00 00 00 05 00 00 00 00 10 00 00 6A 24 58 CD
50: 80 89 C3 6A 01 58 CD 80
комментировать тут особо нечего, эта штука вылолняет sync, что полезно при отладке драйверов ядра 8-)

вообще загрузка elf - это особая статья, особенно загрузка через интерпретатор ld-linux.so.2 (с его помощью можно сильно извратить процесс загрузки), нормальных доков по этой теме я не встречал, кроме, разве что, сорцов glibc и статеек Red Plait'а. Загрузчик же, который в ядре сидит - примитивен (см. fs/binfmt_elf.c), здесь такого "разнообразия" как в PE нет, imho.


Дата: Сен 9, 2004 17:54:22

Вот из статьи на хакере(153 байта) я сделал чтоб титле был "user32" а текст "MessageBoxA" только работает под ХР
т.к "user32" без ".dll" :(

2019557143__pe_153_bytes.zip


Дата: Сен 9, 2004 19:40:40 · Поправил: ovod

Под XP есть и в 152 байта, иходник написал p0s0l с vingrad.ru (bogrus ссылку выше давал)
ImageBase	equ	400000h
SectionRVA	equ	1000h
PE_offset	equ	PE_Signature - ImageDosHeader
ImageOptionalHeaderSize equ	ImageSectionHeader - ImageOptionalHeader
HeaderSize	equ	HeadersEnd - ImageDosHeader
SectionSize	equ	SectionEnd - ImageDosHeader - 1
ImportVA	equ	ImportBegin - ImageBase
ImportSize	equ	ImportEnd - ImportBegin

SectionStart	equ	ImageBase
DllNameRVA	equ	DllName - SectionStart
FirstThunkRVA	equ	FirstThunk - SectionStart
FuncNameRVA	equ	FuncName - SectionStart

EntryRVA	equ	CodeStart - SectionStart

		org	ImageBase + SectionRVA

		use32

ImageDosHeader:
		db	'MZ'

CodeStart:
		mov	ecx, String ;5b
		push	0 ;2b
		push	ecx ;1b
		jmp	Code2
;                rb      10

PE_Signature:	dd	'PE'
		dw	014Ch	; cpu type

FuncName:	dw	1	; number of sections
		db	'MessageBoxA', 0

		dw	ImageOptionalHeaderSize
		dw	818Fh	; flags

ImageOptionalHeader:
		dw	010Bh	; magic

Code4:
		call	dword [FirstThunk] ;6b
		ret ;1b

String: 	db	'Hello!', 0

		dd	EntryRVA  ; entry point RVA
		dd	0	  ; *base of code
		dd	PE_offset ; *base of data
		dd	ImageBase ; image base
;ImportBegin:
		dd	1000h	; object align
		dd	200h	; file align

FirstThunk:	dd	FuncNameRVA ; Func RVA
		dd	0

		dw	4	; subsys major

DllName:	db	'USER32'

		dd	2000h	; image size
		dd	HeaderSize

ImageSectionHeader:
Code2:
		push	ecx ;1b
		jmp	Code3 ;2b
		db	0

		dw	2	; subsystem

		rb	2

		dd	0
		dd	SectionRVA
		dd	SectionSize		; physical size
		dd	1			; physical offset

Code3:
		push	0 ;2b
		jmp	Code4 ;2b

		dd	2			; number of RVA and sizes

ImportBegin:
		rb	4

		dd	0E0000060h		; characteristics
		dd	ImportVA		; import dir VA

		dd	DllNameRVA    ; Dll name RVA
		dd	FirstThunkRVA ; FirstThunk RVA

ImageOptionalHeader_end:

HeadersEnd:

SectionEnd:

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081