КТ315
Да всё по канонам. Премиум с ненастроенным эмодзи, аватарка успешного человека, и в тэге - Имя_ФамилияГод.
Не живой, а телега уже забанила пидора.
Дмитрий
Дмитрий
материал слабо освещен
Дмитрий
Dim Dim, [30.05.2024 17:41]
fd 14 14 14 f4 64 67 07 28 ad 07 46 ea 93 6f 28
14 4f ba dc 7c 0b 6d 86 68 8e d2 66 d1 3d ec 4e
77 25 76 0c 41 e2 76 d7 1c 05 80 eb a1 8a
Dim Dim, [30.05.2024 17:41]
господа
это похоже на шифр?
Дмитрий
Dim Dim, [30.05.2024 17:43]
а не слишком ли много 14?
Dim Dim, [30.05.2024 17:43]
для шифра
Дмитрий
Dim Dim, [30.05.2024 17:48]
82 70 3B 00 00 00 7D 2C 25 25 70 32 64 10 E7 71
4A 15 2A 84 3B 50 CC D2 BF 1C E9 49 71 D9 72 D9
14 36 C5 04 1D 74 B4 78 8D BB BD EC 49 63 5E 8D
25 53 20 67 CF 54 7C B0 10 04 58 45 CF 02
82 70 3B 00 00 00 7D 2C 25 25 70 32 64 10 6E CD
FD 14 14 14 F4 64 67 07 28 AD 07 46 EA 93 6F 28
14 4F BA DC 7C 0B 6D 86 68 8E D2 66 D1 3D EC 4E
77 25 76 0C 41 E2 76 D7 1C 05 80 EB A1 8A
Dim Dim, [30.05.2024 17:48]
вот контекст
Dim Dim, [30.05.2024 17:48]
тут и заголовок можно увидеть
Dim Dim, [30.05.2024 17:48]
и тело
Dim Dim, [30.05.2024 17:49]
7D 2C 25 25
Dim Dim, [30.05.2024 17:49]
по идее должно содержаться внутри
Dim Dim, [30.05.2024 17:50]
82 70 3B 00 00 00 7D 2C 25 25 70 32 64 10 E7 71
4A 15 2A 84 3B 50 CC D2 BF 1C E9 49 71 D9 72 D9
14 36 C5 04 1D 74 B4 78 8D BB BD EC 49 63 5E 8D
25 53 20 67 CF 54 7C B0 10 04 58 45 CF 02
82 70 3B 00 00 00 7D 2C 25 25 70 32 64 10 6E CD
FD 14 14 14 F4 64 67 07 28 AD 07 46 EA 93 6F 28
14 4F BA DC 7C 0B 6D 86 68 8E D2 66 D1 3D EC 4E
77 25 76 0C 41 E2 76 D7 1C 05 80 EB A1 8A
Dim Dim, [30.05.2024 17:50]
возможно индексы ключей дешифрования
Dim Dim, [30.05.2024 17:58]
82 70 3b 00 00 00 7d 2d 41 4d 70 32 64 10 e7
71 b1 b3 87 4b 05 50 43 40 51 3e d5 c9 dd 97 97
a3 5c f3 b5 d4 ef 00 de 99 fe 3b 27 d3 e8 8b 39
19 26 28 f0 ed 9e bf 49 57 a5 e2 0b c5 31 da
82 70 3b 00 00 00 7d 2c d7 7e 70 32
64 10 e7 71 c6 18 d5 76 62 70 05 1a 8e 0b 6d 01
2c 2f a5 b9 ee 70 f9 e3 63 01 5b 2d 2f cc 62 ca
ff d0 ab af 5d 0d 9a 6e e3 c2 82 71 cf 28 f6 e0
0a 73
Dim Dim, [30.05.2024 17:58]
вот похожие
КТ315
Полундра!!! Флуд!!!
Дмитрий
Replicant
Всем привет, помогите пожалуйста решить проблему, пишу на C c ассемблерной вставкой, компилятор MSVC, не могу перевести число в дополнительный код выдает ошибку.
#include <iostream>
#include <cstring>
void convertToBinaryString(int num, char* answ) {
_asm {
mov ecx, 32
lea esi, answ
mov eax, num
loop_start :
test eax, 1
jz zero_bit
mov byte ptr[esi], '1'
jmp next_iteration
zero_bit :
mov byte ptr[esi], '0'
next_iteration :
inc esi
shr eax, 1
loop loop_start
}
answ[32] = '\0';
}
int main() {
char binary[33];
memset(binary, 0, sizeof(binary));
convertToBinaryString(42, binary);
std::cout << binary << std::endl;
return 0;
}
ошибка в строке answ[32] = '\0' : Exception thrown: write access violation.
answ was 0x31303130.
КТ315
Всем привет, помогите пожалуйста решить проблему, пишу на C c ассемблерной вставкой, компилятор MSVC, не могу перевести число в дополнительный код выдает ошибку.
#include <iostream>
#include <cstring>
void convertToBinaryString(int num, char* answ) {
_asm {
mov ecx, 32
lea esi, answ
mov eax, num
loop_start :
test eax, 1
jz zero_bit
mov byte ptr[esi], '1'
jmp next_iteration
zero_bit :
mov byte ptr[esi], '0'
next_iteration :
inc esi
shr eax, 1
loop loop_start
}
answ[32] = '\0';
}
int main() {
char binary[33];
memset(binary, 0, sizeof(binary));
convertToBinaryString(42, binary);
std::cout << binary << std::endl;
return 0;
}
ошибка в строке answ[32] = '\0' : Exception thrown: write access violation.
answ was 0x31303130.
Когда мешаешь ассемблер со всякой хернёй, на что ты надеешься?
В коде ты написал func (arg1, arg2), и думаешь тебе прям вот так компилятор передал указатели?
А фигу, на 32 через стек передаются, и ты скорее всего сделал lea esi, dword[esp+N], и пошёл стек херачить.
А ещё регистры не сохранил, ну короче просто уничтожил свой код, а С тебе поспособствовал.
Пиши либо на С, либо на ассемблере. Ну, или гадай.
На крайний случай, можно написать библиотеку на ассемблере, и вызывать из С. Но ни в коем случае не мешать С и ассемблер в одном исходнике.
Replicant
Когда мешаешь ассемблер со всякой хернёй, на что ты надеешься?
В коде ты написал func (arg1, arg2), и думаешь тебе прям вот так компилятор передал указатели?
А фигу, на 32 через стек передаются, и ты скорее всего сделал lea esi, dword[esp+N], и пошёл стек херачить.
А ещё регистры не сохранил, ну короче просто уничтожил свой код, а С тебе поспособствовал.
Пиши либо на С, либо на ассемблере. Ну, или гадай.
На крайний случай, можно написать библиотеку на ассемблере, и вызывать из С. Но ни в коем случае не мешать С и ассемблер в одном исходнике.
а через соглашениях о вызовах функций есть резон передавать аргументы в связке с Си?
КТ315
а через соглашениях о вызовах функций есть резон передавать аргументы в связке с Си?
В каком смысле? Вызывать С-функции из ассемблера - да. Например, библиотеки всякие типа msvcrt, которые уже скомпилированы.
Что уже скомпилировано - не имеет отношения к языку, я так считаю.
Я в FASM могу взять эту msvcrt.dll, и с помощью директивы file просто вырезать оттуда байты кода printf (поправив адреса), и всё будет работать. Просто вырезал функцию, и себе в код вставил, не написав ни одной строчки, не затронув С вообще. Это байты, не более. Меня не волнует, на чём оно написано, если я это не вижу в своём исходнике.
Replicant
Например писать void _stdcall func();
или что-то в этом роде
Replicant
КТ315
Replicant
Значит я не понимаю в чем именно проблема.
КТ315
Значит я не понимаю в чем именно проблема.
В том, что нужно:
0. Писать либо только на ассемблере, либо только на С
1. Вместо lea, mov
3. Сохранить регистры по соглашению, и возможно придётся поправить указатель на переменную в стеке
Replicant
0. Это понятно, но препод говорит писать на Си с асм вставкой в VS.
КТ315
КТ315
Replicant
Пензенский Государственный Университет
КТ315
Replicant
Там все преподы кроме молодых требуют такую связку
Replicant
Имен я уж называть не буду)
КТ315
Там все преподы кроме молодых требуют такую связку
У Авдеева Алексея Алексеевича крутая специальность, "Взрыватели и системы управления средствами поражения", это же как в фильме "Законопослушный гражданин", который наказывал плохишей с помощью удалённых взрывчаток и пулемётов.
А остальные зануды, да и в ассемблере ноль все, скорее всего.
Replicant
А с каким компилятором не будет ошибкой использовать асм вставки?
notme
notme
notme
КТ315
А с каким компилятором не будет ошибкой использовать асм вставки?
Ассемблерные вставки это сама по себе и есть ошибка.
Ты видишь в коде func(arg1), и думаешь, что это указатель. А на деле компилятор передаёт его в стек, или ещё куда-то (в зависимости от температуры и УФ-индекса), и весь твой код ломается, ломается и ещё раз ломается.
Писать нужно весь код только на ассемблере, тогда будешь понимать, что у тебя происходит.
The Bird of Hermes
Небезопасно - это с какой точки зрения?
Ну типа смотри, с точки зрения асма любой объект в памяти - метка. Соответственно асм может по этой метке с памятью делать что угодно. А асмовставка имеет доступ ко всем идентификаторам, доступным с той точки, где используется
The Bird of Hermes
В функцию-то тебе ещё надо их специально руками передать
The Bird of Hermes
The Bird of Hermes
Мне даже интересно, к насколько серьёзным последствиям может привести такое)
КТ315
Типа возврат из функции адреса аргумента?) ахахахаха
Нет, типа в коде выше он затёр стек, думая что компилятор ему даёт указатель, а на самом деле в функции он ему даёт смещение внутри стека.
Он сделал
lea eax, myvar
Думая, что у него там указатель, а на деле компилятор ему сделал lea eax, dword[esp+N], и он затёр весь стек.
notme
КТ315
The Bird of Hermes
Нет, типа в коде выше он затёр стек, думая что компилятор ему даёт указатель, а на самом деле в функции он ему даёт смещение внутри стека.
Он сделал
lea eax, myvar
Думая, что у него там указатель, а на деле компилятор ему сделал lea eax, dword[esp+N], и он затёр весь стек.
Ну тут надо просто помнить, чем являются аргументы и локальные переменные. И что передавать их адреса глубже по цепочке вызовов можно, а возвращать - нельзя
notme
КТ315
КТ315
То есть, просто бегать на побегушках у него.
Replicant
notme
В обчем, пока не понятно
Это какие-то искуственные ограничения, а не технологические получается
The Bird of Hermes
The Bird of Hermes
...я бы даже сказал легче
The Bird of Hermes
Вообще асм не заставляет использовать чисто голые инструкции и регистры
The Bird of Hermes
Заворачиваю все в обертку псевдоклассов, Си так не может😁
Aiwan \ (•◡•) / _bot
Replicant
а известные GCC и Clang не справляются вообще?
Aiwan \ (•◡•) / _bot
Нет, типа в коде выше он затёр стек, думая что компилятор ему даёт указатель, а на самом деле в функции он ему даёт смещение внутри стека.
Он сделал
lea eax, myvar
Думая, что у него там указатель, а на деле компилятор ему сделал lea eax, dword[esp+N], и он затёр весь стек.
если не думать, а знать, то всех этих ошибок можно избежать
КТ315
Вот так человек может всю жизнь на С писать, отлаживать с помощью символов в IDE какой-то, и даже не знать про соглашения о вызовах.
Aiwan \ (•◡•) / _bot
notme
Ну я вот со вставок начал знакомство с асмом , какгбэ оч.удобно для старта
The Bird of Hermes
Aiwan \ (•◡•) / _bot
КТ315
И из-за этого сужается карман. Нет свободного полёта.
Они либо могут какой-то заточенный прикладной софт, либо какой-то простой системный написать. По шаблону.
А, допустим, попросишь написать свой формат библиотек для быстрой загрузки - начинают мямлить, потому что не понимают, как это - загрузить в память, и исполнить код, это ж писец что-то невообразимое!
Или, например, взять и подменить ввод внутри cmd.exe - это ж ахереть!! Как так? Там хукать только через detour умеют, а головой подумать, и самому написать уникальный перехват и шелл для подмены - это как? В С это такие пляски.... А за такие проекты платят прилично, я даже скажу - от 15-20 тыс. руб!
У меня на FASM это выходит строк 200-300.
notme
И из-за этого сужается карман. Нет свободного полёта.
Они либо могут какой-то заточенный прикладной софт, либо какой-то простой системный написать. По шаблону.
А, допустим, попросишь написать свой формат библиотек для быстрой загрузки - начинают мямлить, потому что не понимают, как это - загрузить в память, и исполнить код, это ж писец что-то невообразимое!
Или, например, взять и подменить ввод внутри cmd.exe - это ж ахереть!! Как так? Там хукать только через detour умеют, а головой подумать, и самому написать уникальный перехват и шелл для подмены - это как? В С это такие пляски.... А за такие проекты платят прилично, я даже скажу - от 15-20 тыс. руб!
У меня на FASM это выходит строк 200-300.
Скинь 200-300 строк на FASM'е ) тож буду 20к рубить 😄
КТ315
КТ315
Скинь 200-300 строк на FASM'е ) тож буду 20к рубить 😄
А есть ещё такой заказ - PE загрузчик, правами администратора подгрузить шелл с запуском через перехват в DbgPrint в user-mode сервис, шелл этот должен расшифровать сам PE, прочитав его из программы, и исполнить (LoadPE) с поддержкой TLS, SEH и прочих штук.
От 50 тыс. руб.
КТ315
У меня выходило порядка 600-900 строк на FASM.
КТ315
Может, строк 300-400. Там всё-таки самой логики немало, ещё переменные, макросы для шифрования кода на этапе компиляции и пр. вещи.
Alexey
И из-за этого сужается карман. Нет свободного полёта.
Они либо могут какой-то заточенный прикладной софт, либо какой-то простой системный написать. По шаблону.
А, допустим, попросишь написать свой формат библиотек для быстрой загрузки - начинают мямлить, потому что не понимают, как это - загрузить в память, и исполнить код, это ж писец что-то невообразимое!
Или, например, взять и подменить ввод внутри cmd.exe - это ж ахереть!! Как так? Там хукать только через detour умеют, а головой подумать, и самому написать уникальный перехват и шелл для подмены - это как? В С это такие пляски.... А за такие проекты платят прилично, я даже скажу - от 15-20 тыс. руб!
У меня на FASM это выходит строк 200-300.
С invoke было бы 100
КТ315