Frida-node или немножко странного кода

Автор: admin от 17-10-2015, 23:33, посмотрело: 284

Приветствую всех, кто читает эту статью.
Как-то так сложилось, что на хабре практически нет упоминаний про замечательную штуку под названием Frida. Самое толковое из них заключается в паре строк кода и общем описании(HabraFrida, из которой, собственно, я и узнал про существование этой штуковины, за что отдельное спасибо автору).
Если вкратце, то Frida занимается тем, что инжектит JS-движок от Гугла(V8) в таргетный процесс(при отсутствии защиты, конечно же), причем встроенный js-код умеет работать с памятью, перехватывать вызовы функций, делать эти самые вызовы и заниматься прочими непотребствами.
Если честно, с реверсом я знаком крайне посредственно и, в-основном, из MMORPG Runes of Magic, с которой я и начал учиться кодить и с которой связанна немалая часть моих текущих познаний в программировании. Собственно, до сих пор время от времени развлекаюсь написанием всяких разностей под нее(дырявая, кстати говоря, игрушка… Каких только шикарных багов в ней не находили, начиная от рисовки предметов и заканчивая sql-inject'ом). Вот для нее я и написал немножко тестового кода на Frida, позволяющего делать… разное.
Почему node.js? Прост. В конце-концов, это же хаб ненормального программирования)

Категория: Программирование

 

Удалённое исполнение системных команд по запросу через сокеты на Python 3 или как я сайты скачивал

Автор: admin от 17-10-2015, 19:24, посмотрело: 369

Проект был написан скорее в учебных целях (научиться сетевому программированию в Python), чем в практических. Такую же роль несёт и статься, ведь сейчас вряд ли кто-то будет скачивать сайты, чтобы прочитать пару статеек (за исключением некоторых случаев, когда подобное реально может пригодится).

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

Есть несколько способов решения данной проблемы, но я решил выбрать немного необычный для нашего времени способ. Я решил скачивать сайты. Конечно, данных способ не подходит для крупных сайтов, вроде Хабра, тут разумнее использовать парсер, но можно скачать и отдельный хаб, список пользователей, или только свои публикации с помощью HTTrack Website Copier, применив фильтры. Например, чтобы скачать хаб Python с Хабра нужно применить фильтр "+habrahabr.ru/hub/python/*".

Этот способ можно использовать ещё в нескольких целях. Например, чтобы скачать сайт, или его часть, перед тем, как вы окажитесь без интернет-соединения, например, в самолёте. Или для того, чтобы скачать заблокированные на территории РФ сайты, если скачивать их через Tor, что будет очень медленно, или через компьютер в другой стране, где данных сайт не запрещён, а потом передать его на компьютер, находящийся в РФ, что будет гораздо быстрее для многостраничных сайтов. Таким образом мы может скачать, например, xHamster Wikipedia через сервер в Германии или Нидерландах и получить сайт в сжатом виде по SFTP, FTP, HTTP или другому, удобному для вас, протоколу. Если, конечно, места хватит, для такого большого сайта :)

Ну что, начнём!?

Категория: Программирование

 

Объекты нулевого размера

Автор: admin от 17-10-2015, 13:39, посмотрело: 298

В чём разница между следующими парами длин и указателей?

size_t len1 = 0;
char *ptr1 = NULL;

size_t len2 = 0;
char *ptr2 = malloc(0);

size_t len3 = 0;
char *ptr3 = (char *)malloc(4096) + 4096;

size_t len4 = 0;
char ptr4[0];

size_t len5 = 0;
char ptr5[];


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

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

malloc(0)


Поведение malloc(0) определено стандартами. Можно вернуть нулевой или уникальный указатель. Второй вариант во многих реализациях выполняется внутренним увеличением длины на единицу (которая затем обычно округляется до 16). По правилам, разыменовать такой указатель нельзя, но обычно несколько байт всё-таки размещаются, и поэтому такая программа не упадёт.

Возврат NULL приводит к возможности возникновения интересного бага. Часто возврат NULL из malloc расценивается как ошибка.

Категория: Программирование

 

О тонкостях выбора производителя автозапчастей

Автор: admin от 17-10-2015, 12:25, посмотрело: 3427

Поломка автомобиля вынуждает владельца оперативно искать комплектующие для осуществления ремонта в кратчайшие сроки. На современном рынке man запчасти и детали к машинам других марок можно приобрести в различных регионах. Скорость их поставки и наличие на складе зависит от уровня развития дистрибьюторской сети производителя. Следует ли ожидать доставки заводской детали, или же использовать в качестве альтернативы копии сторонних компаний? Дать ответ на поставленный вопрос можно, ознакомившись с основными преимуществами и недостатками оригинальных запчастей и их заменителей.

Категория: Железо » Сделай Сам

 

Что взять себе для прослушивания музыки в хорошем качестве?

Автор: admin от 17-10-2015, 12:24, посмотрело: 3448

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

Категория: Железо