КТ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], и пошёл стек херачить. А ещё регистры не сохранил, ну короче просто уничтожил свой код, а С тебе поспособствовал. Пиши либо на С, либо на ассемблере. Ну, или гадай. На крайний случай, можно написать библиотеку на ассемблере, и вызывать из С. Но ни в коем случае не мешать С и ассемблер в одном исходнике.
КТ315
а через соглашениях о вызовах функций есть резон передавать аргументы в связке с Си?
В каком смысле? Вызывать С-функции из ассемблера - да. Например, библиотеки всякие типа msvcrt, которые уже скомпилированы. Что уже скомпилировано - не имеет отношения к языку, я так считаю. Я в FASM могу взять эту msvcrt.dll, и с помощью директивы file просто вырезать оттуда байты кода printf (поправив адреса), и всё будет работать. Просто вырезал функцию, и себе в код вставил, не написав ни одной строчки, не затронув С вообще. Это байты, не более. Меня не волнует, на чём оно написано, если я это не вижу в своём исходнике.
Replicant
Например писать void _stdcall func(); или что-то в этом роде
Replicant
Replicant
Значит я не понимаю в чем именно проблема.
КТ315
Значит я не понимаю в чем именно проблема.
В том, что нужно: 0. Писать либо только на ассемблере, либо только на С 1. Вместо lea, mov 3. Сохранить регистры по соглашению, и возможно придётся поправить указатель на переменную в стеке
Replicant
0. Это понятно, но препод говорит писать на Си с асм вставкой в VS.
КТ315
0. Это понятно, но препод говорит писать на Си с асм вставкой в VS.
После такой связки, я бы с ним не общался, он нерукопожатный.
Replicant
Пензенский Государственный Университет
Replicant
Там все преподы кроме молодых требуют такую связку
Replicant
Имен я уж называть не буду)
The Bird of Hermes
0. Это понятно, но препод говорит писать на Си с асм вставкой в VS.
Это вообще глупо, сами микромягкие не хотят, чтобы люди так делали - не просто так они вырезали асмовставки из х64
КТ315
Там все преподы кроме молодых требуют такую связку
У Авдеева Алексея Алексеевича крутая специальность, "Взрыватели и системы управления средствами поражения", это же как в фильме "Законопослушный гражданин", который наказывал плохишей с помощью удалённых взрывчаток и пулемётов. А остальные зануды, да и в ассемблере ноль все, скорее всего.
Replicant
А с каким компилятором не будет ошибкой использовать асм вставки?
notme
Это вообще глупо, сами микромягкие не хотят, чтобы люди так делали - не просто так они вырезали асмовставки из х64
Кстати, а почему? Я где не задавал вопрос - никто не объяснил толком почему вырезали
The Bird of Hermes
Кстати, а почему? Я где не задавал вопрос - никто не объяснил толком почему вырезали
Типа небезопасно и мешает оптимизации, что-то в этом роде я слышал. Говорят хотите асм использовать - делайте отдельную функцию на масм и линкуйте
КТ315
А с каким компилятором не будет ошибкой использовать асм вставки?
Ассемблерные вставки это сама по себе и есть ошибка. Ты видишь в коде func(arg1), и думаешь, что это указатель. А на деле компилятор передаёт его в стек, или ещё куда-то (в зависимости от температуры и УФ-индекса), и весь твой код ломается, ломается и ещё раз ломается. Писать нужно весь код только на ассемблере, тогда будешь понимать, что у тебя происходит.
The Bird of Hermes
Небезопасно - это с какой точки зрения?
Ну типа смотри, с точки зрения асма любой объект в памяти - метка. Соответственно асм может по этой метке с памятью делать что угодно. А асмовставка имеет доступ ко всем идентификаторам, доступным с той точки, где используется
The Bird of Hermes
В функцию-то тебе ещё надо их специально руками передать
КТ315
А с каким компилятором не будет ошибкой использовать асм вставки?
Вот, например: myfunc: Ты указатель в стек передал, смог бы ты тут написать lea eax, dword[esp+4] чисто логически? Сомневаюсь, такой ошибки ты бы никогда не сделал. ret callfunc: push arg1 call myfunc add esp, 4 ret
The Bird of Hermes
Мне даже интересно, к насколько серьёзным последствиям может привести такое)
КТ315
Типа возврат из функции адреса аргумента?) ахахахаха
Нет, типа в коде выше он затёр стек, думая что компилятор ему даёт указатель, а на самом деле в функции он ему даёт смещение внутри стека. Он сделал lea eax, myvar Думая, что у него там указатель, а на деле компилятор ему сделал lea eax, dword[esp+N], и он затёр весь стек.
The Bird of Hermes
Ну так на то он и асм, чтобы делать то, что компилер не может
Ну проблема в том, что компилер может своими оптимизациями некоторые объекты попросту уничтожать
notme
Ну проблема в том, что компилер может своими оптимизациями некоторые объекты попросту уничтожать
Ну ясно что со стороны яву тоже нужно с умом подходить к встраиванию асм вставки
КТ315
Ну тут надо просто помнить, чем являются аргументы и локальные переменные. И что передавать их адреса глубже по цепочке вызовов можно, а возвращать - нельзя
Чем являются аргументы в С* и локальные переменные в С* и как ведёт себя С-компилятор* и как он захочет сгенерировать код*
КТ315
То есть, просто бегать на побегушках у него.
The Bird of Hermes
Ну ясно что со стороны яву тоже нужно с умом подходить к встраиванию асм вставки
Микромягкие видимо решили, что им нафиг не нужен этот гемор с отслеживанием асмовставок
Replicant
0. Это понятно, но препод говорит писать на Си с асм вставкой в VS.
Аргументируя это, что на чистом асме писать очень сложно
notme
В обчем, пока не понятно Это какие-то искуственные ограничения, а не технологические получается
The Bird of Hermes
Чем являются аргументы в С* и локальные переменные в С* и как ведёт себя С-компилятор* и как он захочет сгенерировать код*
Ну локальные переменные и аргументы это либо сохраняемые регистры, либо место в стеке. С местом в стеке как я сказал дело обстоит, а от регистра взять адрес все равно не получится
КТ315
Аргументируя это, что на чистом асме писать очень сложно
Вот он и доказал, что сам не знает. Так только новички считают. Программисты на ассемблере давно на форумах уже столько софта настрочили, аж представить сложно.
The Bird of Hermes
The Bird of Hermes
...я бы даже сказал легче
The Bird of Hermes
Вообще асм не заставляет использовать чисто голые инструкции и регистры
The Bird of Hermes
Аргументируя это, что на чистом асме писать очень сложно
Например вот я потяхоньку пишу прогу для отправки-получения данных с ком-портов
The Bird of Hermes
Заворачиваю все в обертку псевдоклассов, Си так не может😁
Replicant
а известные GCC и Clang не справляются вообще?
КТ315
если не думать, а знать, то всех этих ошибок можно избежать
По моему мнению, это плохо. Потому что нужно заучивать логику компилятора. А главное, приходится её заучивать только когда начинаешь писать код на ассемблере. А код на ассемблере начинают писать когда не хватает сил компилятора.
КТ315
Вот так человек может всю жизнь на С писать, отлаживать с помощью символов в IDE какой-то, и даже не знать про соглашения о вызовах.
notme
Ну я вот со вставок начал знакомство с асмом , какгбэ оч.удобно для старта
notme
Так в этом и суть знания с/с++
Как и суть какого-либо знания вообще
The Bird of Hermes
Ну я вот со вставок начал знакомство с асмом , какгбэ оч.удобно для старта
Ну с этой стороны да, так как у высокоуровневых языков обычно сразу современная и удобная среда из коробки, а у ассемблера... Кхем... FASMW) С функционалом текстового редактора слабее чем нотпад++)
Aiwan \ (•◡•) / _bot
КТ315
И из-за этого сужается карман. Нет свободного полёта. Они либо могут какой-то заточенный прикладной софт, либо какой-то простой системный написать. По шаблону. А, допустим, попросишь написать свой формат библиотек для быстрой загрузки - начинают мямлить, потому что не понимают, как это - загрузить в память, и исполнить код, это ж писец что-то невообразимое! Или, например, взять и подменить ввод внутри cmd.exe - это ж ахереть!! Как так? Там хукать только через detour умеют, а головой подумать, и самому написать уникальный перехват и шелл для подмены - это как? В С это такие пляски.... А за такие проекты платят прилично, я даже скажу - от 15-20 тыс. руб! У меня на FASM это выходит строк 200-300.
notme
твой код работал на всех опциях оптимизации?
Да, т.к. это было во времена Delphi 7, а сейчас и с FPC нет проблем т.к. особенности можно заифдефить
КТ315
Скинь 200-300 строк на FASM'е ) тож буду 20к рубить 😄
Так не получится) нужно самому уметь такое писать.
notme
твой код работал на всех опциях оптимизации?
Ну и оптимизатор у дельфей, фпц не такой агрессивный, он оч.слаб, может поэтому не было проблем
КТ315
Скинь 200-300 строк на FASM'е ) тож буду 20к рубить 😄
А есть ещё такой заказ - PE загрузчик, правами администратора подгрузить шелл с запуском через перехват в DbgPrint в user-mode сервис, шелл этот должен расшифровать сам PE, прочитав его из программы, и исполнить (LoadPE) с поддержкой TLS, SEH и прочих штук. От 50 тыс. руб.
КТ315
У меня выходило порядка 600-900 строк на FASM.
Aiwan \ (•◡•) / _bot
У меня выходило порядка 600-900 строк на FASM.
а если сократить макросами, сколько бы вышло примерно?
КТ315
а если сократить макросами, сколько бы вышло примерно?
Не знаю, там довольно узкие места, макросы очень опасно использовать, мне нужен полный контроль над кодом.
КТ315
Может, строк 300-400. Там всё-таки самой логики немало, ещё переменные, макросы для шифрования кода на этапе компиляции и пр. вещи.
КТ315
С invoke было бы 100
Нет, не было бы.