Hack Опубликовано 17 мая, 2019 Поделиться Опубликовано 17 мая, 2019 Перед началом сканирование - генерируется asm инструкции из полученных сигнатур. download fast scanner v2.zip 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 мая, 2019 Поделиться Опубликовано 19 мая, 2019 В 17.05.2019 в 22:30, Hack сказал: Перед началом сканирование - генерируется asm инструкции А зачем? х64 и х86 отличать умеет? Гарантия нахождения нужного кода стопроцентная? Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 19 мая, 2019 Автор Поделиться Опубликовано 19 мая, 2019 1 час назад, Xipho сказал: А зачем? х64 и х86 отличать умеет? Гарантия нахождения нужного кода стопроцентная? Что зачем? Нет, 100% Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 мая, 2019 Поделиться Опубликовано 19 мая, 2019 Зачем нужна генерация асм инструкций в сканере сигнатур? Допустим, если сигнатура с маской, то как в этом случае будут генериться инструкции? Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 19 мая, 2019 Автор Поделиться Опубликовано 19 мая, 2019 (изменено) 55 минут назад, Xipho сказал: Зачем нужна генерация асм инструкций в сканере сигнатур? Допустим, если сигнатура с маской, то как в этом случае будут генериться инструкции? Представление что генерируется. Сигнатура "11 22 33" ret: xor eax,eax ret 4 next: inc ecx start: cmp ecx,edx ;Если дошли до конца выходим je ret cmp byte ptr [ecx],11 jne next cmp byte ptr [ecx+01],22 jne next cmp byte ptr [ecx+02],33 jne next mov eax,ecx ;Адрес найден ret 4 Так же прекрасно работает с маской. Но стоит asm улучшенный по скорости. Спойлер 003B0000 - mov eax,[esp+04] 003B0004 - jmp 003B000C 003B0006 - xor eax,eax 003B0008 - ret 0004 { 4 } 003B000B - inc ecx 003B000C - cmp ecx,edx 003B000E - ja 003B0006 003B0010 - cmp ecx,eax 003B0012 - ja 003B00BE 003B0018 - cmp byte ptr [ecx],11 { 17 } 003B001B - je 003B00C7 003B0021 - cmp byte ptr [ecx+01],11 { 17 } 003B0025 - je 003B007A 003B0027 - cmp byte ptr [ecx+02],11 { 17 } 003B002B - je 003B007D 003B002D - cmp byte ptr [ecx+03],11 { 17 } 003B0031 - je 003B0082 003B0033 - cmp byte ptr [ecx+04],11 { 17 } 003B0037 - je 003B0087 003B0039 - cmp byte ptr [ecx+05],11 { 17 } 003B003D - je 003B008C 003B003F - cmp byte ptr [ecx+06],11 { 17 } 003B0043 - je 003B0091 003B0045 - cmp byte ptr [ecx+07],11 { 17 } 003B0049 - je 003B0096 003B004B - cmp byte ptr [ecx+08],11 { 17 } 003B004F - je 003B009B 003B0051 - cmp byte ptr [ecx+09],11 { 17 } 003B0055 - je 003B00A0 003B0057 - cmp byte ptr [ecx+0A],11 { 17 } 003B005B - je 003B00A5 003B005D - cmp byte ptr [ecx+0B],11 { 17 } 003B0061 - je 003B00AA 003B0063 - cmp byte ptr [ecx+0C],11 { 17 } 003B0067 - je 003B00AF 003B0069 - cmp byte ptr [ecx+0D],11 { 17 } 003B006D - je 003B00B4 003B006F - cmp byte ptr [ecx+0E],11 { 17 } 003B0073 - je 003B00B9 003B0075 - add ecx,0F { 15 } 003B0078 - jmp 003B000C 003B007A - inc ecx 003B007B - jmp 003B00C7 003B007D - add ecx,02 { 2 } 003B0080 - jmp 003B00C7 003B0082 - add ecx,03 { 3 } 003B0085 - jmp 003B00C7 003B0087 - add ecx,04 { 4 } 003B008A - jmp 003B00C7 003B008C - add ecx,05 { 5 } 003B008F - jmp 003B00C7 003B0091 - add ecx,06 { 6 } 003B0094 - jmp 003B00C7 003B0096 - add ecx,07 { 7 } 003B0099 - jmp 003B00C7 003B009B - add ecx,08 { 8 } 003B009E - jmp 003B00C7 003B00A0 - add ecx,09 { 9 } 003B00A3 - jmp 003B00C7 003B00A5 - add ecx,0A { 10 } 003B00A8 - jmp 003B00C7 003B00AA - add ecx,0B { 11 } 003B00AD - jmp 003B00C7 003B00AF - add ecx,0C { 12 } 003B00B2 - jmp 003B00C7 003B00B4 - add ecx,0D { 13 } 003B00B7 - jmp 003B00C7 003B00B9 - add ecx,0E { 14 } 003B00BC - jmp 003B00C7 003B00BE - cmp byte ptr [ecx],11 { 17 } 003B00C1 - jne 003B000B 003B00C7 - cmp byte ptr [ecx+01],22 { 34 } 003B00CB - jne 003B000B 003B00D1 - cmp byte ptr [ecx+02],33 { 51 } 003B00D5 - jne 003B000B 003B00DB - cmp byte ptr [ecx+03],44 { 68 } 003B00DF - jne 003B000B 003B00E5 - cmp byte ptr [ecx+04],55 { 85 } 003B00E9 - jne 003B000B 003B00EF - cmp byte ptr [ecx+05],66 { 102 } 003B00F3 - jne 003B000B 003B00F9 - cmp byte ptr [ecx+06],77 { 119 } 003B00FD - jne 003B000B 003B0103 - cmp byte ptr [ecx+07],-78 { 136 } 003B0107 - jne 003B000B 003B010D - cmp byte ptr [ecx+08],-67 { 153 } 003B0111 - jne 003B000B 003B0117 - cmp byte ptr [ecx+09],-56 { 170 } 003B011B - jne 003B000B 003B0121 - cmp byte ptr [ecx+0A],-45 { 187 } 003B0125 - jne 003B000B 003B012B - cmp byte ptr [ecx+0B],-34 { 204 } 003B012F - jne 003B000B 003B0135 - cmp byte ptr [ecx+0C],-23 { 221 } 003B0139 - jne 003B000B 003B013F - cmp byte ptr [ecx+0D],-12 { 238 } 003B0143 - jne 003B000B 003B0149 - cmp byte ptr [ecx+0E],-01 { 255 } 003B014D - jne 003B000B 003B0153 - mov eax,ecx 003B0155 - ret 0004 { 4 } Есть способ проще и быстрее? Изменено 19 мая, 2019 пользователем Hack Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 19 мая, 2019 Поделиться Опубликовано 19 мая, 2019 "Быстрый" относительно чего? Хотелось бы увидеть результаты в сравнении с другими сканерами. Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 19 мая, 2019 Автор Поделиться Опубликовано 19 мая, 2019 1 час назад, partoftheworlD сказал: "Быстрый" относительно чего? Хотелось бы увидеть результаты в сравнении с другими сканерами. Ну CE просканирует за 4 секунды. а этот сканер за 600мс Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 19 мая, 2019 Поделиться Опубликовано 19 мая, 2019 33 минуты назад, Hack сказал: а этот сканер за 600мс Очень долго, у меня без оптимизаций 100-140 мс(среднее 125), с AVX2 - 40-55 мс. На примере Sniper Elite 4 пробовал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 19 мая, 2019 Автор Поделиться Опубликовано 19 мая, 2019 20 минут назад, partoftheworlD сказал: Очень долго, у меня без оптимизаций 100-140 мс(среднее 125), с AVX2 - 40-55 мс. На примере Sniper Elite 4 пробовал. Какие инструкции используются в AVX2? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 19 мая, 2019 Поделиться Опубликовано 19 мая, 2019 49 минут назад, Hack сказал: Какие инструкции используются в AVX2? https://software.intel.com/sites/default/files/m/d/4/1/d/8/Intro_to_Intel_AVX.pdf Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 21 мая, 2019 Поделиться Опубликовано 21 мая, 2019 В 19.05.2019 в 13:08, Hack сказал: Есть способ проще и быстрее? Спойлер mov rax,[.exeBase] mov ecx,[.exeSize] add rcx,rax .Scan: cmp byte[rax+0],0x31 jnz @f cmp byte[rax+1],0x31 jnz @f cmp byte[rax+2],0x31 jnz @f cmp byte[rax+3],0x31 jnz @f cmp byte[rax+5],0x31 jnz @f mov [OptionA],rax @@: cmp byte[rax+0],0x32 jnz @f cmp byte[rax+1],0x32 jnz @f cmp byte[rax+2],0x32 jnz @f cmp byte[rax+3],0x32 jnz @f cmp byte[rax+7],0x32 jnz @f mov [OptionB],rax @@: inc rax cmp rax,rcx jnz .Scan только если все сразу. а так обычно спец функция на 0x31 ?? 0x31 0x31 ?? 0x31 В 19.05.2019 в 19:50, partoftheworlD сказал: , с AVX2 - 40-55 мс 1 байт срав. на авх? Lol Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 15 июля, 2019 Автор Поделиться Опубликовано 15 июля, 2019 Scanner signatures v2.1.zip Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 16 июля, 2019 Поделиться Опубликовано 16 июля, 2019 В 19.05.2019 в 19:50, partoftheworlD сказал: Очень долго, у меня без оптимизаций 100-140 мс(среднее 125), с AVX2 - 40-55 мс. На примере Sniper Elite 4 пробовал. Ну, а у вас пк одинаковый с автором ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Hack Опубликовано 2 декабря, 2019 Автор Поделиться Опубликовано 2 декабря, 2019 https://github.com/gtvx/scanner-signatures Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения