avatar_gazon01

SuperAntiSpyware Pro 6.0.1236 RUS

Автор gazon01, 18 января 2017, 13:43:00

« Chrispc anonymous proxy pro 6.70 RUS | ChrisPC Anonymous Connection 1.5 RUS »

gazon01Автор темы


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, спасибо за помощь
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла

gazon01Автор темы

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

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

Leserg

03 февраля 2017, 01:51:04 #2 Последнее редактирование: 03 февраля 2017, 02:00:49 от Leserg
Цитата: 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
]
Кто ищет, тот всегда найдет!

gazon01Автор темы

Цитата: LesergLeserg

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

gazon01Автор темы

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

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

WYLEK

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


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

gazon01Автор темы

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

опытным путем выяснил, что ошибка выскакивает после IDA (.rdmap)
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла

gazon01Автор темы

18 февраля 2017, 18:36:55 #7 Последнее редактирование: 18 февраля 2017, 18:38:55 от gazon01
и все-таки прав был Boomer - 64 битная версия программы кусается при переводе,
то там, то сям, да вылезет ошибка, вот теперь планировщик не хочет работать
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла

Nexus

Цитата: gazon01и все-таки прав был Boomer

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

gazon01Автор темы

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

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

Leserg

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

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

gazon01Автор темы

04 марта 2017, 09:14:38 #11 Последнее редактирование: 04 марта 2017, 09:16:23 от gazon01
очень неудобно, что x64Dbg не понимает кириллицу
- нет поиска на русском
- не показывает в теле переведенные строки

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

Leserg

Цитата: gazon01очень неудобно, что x64Dbg не понимает кириллицу

В окне дампа можно выбрать кодовую страницу для отображения символов в текстовой части
]

А вот поиск и комментарий в окне CPU для переведенных строк, увы, нет. Поиск строк выполняется только по символам Latin1.
Но поиск строк на русском можно выполнять в виде поиска паттернов в окне дампа. Открываете поиск окошко поиска паттернов и в текстовой части пишете что нужно найти (в зависимости от кодировки). Потом задаете поиск перекрестных ссылок на найденную строку. По найденным ссылкам переходите в код.

Цитата: gazon01а нельзя в х32(64)dbg вывести комментарии как в ollydbg ?

Оказывается можно. Нужно установить плагин Войдите на сайт для перехода по ссылке и будет как в OllyDbg.
Кто ищет, тот всегда найдет!

gazon01Автор темы

Цитата: LesergОказывается можно.

тут столкнулся с ещё одной бЯдой, в dbg поиском находится 10 ссылок к примеру на days, а ida в rdmap выдает только 8
в двух пропавших как раз и есть нужная для перевода ссылка
так то всё кажется проверил, всё работает, вот только одно слово покоя не дает
можно конечно поменять ссылку с days на day (с дней на день) и отправить перевод на просторы международной сети, но потом-то уже просто пропадет интерес копать глубже, или?
как вы думаете?

помню Гена уже объяснял Сергею как заставить ida показывать ссылки, вот только где не помню
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла

Leserg

Цитата: gazon01тут столкнулся с ещё одной бЯдой, в dbg поиском находится 10 ссылок к примеру на days, а ida в rdmap выдает только 8

Хотел увидеть твою проблему наглядно, так сказать. Но оказия, не удается её воспроизвести.

x64Dbg — да, 10 ссылок
]

IDA — будь она неладна — 10 ссылок
]

В Radialix, естественно, также попадет 10 ссылок.
]

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

Например, может быть вот такая фигня:
]

В итоге у строки нет ссылки, её нет и в редакторе Radialix, хотя при локализации файла предыдущей версии программы все было в порядке. Что делать? Надо сказать IDA, что это не данные, а инструкции.

Выделяем этот участок и преобразуем в код:
]

После этого и ссылка(-и) появится и будет возможность сделать перевод в редакторе.
Кто ищет, тот всегда найдет!

* Ваши права на сайте

    Light Portal

  • Вы можете просматривать элементы портала
  • Вы не можете управлять блоками
  • Вы не можете управлять своими страницами
  • Вы не можете размещать свои страницы без модерации

    Simple Machines

  • Вы не можете удалять темы.
  • Вы не можете создавать темы.
  • Вы не можете отвечать на сообщения.
  • Вы не можете прикреплять файлы.
  • Вы не можете изменять свои сообщения.
  • Вы не можете удалять свои сообщения.

Яндекс.Метрика Каталог@MAIL.RU - каталог ресурсов интернет