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

Разработка лоадера

Quake3 ну смотри сам:
Код:
data
sour db "test123",0;строка с данными...
dest db 32 dup(0)  ;тут и так ясно...

.code
start:
std;установили флаг управления в 1-теперь строки будут читаться справа-налево...
mov ecx,3;занесли в есх 3...
mov esi,offset sour;загрузили в esi строку с данными
ADD ESI, SIZEOF sour-3; прибавляем в (к) esi строку с конца на -3 символа справа...
mov edi,offset dest;загрузили в edi ту же строку (скопировали...)
rep movsb;а тут повторяеться строка с данными,причем справа-налево...

invoke MessageBox,0,addr dest,0,0;месадж
Ну вот как бы постарался обьяснить... у меня кстати такая же лаба в универе в качестве курсухи была :D
 
Код:
sour db "test123",0
SIZEOF sour возвращает длину этой строки вместе с нулбайтом, поэтому -3, чтоб esi указывал на "1".


Код:
sour db "test123"
db 0
если определить так, то SIZEOF sour возвратит длину строки без нулбайта.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Dark Koder, DeusEx
Спасибо большое за пояснение, вроде понял более менее.
стыдно блин, что я такой тупой. :bang: :fool:
Хз, может в самом деле бросить этот масм к чертям, и учить Си (как давно все советуют)? Или там такой же геморой будет? :sorry:
 
DeusEx вот именно) :punk:
Quake3 да ладно? скажу по своему 2-х летнему опыту асмокодинга- пока не придёт понятие сути,у тебя не будет получаться накодить.
Меня "пробило" только вот после 2-х лет упорного и настырного самоучения асма,курил маны,книги,а вот когда попался "злой препод" в универе по сис.кодингу,и он начал драть нас-О,вот тогда меня пробило и после я всё понял,что учил (он восполнил мои прорехи в самообучении),и всё)))
Так что не говорите чушь,всё в этом мире возможно)
 
Может стоит код куда-то на свн, или гит выложить? Удобнее будет массово править
 
спорить не будем у кого х#й тольще, тред не о том.
Quake3
не очкуй, это не букварь чтоб его за определенные сроки учить, пробуй, пробуй и еще раз пробуй. все получится рано или поздно, потом гордится собой будешь.
 
Quake3 пишет:
Но Системный кодинг, особенно Асм - это Элита, которая доступна единицам, только избранным людям.
Не смеши, меньше завидуй другим и будет проще

Quake3 пишет:
тут дело не в характере,а именно в складе ума.
Тут как раз в твоем случае именно дело в убогом характере, ты зациклился на понятиях непохеков с васма и это тебе не дает нормально развиваться и двигаться дальше

Quake3 пишет:
Короче говоря, в очередной раз убив день на такую ерунду
Я тоже когда-то наступал на эти же грабли, только я на эту ерунду убил три дня %)))
Я тоже юзал в одной функции эту ебаную std и не вызывал cld, а эта функция юзалась в другой функции, которая вызывалась по условию рекурсивно
Падало у меня внутри какой-то системной функции
И вот ебся я ебся и вот понял, что надо взять отладчик и трейсить в ручную до пиздецццаааа
Как оказалось потом из-за того что я не вызывал cld в системной функции когда попадалась команда типа rep movsb то естественно там предполагалось что будет "копирование" байтов "вниз", а из-за того что я в своей функции вызывал std "копирование" было "вверх"...
Тебе нужно просто взять справочник по асм командам пройтись по всем базовым командам (их там, примерно около сотни) и понять, что каждая из них делает и для чего нужна; и после этого периодически в него заглядывать при кодинге
Через какое-то время ты их все уже будешь знать подсознательно, и у тебя вообще не будет напрягов
А то что у тебя попалась такая "сложная" ситуация при кодинге, так радуйся - это "закаляет" твой потенциал кодера
Такие вещи периодически (на начальной стадии обучения) будут давать о себе знать - это нормально, так происходит у всех (некоторые неделями ебуца и ниче живы) и не надо думать что ты какой-то особенный и только у тебя ничего не получается (все через это проходят и я тоже через это проходил, ночами не спал не мог понять че за х#йня) и тебя же никто тут не заставляет кодес каждый день писать и обновлять, не получается, забей, отдохни, займись чем-нибудь другим, потом когда время прейдет, вернешься, допишешь все получицццаааа....
 
Ну пофилософствовали и хватит. Лучше скажите мне вот такую вещь: Есть несколько вариантов упаковки файла для уменьшения размера и его последующего запуска.
1) Выплюнунуть на диск и запустить
2) Запустить в памяти через CreateProcess с флагом CREATE_SUSPEND
3) Свой маленький загрузчик который в памяти распакует файл, перестроит в нем всю адресацию, починит таблицу импорта, разместит секции по нужным адресам и передаст на него управления аля UPX
4) свой вариант

Правильно было бы конечно попробовать самому, но как известно за спрос денег не берут: Как на 2й вариант отреагируют антивирусные программы, если упаковываемый файл, как это щас модно гооврить "ПАЛИТСЯ".
Вопросы:
1) Порождение нового процесса повлечет за собой повторное пробуждение антивируса и пересканирование вновь созданного процесса, или успешно отвалившийся эмулятор на этапе запуска файла больше не притронется к файлу?!
2) Лишен ли 3й вариант недостатков 2го метода, или история та-же ?!

Столкнулся с необходимостью анализа крипторов для одной работы и пришел к выводу, что большинство современных "говнокриптов" действуют именно по 2му варианту.

Хотелось бы услашать мнение KraZz, DeusEx, waahoo, -El, porky365 и остальных "ПРАКТИКОВ", теоретиков вокруг и так достаточно...
 
3) Свой маленький загрузчик который в памяти распакует файл, перестроит в нем всю адресацию, починит таблицу импорта, разместит секции по нужным адресам и передаст на него управления аля UPX

Так и только так!

1) Порождение нового процесса повлечет за собой повторное пробуждение антивируса и пересканирование вновь созданного процесса, или успешно отвалившийся эмулятор на этапе запуска файла больше не притронется к файлу?!

Естественно, алерт проактивки, о том, что неизвестный процесс хочет запустить процесс.

2) Лишен ли 3й вариант недостатков 2го метода, или история та-же ?!

Лишен, но важно использовать антиэмуляцию, чтобы эмулятор ав не добрался до внутренностей.

большинство современных "говнокриптов" действуют именно по 2му варианту
Ну дык школобро не дремлют и продолжают клепать крипторы на вб и дотнет с одниковых сорцов.
 
3) Свой маленький загрузчик который в памяти распакует файл, перестроит в нем всю адресацию, починит таблицу импорта, разместит секции по нужным адресам и передаст на него управления аля UPX
http://wasm.ru/article.php?article=memfile

http://zalil.ru/33329538
Ставишь бряк по адресу 0x401E80.
Далее уже дампишь полученный шеллкод - это и есть лоадер.
Сэмпл собран Mystic криптором, сам шеллкод - кривоват(не в обиду автору :)),
но может послужить каркасом для создания своего загрузчика.

P.S:
0x4018EE-0x4018F2 требуется занопить.
 
Apocalypse уже отписал правильную точку зрения, работать надо в своем АП и никак иначе. задачи кода -
1. посмотреть есть ли релоки у криптуемого бинаря, если нету перекинуть себя в другое место
2. восстановить/распаковать криптуемый код на Image base
3. настроить импорт и релоки если такие есть и передать управление на точку входа.
именно так должен работать нормальный криптор, все остальное наебалово, никаких CreateProcess быть не должно.
Chococream советует заняться реверсом/риперством кода, это не похек, только как пример можно рассмотреть и написать "свое" видение вопроса, а иначе не было.
----
зы: тред о лоадере
 
Второй вариант юзаю в одном проекте-вопросов нету,так как хороший антиемуль решает)
Но вообще согласен с Апокалипсом! :punk:
 
1) Как часто в троянах встречаются TLS, релоки, оверлеи? Стоит ли на них заморачиваться при написании лоадера-ехе-в-памяти или можно положить болт?

2) waahoo, Андромеда вроде содержит 1 секцию и динамически дёргает апишки? Следовательно, код базонезависимый и на его EP можно просто передавать управление, как на шеллкод?
 
1) Как часто в троянах встречаются TLS, релоки, оверлеи? Стоит ли на них заморачиваться при написании лоадера-ехе-в-памяти или можно положить болт?
тлс в делфи поделках. оверлеи используют очень редко. восновном в говняном софте чтоб например id адверта там держать. забей на все это.

2) waahoo, Андромеда вроде содержит 1 секцию и динамически дёргает апишки? Следовательно, код базонезависимый и на его EP можно просто передавать управление, как на шеллкод?
код не базонезависимый. поиск апи по хешам - это не базонезависимость.
 


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