• XSS.stack #1 – первый литературный журнал от юзеров форума

PE EXE

Вот короче побаловался с PE Loader`ом, программа-шутка :)
Надо рядом с файлом положить calc.exe(хотя по-моему и без него пашет :))
Pe Loader
Пароль на архив: xss.pro/

Спустя 2 минуты:
Вчера забыл, что это за программа запустил вроде, так ничего особеного лоадер, закрыл и ";*";*№";", но это сугубо моя реакция :)
P.S: программа никого вреда компьютеру не причиняет, а лишь претендует на ношение звания: "Самый маленький лоадер" - это конечно шутка(в плане лоадера, не подумайте ещё чего :)).

P.S.#2:
Отпишитесь хотя бы те, кто скачивал данный файл, интересна реакция :) (не забудьте "ОК" в программке нажать :)).
+ интересно, криптор сегодня "SPALILSYA", даже не знаю, что делать...
так ведь себе можно пятую точку порвать, если сигнатуру антивируса искать :( подскажите(знатоки) куда мне дальше копать...
(специально модифицирую мессадж, чтобы не флудить).
 
Что за херня? Зачем винупаком паковать было?
Ты через ShellExecuteA запускаешь калькулятор из винды, как это PE Loader?


Код:
00401021   .  6A 08         PUSH 8                                  ; /IsShown = 8
00401023   .  6A 00         PUSH 0                                  ; |DefDir = NULL
00401025   .  6A 00         PUSH 0                                  ; |Parameters = NULL
00401027   .  68 2D304000   PUSH 40302D                             ; |FileName = "calc.exe"
0040102C   .  68 36304000   PUSH 403036                             ; |Operation = "open"
00401031   .  6A 00         PUSH 0                                  ; |hWnd = NULL
00401033   .  E8 98000000   CALL 004010D0                           ; \ShellExecuteA
00401038   .  61            POPAD
00401039   .  6A 40         PUSH 40                                 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
0040103B   .  68 00304000   PUSH 403000                             ; |Title = "Hello"
00401040   .  68 06304000   PUSH 403006                             ; |Text = "Coded by Chococream(14:47 26.11.2009)."
00401045   .  6A 00         PUSH 0                                  ; |hOwner = NULL
00401047   .  E8 6C000000   CALL 004010B8                           ; \MessageBoxA
0040104C   .  68 D0070000   PUSH 7D0                                ; /Timeout = 2000. ms
00401051   .  E8 74000000   CALL 004010CA                           ; \Sleep
00401056   .  68 96000000   PUSH 96                                 ; /Duration = 150. ms
0040105B   .  68 B80B0000   PUSH 0BB8                               ; |Frequency = BB8 (3000.)
00401060   .  E8 59000000   CALL 004010BE                           ; \Beep
00401065   .  68 FB000000   PUSH 0FB                                ; /Duration = 251. ms
0040106A   .  68 B80B0000   PUSH 0BB8                               ; |Frequency = BB8 (3000.)
0040106F   .  E8 4A000000   CALL 004010BE                           ; \Beep
00401074   .  68 63010000   PUSH 163                                ; /Duration = 355. ms
00401079   .  68 B80B0000   PUSH 0BB8                               ; |Frequency = BB8 (3000.)
0040107E   .  E8 3B000000   CALL 004010BE                           ; \Beep
00401083   .  68 64010000   PUSH 164                                ; /Duration = 356. ms
00401088   .  68 B80B0000   PUSH 0BB8                               ; |Frequency = BB8 (3000.)
0040108D   .  E8 2C000000   CALL 004010BE                           ; \Beep
00401092   .  68 04010000   PUSH 104                                ; /Duration = 260. ms
00401097   .  68 B80B0000   PUSH 0BB8                               ; |Frequency = BB8 (3000.)
0040109C   .  E8 1D000000   CALL 004010BE                           ; \Beep
004010A1   .  68 96000000   PUSH 96                                 ; /Duration = 150. ms
004010A6   .  68 B80B0000   PUSH 0BB8                               ; |Frequency = BB8 (3000.)
004010AB   .  E8 0E000000   CALL 004010BE                           ; \Beep
004010B0   .  6A 00         PUSH 0                                  ; /ExitCode = 0
004010B2   .  E8 0D000000   CALL 004010C4                           ; \ExitProcess
004010B7      CC            INT3
004010B8   $- FF25 18204000 JMP DWORD PTR DS:[402018]               ;  USER32.MessageBoxA
004010BE   $- FF25 04204000 JMP DWORD PTR DS:[402004]               ;  kernel32.Beep
004010C4   .- FF25 08204000 JMP DWORD PTR DS:[402008]               ;  kernel32.ExitProcess
004010CA   $- FF25 00204000 JMP DWORD PTR DS:[402000]               ;  kernel32.Sleep
004010D0   $- FF25 10204000 JMP DWORD PTR DS:[402010]               ;  shell32.ShellExecuteA
 
Sunzer
Я по-моему написал, что я побаловался с PE Loader`ом, наверное из этого следовало судить о том, что это не оный, а для пущей уверенности я написал, что это программа-шутка. Сжал для того, чтобы уменьшить размер программы, всё просто. Спасибо за исходный текст, думаю многим будет интересен такой оригинальный подход... :) К тому же хотелось бы услышать ответа по-поводу P.S.#2!
Лучше бы привели исходный код другого лоадера, так сказать для общего развития.
 
ShellExecuteA это туфта. От аверов прятать это уже посложнее :)

А вот про лоадер:

к примеру у тебя где то в памяти есть бинарь, нужно ему передать управление:
1)Читаешь PE хидер смотришь что да как
2)Выделяешь память по ImageBase размером SizeOfImage
3)Пишешь туда оригинальный хидер
4)Секции по местам пишешь, учитывай выравнивания
5)Востанавливаешь импорт
6)Смотришь в хидере EP и передаешь туда управлениe.
 
Сначала недопонимал суть PE Loader`а, что за ******... вроде нашёл исходники лоадера, скомпилил, собрал, понял суть его работы(загрузка файл из памяти).

Пошёл делать сэмпл... Так, просто задаю вопрос, над чем ещё можно потренироваться, кроме криптора и PE Loader`a, может подскажите, что дальше изучать(есть в планах добавить на xss.pro/ несколько статей по "VZLOMY" программ).
 
Сам вроде разобрался в ПЕ лоадере(думаю многим будет полезно)...
Суть работы такова:
1. Резервируем область памяти.
2. Когда программа скопирует заголовок, все секции надо разместить
в памяти по своим местам, не забывая про выравнивание...
3.Осталасось программе заполнить таблицу импорта запуск. файла!!!
4.Освобождаем память, где находится загрузчик, затем передаваём управление точке входа.
Исходник взял с wasm.ru(для примера).
Сам лоадер
Исходник лоадера(написан на FASM!!!)
Пароль: xss.pro/
 
для начала нужно понять как создается процесс
1) Разбор параметров переданных в CreateProcessW, открытие исполнимого файла и определение его типа. На этом этапе определяется является ли запускаемый файл dos или win16 файлом (для них запускается ntvdm.exe и wowexec.exe соответственно), для .bat и .cmd файлов запускается cmd.exe. В дальнейшем будем считать, что запускается обычный win32 PE файл.
2) Производиться открытие исполнимого файла с помощью ZwOpenFile.
3) Из открытого файла создается секция с атрибутом SEC_IMAGE с помощью вызова ZwCreateSection.
4) С помощью ZwQuerySection извлекаются атрибуты стека и точки входа запускаемого процесса.
5) Создается объект нового процесса с помощью ZwCreateProcess. На уровне ядра в этот момент происходит создание адресного пространства и структуры EPROCESS. Важно заметить, что в этот момент процесс еще не имеет своих потоков и не может исполняться.
6) Происходит установка приоритета процесса с помощью ZwSetInformationProcess.
7) С помощью ZwQueryInformationProcess извлекается выданный системой адрес PEB нового процесса.
8) Производиться заполнение PEB и дуплицирование хэндлов ввода-вывода (только для консольных программ). В этот момент многократно вызывается ZwAlocateVirtualMemory, ZwReadVirtualMemory и ZwWriteVirtualMemory.
9) Производиться выделение памяти под стек первичного потока и подготовка его стартового контекста.
10) С помощью ZwCreateThread создается первичный поток.
11) Подсистема win32 (csrss.exe) информируется о старте нового процесса через LPC сообщения. На верхнем уровне этим заведует функция CsrClientCallServer, которая в свою очередь вызывает ZwRequestWaitReplayPort.
12) Первичный поток запускается на исполнение с помощью ZwResumeThread.
 
Есть образец Assembler кода для кодировки URL линка? URL адрес в коде должен быть в зашифрованном виде.
на opensc.ws лежала пачка лоадеров на фасме. в том числе и с шифрованием
 
на opensc.ws лежала пачка лоадеров на фасме. в том числе и с шифрованием
с исходниками?
отключить уак можно вроде через командную строку , ну или крутить мутить с токенами и CreateProcessAsUser
так мы же загружаем наш файл не сами себе..
 
вот нашел кое-что, XOR шифрование

Код:
; nasm -f elf32 myfile.asm
; ld -o myfile myfile.o

global _start

%define THE_KEY 0CDh

section .text
_start:

     mov esi, secret
     mov edi, plain
     mov ecx, secret_len
.top:
     lodsb
     xor al, THE_KEY
     stosb
     loop .top

; dump it to stdout, just to prove we did something
     mov edx, secret_len
     mov ecx, plain
     mov ebx, 1
     mov eax, 4
     int 80h

exit:
     mov eax, 1
     int 80h

section .bss
     plain resb 80

section .data
     secret db "?????aa???a©¤????a®? "
     secret_len equ $ - secret
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх