За PInvoke - спасибо, при случае посмотрю.
Ошибся в том что ранее говорил про С++VS19/VS13.
Теперь же предлагаю публике скромное развлечение С#VS19.
***Пример первый.
static void Main(string[] args)
{
int a = 0;
for (int i = 0; i < 10; i++)
{
a = 2;
}
a = 3;
}
int a = 0;
014A0884 xor edx,edx
014A0886 mov dword ptr [ebp-40h],edx
for (int i = 0; i < 10; i++)
014A0889 xor edx,edx
014A088B mov dword ptr [ebp-44h],edx
014A088E nop
014A088F jmp ConsoleApp3.Program.Main(System.String[])+055h (014A089Dh)
{
014A0891 nop
a = 2;
014A0892 mov dword ptr [ebp-40h],2
}
014A0899 nop
for (int i = 0; i < 10; i++)
014A089A inc dword ptr [ebp-44h]
014A089D cmp dword ptr [ebp-44h],0Ah
014A08A1 setl al
014A08A4 movzx eax,al
014A08A7 mov dword ptr [ebp-48h],eax
014A08AA cmp dword ptr [ebp-48h],0
014A08AE jne ConsoleApp3.Program.Main(System.String[])+049h (014A0891h)
a = 3;
014A08B0 mov dword ptr [ebp-40h],3
}
***Пример второй
int a = 0;
int i = 0;
while (i < 10)
{
i++;
a = 2;
}
a = 3;
int a = 0;
04F50884 xor edx,edx
04F50886 mov dword ptr [ebp-40h],edx
int i = 0;
04F50889 xor edx,edx
04F5088B mov dword ptr [ebp-44h],edx
04F5088E nop
04F5088F jmp ConsoleApp3.Program.Main(System.String[])+055h (04F5089Dh)
{
04F50891 nop
i++;
04F50892 inc dword ptr [ebp-44h]
a = 2;
04F50895 mov dword ptr [ebp-40h],2
}
04F5089C nop
while (i < 10)
04F5089D cmp dword ptr [ebp-44h],0Ah
04F508A1 setl al
04F508A4 movzx eax,al
04F508A7 mov dword ptr [ebp-48h],eax
04F508AA cmp dword ptr [ebp-48h],0
04F508AE jne ConsoleApp3.Program.Main(System.String[])+049h (04F50891h)
a = 3;
04F508B0 mov dword ptr [ebp-40h],3
}
***Пример третий
int a = 0;
int i = 0;
do
{
i++;
a = 2;
}
while (i < 10);
a = 3;
int a = 0;
015F0884 xor edx,edx
015F0886 mov dword ptr [ebp-40h],edx
int i = 0;
015F0889 xor edx,edx
015F088B mov dword ptr [ebp-44h],edx
do
{
015F088E nop
i++;
015F088F inc dword ptr [ebp-44h]
a = 2;
015F0892 mov dword ptr [ebp-40h],2
}
015F0899 nop
while (i < 10);
015F089A cmp dword ptr [ebp-44h],0Ah
015F089E setl al
015F08A1 movzx eax,al
015F08A4 mov dword ptr [ebp-48h],eax
015F08A7 cmp dword ptr [ebp-48h],0
015F08AB jne ConsoleApp3.Program.Main(System.String[])+046h (015F088Eh)
a = 3;
015F08AD mov dword ptr [ebp-40h],3
Теперь обоснование.
Цикл с пост условием это одын CMP(сравнение) и одын J**(JE,JNE,JZ,JNZ И ТАК ДАЛЕЕ). Это эталон, без спорно. Минимализм всегда рулит!!!
Цикл с пред условием (Как в BrainFack) одын CMP(сравнение) и одын J** и один безусловный переход JMP.
Теперь посмотрите на примеры... С# VS 2019. Пошаговое исполнение, затем правая кнопка мыши и перейти к деассемблеру.
Считаем количество CMP, J** и JMP. Думаю каждому будет интересно.
Обратите внимание что CALL, J**, JPM, CMP - это ассемблерно долгие операции, по этому их стараются либо избегать , либо минимизировать.
Предполагаю что все везде где J**, JPM, CMP больше чем по одной штуке - должно настораживать.
Обратите внимание что CMP - операция не всегда обязательная, так как арифметические операции тоже меняют состояние флагов, а значит по ним можно ветвить.
Теперь вопрос на засыпку, можно ли на ASM написать (оптимизировать) ветвления и циклы компактнее.
Операции For и ForEach - достаточно медленные, через них бегают почти все. LinQ List.ForEach удивительно, но ведет себя также, либо быстрее. Проверял - сам писал тесты.
"Собственно вопрос! Существуют ли сервисы или же ПО, для подбора (поиска) метода шифрования по заранее известным и распознанным строками шифра?"
Вопрос был кодировку/шифровние или хеширование, в лучших традициях нечеткой логики. Также и отвечаю=)
Программы то уже придумали, которые за вас все будут делать, например, Clickermann.
Только вот Clickermann убили заборостроительные обновления Windows, время и отсутствие исходных кодов на GinHub.
Попробуй пройти простенький курс по не знаю чему, например по web (HTML, CSS, JS и куча современных фреймворков).
Затем выйти на фриланс на узкий круг задач.
Если окупят усилия (удастся заработать на связку бананов), вкладывайся уже дальше....
Если нет, то возможно выгоднее сразу идти в манагеры (менеджеры).
Без обид, современная школота именно так и поступает.
...........................................................................................................
Программирование никому не нужно, кроме нас самих.
Кодил всю школу до дымящейся клавиатуры ,5 лет учился в вузе, столько же в аспирантуре, чтобы потом 2,5 года не мочь найти работу.
В it везде специалисты по заборостроению и самопиару, подставляют на лево и на право.
Подскажите где найти пособие по самопиару, (чтобы быть на равных)!
Сейчас насилу устроился не совсем по специальности, работу не предлагать.
Продолжаю кодить, расходники клава плюс мышь в год до микросхем.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Ошибся в том что ранее говорил про С++VS19/VS13.
Теперь же предлагаю публике скромное развлечение С#VS19.
***Пример первый.
***Пример второй
***Пример третий
***Пример последний
Теперь обоснование.
Цикл с пост условием это одын CMP(сравнение) и одын J**(JE,JNE,JZ,JNZ И ТАК ДАЛЕЕ). Это эталон, без спорно. Минимализм всегда рулит!!!
Цикл с пред условием (Как в BrainFack) одын CMP(сравнение) и одын J** и один безусловный переход JMP.
Теперь посмотрите на примеры... С# VS 2019. Пошаговое исполнение, затем правая кнопка мыши и перейти к деассемблеру.
Считаем количество CMP, J** и JMP. Думаю каждому будет интересно.
Обратите внимание что CALL, J**, JPM, CMP - это ассемблерно долгие операции, по этому их стараются либо избегать , либо минимизировать.
Предполагаю что все везде где J**, JPM, CMP больше чем по одной штуке - должно настораживать.
Обратите внимание что CMP - операция не всегда обязательная, так как арифметические операции тоже меняют состояние флагов, а значит по ним можно ветвить.
Теперь вопрос на засыпку, можно ли на ASM написать (оптимизировать) ветвления и циклы компактнее.
Операции For и ForEach - достаточно медленные, через них бегают почти все. LinQ List.ForEach удивительно, но ведет себя также, либо быстрее. Проверял - сам писал тесты.