SuperAntiSpyware Pro 6.0.1236 RUS

SUPERAntiSpyware Pro - программа, которая обнаруживает и удаляет разнообразное вредоносное ПО: spyware, adware, malware, trojans,
  1. Оффлайн

    Автор темы

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17



    SUPERAntiSpyware Pro - программа, которая обнаруживает и удаляет разнообразное вредоносное ПО: spyware, adware, malware, trojans, dialers, worms, keyLoggers, HiJackers и т.д. и т.п.
    Программа может работать в режиме мониторинга системы в режиме реального времени, "по требованию" или по расписанию.
    Поддерживается автоматическое обновление базы данных через интернет.

    Основные характеристики :

    — Быстрое, полное и настраиваемое сканирование жестких дисков, переносных накопителей информации, оперативной памяти, регистра и т.д.
    — Обнаружение и удаление шпионов, адваре, малваре, троянов, автодозвонщиков, червей, кейлоггеров и множества других угроз.
    — Возможность исключения сканирования отдельных файлов и выбора отдельных папок для проверки на наличие вредоносных программ.
    — SUPERAntiSpyware Free не нагружает систему в отличии от многих других антишпионов и не создает конфликтов с другими анишпионскими или антивирусными программами.
    — Исправляет разорванное соединение с Интернетом, изменения на рабочем столе, редактирование реестра Windows и т.д.
    — Ручное обновление базы данных и программы.

    Русифицированный файл 6.0.1236 только для версии х32, скачать можно здесь
    В архиве исполняемый файл, keygen (пароль 123, антивирусы его не любят), текстовик с рабочими на сегодня ключами, и маленький readme

    Сама программа здесь


    Русифицированные файлы для SuperAntiSpyware Pro 6.0.1236 версий х32 и х64, скачать можно здесь
    В архиве исполняемые файлы, keygen (пароль 123, антивирусы его не любят), текстовик с рабочими на 21.01.17 ключами, и маленький readme

    Leserg, спасибо за помощь
    Leon, VAN7272 нравится это сообщение.

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    18 января 2017 - 13:43 / #1
  2. Оффлайн

    Автор темы

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17

    Цитата: Leserg
    Чем больше будешь разбирать такие случае, тем лучше будет понимание.



    сижу курю, но пока только один дым, может надо с табака на махорку перейти?
    попробую

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    26 января 2017 - 08:27 / #2
  3. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 929

    Создано тем: 79

    Рейтинг: 8

    Репа: (131|131|0)

    Баллы: 1596

    Был: 2024-04-28 00:36

    Лайков: 140

    Цитата: gazon01
    сижу курю, но пока только один дым, может надо с табака на махорку перейти?



    Программа 64-бит, поэтому используем отладчик x64Dbg соответствующей разрядности.

    Установка набора символов выполняется инструкцией mov dword ptr [rsp + 0x40], r12d

    Рис. 1
    ]

    Здесь содержимое регистра r12d переносится (копируется) в выделенную область, относительно содержимого регистра rsp (указатель стека) плюс определенное смещение в виде значения 40h. Аналогичная картина для других параметров шрифта, меняется только величина смещения. Когда выделенная структура будет заполнена указанными данными, то вызывается функция создания шрифта CreateFont. Почему именно эта инструкция определяет набор символов? Это можно узнать, заглянув в спецификации CreateFont (или см. статью "Логический шрифт") Все параметры идут по порядку, только в дизассемблированном коде они стоят наоборот.

    Запустив программу под отлачиком вы увидите, что в регистре r12d находится 0 (ноль), а нам нужно значение CCh - RUSSIAN_CHARSET (на крайний случай 01h - DEFAULT_CHARSET). Как этот можно сделать?

    == ВАРИАНТ I ==

    В данной инструкции вместо регистра r12d необходимо записать CCh, т.е. инструкция должна стать такой:

    mov dword ptr [rsp + 0x40], CC

    Но сделать это напрямую в коде нам не позволяет место. Новая команда будет длиннее на три байта. Если выполнить ввод такой инструкции на месте текущей, то следующая инструкция будет испорчена, а работа программы завершится аварийной ошибкой. Поэтому самый простой способ решения такой проблемы, это найти в коде "дырку" (пустое место), ввести там инструкцию и сделать на неё перенаправление. Затем сделать переход обратно в основной код.

    Обычно пустое место всегда есть в конце первой секции. Пролистайте дизассемблированный код программы в самый конец, пока не увидите инструкции вида add byte ptr [rax], al, после которых не будет никаких других инструкций. Это и есть "дырка", обратите внимание, что там находятся одни нулевые байты (0х00).

    Рис. 2
    ]

    После последней команды ret вводим нашу инструкцию mov dword ptr [rsp + 0x40], CC:

    Рис. 3
    ]

    Получится вот так:

    Рис. 4
    ]

    Теперь сюда нужно сделать перенаправление из основного кода программы. Это можно организовать при помощи команды jmp. Копируем адрес, по которому мы ввели новую инструкцию, и возвращаемся в место, где нам нужно изменить код. Здесь, на месте инструкции mov dword ptr [rsp + 0x40], r12d, вводим инструкцию перехода:

    Рис. 5
    ]

    Получится вот так:

    Рис. 6
    ]

    Теперь нужно сделать возврат на основной участок кода, на инструкцию, которая идет следом после инструкции перехода (см. рис. 6). Для этого также используется команда jmp. Копируем адрес инструкции mov dword ptr [rsp + 0x38], r12d и переходим на добавленную инструкцию в конец дизассемблированного кода. Здесь следующей инструкцией вводим команду jmp с адресом возврата.

    Рис. 7
    ]

    Получится в итоге вот так:

    Рис. 8
    ]

    Аналогичным образом нужно поступить для остальных функций создания логического шрифта, где это нужно (выясняется опытным путем при запуске программы под отладчиком).


    == ВАРИАНТ II ==

    Если в инструкции mov dword ptr [rsp + 0x40], CC изменить тип передаваемых данных с dword на byte, то тогда добавление новой инструкции и тем более организацию переходов выполнять не нужно. Размер такой инструкции будет соответствовать размеру оригинальной, т.е. 5 байт. Но прежде чем делать такие изменения, необходимо удостовериться, что в выделенной области памяти, где формируется свойства шрифта, нет других данных, кроме нулей. В нашем случае это будет по адресу [rsp + 0x40]. При типе данных dword (двойное слово) в память будет записано 4 байта. Со значением CCh будут записаны байты CC000000, и если там находились какие-либо данные, то они будут затертые новым значением. Если же мы изменим тип данных на byte, то будет записан только один байт со значением CCh. Остальные байты (3) в памяти останутся без изменений. Это может внести в работу функции ошибку или неточность. Как это можно проверить?

    Установите точку прерывания на инструкцию mov dword ptr [rsp + 0x40], r12d и запустите программу под отладчиком. Когда работа программы прервется, перейдите в панель дампа памяти по адресу [rsp + 0x40] (адрес в регистре RSP плюс смещение 40h).

    Рис. 9
    ]

    А вот, что мы увидим в дампе памяти по указанному адресу:

    Рис. 10
    ]

    Обратите внимание, последующие три байта нулевые. Это значит, что мы можем использовать тип данных byte вместо dword. Пока мы находимся на точке останова, на инструкции mov dword ptr [rsp + 0x40], r12d, вызовите окно ввода ассемблерных инструкций и измените текущую инструкцию на mov byte ptr [rsp + 0x40], CC.

    Рис. 11
    ]

    Получится вот так:

    Рис. 12
    ]

    Теперь выполните эту команду, нажав клавишу F7, и посмотрите в панель дампа памяти. По указанному адресу будет записано значение параметра "fdwCharSet" - CCh.

    Рис. 13
    ]

    Как видите, ничего сложного. Таким образом вносите изменения в код, где это необходимо.


    == ВАРИАНТ III ==

    Если вы внимательно изучите инструкции формирования структуры с параметрами шрифта для последующих функций CreateFont (с адреса 0000000140210AFF по 0000000140210DE5 — всего 7 функций), то увидите, что они одинаковы. Используются одни и те же регистры, одни и те же смещения. Отличаются только значения параметров качества шрифта и толщины (вес). А в частности, т.к. нас интересует параметр набора символов, то инструкция mov dword ptr [rsp + 0x40], r12d одна и та же для всех семи функций CreateFont.

    Рис. 14
    ]

    Более того, если вы протрассируете этот участок кода по каждой функции CreateFont, то увидите, что для формирования параметров шрифтов выделяется один и тот же участок памяти, т.к. значение адреса в регистре RSP остается постоянным. Таким образом, имеет смысл оформить запись нужного нам значения для параметра набора символов в виде подпрограммы. После чего, где это нужно (или же всех функций CreateFont на текущем участке) вместо инструкции mov dword ptr [rsp + 0x40], r12d выполнять к ней обращение.

    Тело нашей подпрограммы, можно записать в пустом месте (в конце первой секции — вы уже знаете где).

    Код подпрограммы следующий:
    mov dword ptr [rsp + 0x48], CC
    ret

    Примечание: почему вместо смещения 40h записано 48h, рассказано ниже.

    Рис. 15
    ]

    Первая инструкция выполняет запись значения CCh в память по адресу [rsp + 0x48]. Вторая инструкция выполняет возврат из подпрограммы в место, откуда был сделан вызов. Теперь просто вместо инструкции mov dword ptr [rsp + 0x40], r12d укажем обращение к нашей подпрограмме:call 0000000140275D04. Здесь 0000000140275D04 — это адрес, по которому находится начало нашей подпрограммы (см. рис. 15). Это можно сделать или для всех функций CreateFont, или только для тех, которые являются проблемными в плане кракозябр.

    Рис. 16
    ]

    Смещение 48h в коде подпрограммы не опечатка и не ошибка! Дело в том, что после обращения к инструкции CALL в стек будет записан адрес возврата, который будет использован инструкцией RET. За стек отвечает регистр RSP, значение (адрес) в котором, как мы видели, задействовано для выделения области памяти под параметры шрифта. Изменение адреса в регистре RSP нужно учитывать при работе нашей подпрограммы.

    Установите точку прерывания на инструкции вызова нашей подпрограммы и запустите программу на выполнение. Когда работа программы прервется, посмотрите в панель регистров и сделайте себе где-нибудь пометку со значением в регистре RSP.

    Рис. 17
    ]

    У меня текущее значение равно 00000000020383B0. Относительно этого адреса выполняется запись параметров шрифта. Теперь нажмите F7, выполнив заход в нашу подпрограмму. Вы окажетесь на первой инструкции — mov byte ptr [rsp + 0x48], CC. Посмотрите теперь значение регистра. Оно изменилось на 00000000020383A8.

    Рис. 18
    ]

    Значение адреса изменилось ровно на 00000000020383B0 — 00000000020383A8 = 8 (байт). Эту разницу нужно учесть, чтобы параметр набора символа был записан в правильную позицию. Поэтому смещение для инструкции будет уже другое:40h + 8h = 48h. Это значение и попало в инструкцию вместо 40h. После завершения нашей подпрограммы в регистре RSP снова будет адрес 00000000020383B0.

    --
    Для решения проблем с кракозябрами в данной программе можете выбрать любой из вариантов. После того, как сделаете все модификации, сохраните изменения в файл. Для этого откройте окно сохранения изменений ("Patches" на панели инструментов, или горячие клавиши Ctrl+P) и укажите имя файла.

    Рис. 19
    ]

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

    Рис. 20
    ]
    Сообщение отредактировал Leserg 3 февраля 2017 - 02:00

    Кто ищет, тот всегда найдет!

    3 февраля 2017 - 01:51 / #3
  4. Оффлайн

    Автор темы

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17

    Цитата: Leserg
    Leserg



    спасибо

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    8 февраля 2017 - 10:25 / #4
  5. Оффлайн

    Автор темы

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17

    обнаружил баг перевода, если в версии х64 поставить все галки и запустить проверку, то программа падает.
    по отдельности всё работает.

    ]

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    10 февраля 2017 - 21:26 / #5
  6. Оффлайн

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2178

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3400

    Был: 2024-04-08 16:00

    Лайков: 196

    Цитата: gazon01
    обнаружил баг перевода, если в версии х64 поставить все галки и запустить проверку, то программа падает.




    Что то лишнее зацепил, если уверен что это баг перевода. Делай пошагово изменение и проверка.

    11 февраля 2017 - 10:34 / #6
  7. Оффлайн

    Автор темы

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17

    Цитата: WYLEK
    Что то лишнее зацепил, если уверен что это баг перевода. Делай пошагово изменение и проверка.



    опытным путем выяснил, что ошибка выскакивает после IDA (.rdmap)

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    17 февраля 2017 - 19:00 / #7
  8. Оффлайн

    Автор темы

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17

    и все-таки прав был Boomer - 64 битная версия программы кусается при переводе,
    то там, то сям, да вылезет ошибка, вот теперь планировщик не хочет работать
    Сообщение отредактировал gazon01 18 февраля 2017 - 18:38

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    18 февраля 2017 - 18:36 / #8
  9. Оффлайн

    Автор темы

    gazon01

    Звание: Ветеран

    Команда

    Сообщений: 1212

    Создано тем: 39

    Рейтинг: 8

    Репа: (42|41|-1)

    Баллы: 66

    Был: 2018-12-02 14:30

    Лайков: 17

    Цитата: Nexus
    А, кстати, куда он подевался? Забросил свое кредо?



    не знаю, страницу с русификаторами удалил, на сообщения не отвечает

    Возможно всё! На невозможное просто требуется больше времени.
    Мудрец из Шангри Ла

    19 февраля 2017 - 10:26 / #9
  10. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 929

    Создано тем: 79

    Рейтинг: 8

    Репа: (131|131|0)

    Баллы: 1596

    Был: 2024-04-28 00:36

    Лайков: 140

    Цитата: gazon01
    то там, то сям, да вылезет ошибка, вот теперь планировщик не хочет работать



    Сделай разделение ссылок сделай и переводи только те, которые видишь в интерфейсе. Но будь готов к тому, что и это не поможет. Значит те или иные строки переводить нельзя (определишь их опытным путем). Например, такая фигня при переводе AutoPlay Media Studio - не все ЖЗС можно переводить.

    Кто ищет, тот всегда найдет!

    22 февраля 2017 - 21:10 / #10

Статистика форума, пользователей онлайн: 1 (за последние 20 минут)

Создано тем
1177
Всего сообщений
15341
Пользователей
17851
Новый участник
Dobriy-76