Как понять что скрин подделка
Как понять что скрин подделка
Сегодня мы сталкиваемся с большим количеством, фейковых новостей и фальшивых фотографий. Как определить где настоящие фотографии и где фотошоп.
Сегодня всем нам приходится иметь дело с большим количеством слухов, фейковых новостей и фальшивых фотографий — профессиональные медиа часто и сами участвуют в их распространении, непреднамеренное вводя в заблуждение читателей. В этой статье 13 сервисов, которые помогут установить фотошоп это или нет, и найти автора фотографии.
Интернет, с одной стороны, увеличивает количество ложной информации (в первую очередь, речь идет о данных, взятых из соцсетей), а с другой — предоставляет много цифровых инструментов для ее проверки.
С помощью нескольких онлайн-инструментов можно проверить на подлинность фотографии, «вытянуть» из них как можно больше данных и найти больше информации о человеке.
13 сервисов для проверки подлинности изображений
Findexif.com — бесплатный сервис, на который можно загрузить фотографию или дать ссылку на нее — он определит EXIF-данные (сведения, когда было сделано фото, каким устройством, параметры изображения, для некоторых фото можно определить и место съемки).
Foto Forensics — веб-сайт, который может сделать error level analysis (ELA), то есть найти области «дорисованные» на изображении или вставлены в него при редактировании. После обработки программа выдает фотографию, где редактируемые фрагменты будут выделяться на фоне других. Кроме того, программа также предоставит EXIF- данные фотографии.
TinEye — еще один инструмент для обратного поиска.
JPEGSnoop — программа, которая устанавливается на компьютер (работает только для Windows), также позволяет посмотреть метаданные не только изображений, но и форматов AVI, DNG, PDF, THM. Программу можно использовать для многих целей, например, она позволяет увидеть, редактировалось ли изображение, выявить ошибки в поврежденном файле т.п.
Как проверить первоисточник изображения
1. Установить автора либо первоисточник фотографии.
Наиболее очевидный и обычно наиболее эффективный путь сделать это — связаться с тем, кто загрузил фотографию или прислал в редакцию, и спросить, сам ли человек сделал фото. Также обязательно нужно поискать фотографию через обратный поиск изображений. Google показывает также похожие картинки, что иногда помогает увидеть, была ли фотография отредактирована. Ссылка на фото в большом разрешении, как правило, и является первоисточником.
2. Проверить саму личность.
Необходимо проверить саму личность, которая распространяет информацию. Для того чтобы собрать о ней больше информации, есть несколько различных ресурсов, и хотя большинство из них создано для жителей США, есть и такие, которые будут полезны для разных стран. Например, Pipl.com — предназначен для поиска «интернет — следа» пользователя, помогает его идентифицировать, найти фотографии. Программа производит поиск во всех социальных американских сетях (Facebook, LinkedIn, MySpace) — для этого нужно ввести имя и фамилию латиницей. Особенность программы в том, что она ведет поиск по «глубокому интернету» (deepWeb), который игнорируется обычными поисковыми системами и недоступен для пользователей.
Дополнительный полезный ресурс WebMii — ищет ссылку с именем человека, дает рейтинг «веб — видимости», с помощью которого можно установить фейковые аккаунты. Благодаря инструменту каждый может найти упоминание своего имени на иностранных ресурсах.
Для поиска в Рунете можно использовать сервис people.yandex.ru.
3. Следующим шагом в проверке фото должно быть подтверждение места, даты и приблизительного времени, когда было сделано фото. Легче спросить самого автора или попросить сделать его другие снимки этого места — если он доступен для связи. Далее проверить исходные данные с помощью указанных выше программ. Журналистам, которые хорошо разбираются в цифровой фотографии, будут понятны многочисленные параметры, предоставленные этой программой. Для остальных более нужная информация — это время, место съемки, фотоаппарат. Если метаданные недоступны, нужно внимательно изучить снимок: номера машин, погодные условия, ландшафт, стиль одежды, рекламные объявления, здания, магазины — эти детали помогут определить местность, а иногда и становятся свидетельством подделки.
В проверке фотографии есть еще один казалось бы очевидный момент — подтверждение, что фотография действительно изображает то, о чем заявлено. Ведь она может быть настоящей, а вот описание не будет соответствовать действительности. Так, во время урагана Сэнди в Твиттере распространяли такую фотографию:
На ней изображено, как будто во время шторма трое солдат стоят у мемориала неизвестному солдату. Но на самом деле фото было сделано месяцем ранее — установить это помог обратный поиск изображения.
Разобраться в локациях поможет Google Maps или Wikimapia(краудсорсинговая версия GoogleMaps). Полезный сайт Panoramio — здесь можно разместить фотографии, обозначив их географические координаты (сайт интегрирован с картами Google).
Geofeedia — инструмент «куратор социальных сетей», который агрегирует результаты не по ключевым словам или хэштегам, а по месту расположения, которое вы задаете. Сервис обрабатывает сообщения из Twitter, Flickr, Youtube, Instagram и Picasa, присланные с использованием GPS, и затем представляет их в виде коллажа. Сервис платный, бесплатной является только демо-версия.
Еще один способ проверить фото — посмотреть, какие погодные условия были в заявленном месте в конкретный день. Здесь полезной станет поисковая система Wolfram Alpha. Об этом инструменте стоит сказать подробнее — это даже не поисковая система, а база знаний с научным уклоном. Интеллектуальный робот, который может отвечать на самые разные вопросы. Но он ориентируется только в темах, касающихся точной, энциклопедической информации, а не текущих событий. Ссылок на другие сайты не предоставляет, а выдает уже готовый вариант ответа. Работать с Wolfram Alpha нужно на английском языке.
«Вольфрам Альфа» предназначен не только для проверки погоды, этот инструмент может быть полезным как в повседневной работе журналиста, так и для развлечения.
Подделка скринов. Не попадайтесь на удочку обманщиков!
Так уж повелось, что скрин в Интернете считается главным подтверждением (или опровержением) какого-либо факта. Это и понятно, ведь наглядно, быстро, да и «глаз не обманешь». А задумывались ли вы, как можно подделать скрин? А подделать его как раз невероятно легко. Но обо всём по порядку
Что такое «скрин»?
Скрин (полное название – скриншот – от английского screenshot) – снимок изображения экрана монитора (или его части) средствами операционной системы (традиционный метод, о нём и пойдёт речь дальше) либо внешних устройств (фото-/видео- камера).
Как получить скрин?
Элементарно. В ОС Windows: нажимаете клавишу “PrtScr” (на других клавиатурах “Print Screen SysRq”), затем заходите в любой графический редактор (тот же стандартный “Paint”), и нажимаете сочетание клавиш “Ctrl” + ”V” (либо ищете в меню программы «Вставить»). Следует отметить, что если вы хотите сделать снимок не всего экрана, а лишь одного окна, то нужно сделать его активным и нажать “PrtScr”, держа при этом ещё и кнопку “Alt”, а дальше в точности, как указано выше.
Скриншоты можно делать и с помощью специальных программ. Подробнее можете почитать в Википедии. О том, как получить скрин в других операционных системах, можно узнать там же.
Подделка скринов
Подделка чего-либо – это желание выдать желаемое за действительное. Так же и со скринами: кто-то хочет просто порисоваться (смотрите, сколько у меня денег в этом хайпе!), кто-то – побыстрее набрать рефералов и при этом обойти правила разделов, кто-то – подделать документы. В целом использование подделывания скринов безгранично.
Подделываемые скрины условно я разделяю на 2 группы:
1) в которых данные меняются до самого снимка;
2) в которых данные меняются после снимка, то есть уже в графическом редакторе.
Тип 1
Используется, как правило, в браузерах. Любую информацию с любого сайта можно изменить за кратчайшие сроки (от 20 секунд затраченного времени!). Требуются элементарные знания html (хотя это даже и не обязательно – нужно просто найти, какие данные менять). Процесс прост: открываете нужный сайт на нужной странице, открываете исходный код, меняете данные, сохраняете, делаете скрин. Теперь примеры:
на самом же деле состояние моего аккаунта на «депозите» следующее:
А вот не менее известный wmmail.ru :
скрин также подделанный, если не поняли. А вот и паи форума резко подешевели:
.
Менять можно не только циферки, а и текст. За пару минут mmgp.ru можно превратить в форум собаководов:
Думаю, примеров достаточно. Теперь о втором типе.
Тип 2
Используется, когда невозможно сделать, как в первом случае. Процесс немного сложнее, нужно знать элементарные функции графических редакторов и иметь «острый глаз». Делаем скрин, вставляем изображение в редактор и меняем данные. Делать подделку таким образом дольше, поэтому пример будет только один. Наверняка, все пользовались WebMoney и знают такое окошко:
Спасибо за внимание и удачи всем!
Как доказать подлинность скриншота?
Теперь я хочу доказать, что эти изображения являются оригинальными, а не подделанными или отредактированными.
Пожалуйста, дайте мне знать, как я могу это доказать?
Вы не можете доказать это. Они были на вашем компьютере, полностью под вашим контролем в течение некоторого времени. Вы могли подделать их. Поэтому вы не можете доказать, что не вмешивались в них.
Вы никогда не сможете доказать подлинность на скриншоте.
Невероятно просто изменить видимое содержание всего, что публикуется в общедоступном месте, и не нужно большого умения, чтобы полностью изменить смысл на что угодно…
Этот поддельный скриншот занял около 30 секунд в фотошопе.
Конечно, нет точного способа найти попытки манипулирования изображением. Но есть некоторые основные методы, которые люди используют для манипулирования изображениями.
Например, люди используют инструмент клонирования в фотошопе для дублирования узоров / цветов. Это может быть трудно обнаружить с помощью ручного наблюдения, но есть некоторые инструменты для этого.
Посмотри. Инструмент имеет ряд функций для обнаружения манипуляций с изображениями. http://29a.ch/photo-forensics/#thumbnail-analysis
Доказать, что использование технических мер сложно. Что вы можете сделать, это документировать, как вы сделали скриншоты.
Удаленный браузер с открытым ключом подписанных входов / выходов
Он предоставляет удаленный браузер (на основе Firefox), который записывает ваш ввод и создает PDF-файлы с подписью с открытым ключом, которые содержат введенные вами данные и снимок экрана. Таким образом, вы даже можете войти на страницы и доказать вещи потом.
Удаленный браузер работает медленно, поэтому, если информация будет удалена сразу после ее просмотра, вы ничего не сможете доказать.
Чтобы это работало идеально, вывод должен содержать один снимок экрана для каждого пикселя, который изменяется на экране, например, во время прокрутки или анимации JavaScript. Возможно, формат видео будет более подходящим в этих случаях, чем PDF, поскольку он кодирует кадры по-разному.
И, конечно, вы предоставляете свои незашифрованные пароли этой службе и проверяющим вещественным доказательствам. Возможно временно сменить пароль на фиктивный, но это еще больше затрат.
Услуги путевой машины
http://archive.org/web/ возможен, но уважает robots.txt, делая некоторые страницы недоступными, и вы не можете войти, чтобы сделать скриншоты.
https://archive.is похож на archive.org, но не соблюдал robots.txt в прошлый раз, когда я проверял
Смотрите также
Если вы хотите доказать, что получили сообщение X от Y, в идеале вы должны получить его перед нотариусом на их компьютере. Не имея нотариуса, независимый свидетель может помочь.
Это не исключает того, что человек на другой стороне, которого вы считаете Y, на самом деле не так. Так что вам лучше иметь их перед собой и у нотариуса тоже.
Вы можете доказать, что изображение существовало до определенной даты (отправить хэш изображения в службу подписи СА или иным образом опубликовать его таким образом, чтобы сохранить временную метку и позже вы не могли ее изменить), и что оно существовало после данной даты дата (например, включая заголовок сегодняшней газеты).
Вы не можете доверять тому, что компьютер показывал то, что было отправлено через службу Whatsapp, даже журналы, хранящиеся на телефоне подозреваемого. Все они могут быть подделаны подозреваемым.
Нет способа проверить подлинность скриншота.
Если снимок экрана получился в формате JPEG, и вы считаете, что что-то было добавлено или изменено в части изображения, вы могли бы (медленно и терпеливо) различить особенности изображения, которые имеют меньше артефактов по сравнению с остальной частью изображения из-за к эффектам потерь с двойным сжатием изображения.
Если у вас есть основания сомневаться в подлинности снимка экрана, предположите, что он был изменен, если нет дополнительных доказательств в поддержку снимка экрана. Не используйте скриншоты в качестве законного доказательства того, что что-то произошло на компьютере человека.
Вы не можете доказать это.
Если вы изменили изображение, вы можете сделать ошибки, которые могут сделать его очевидным. Например (по крайней мере в Windows 7), Snipping Tool не записывает никаких дополнительных метаданных в файл изображения и всегда сохраняет их как 32-битные данные изображения RGBA (но, возможно, это основано на глубине изображения на экране). Если на вашем предполагаемом скриншоте есть тег «Программное обеспечение» «Paint.NET v3.36», то вы определенно подделали его.
WhatsApp может предоставить QR-код или другой штрих-код цифровой подписи поверх данных, которые вы действительно хотите доказать, либо легко видимыми, либо в виде скрытого водяного знака где-то (в последнем случае он может быть поврежден снимком экрана JPEG, но должен быть сохранен в PNG). Этими данными могут быть узнаваемая миниатюра изображения, текст связанного сеанса чата или личность человека, отправившего сообщение. Однако я сомневаюсь, что WhatsApp действительно делает такую вещь.
Может быть, не скриншот, но, возможно, видео будет сложнее подделать. Точные шаги могут отличаться, но вы можете записать видео в следующих строках:
в командной строке отправьте ping на имя хоста, которое вы собираетесь открыть, чтобы мы могли увидеть разрешенный ip.
Что люди могут подумать о подделке, вы можете добавить некоторые элементы управления для этого. Возможно, здесь может работать удаленная система записи, которой может управлять третья сторона, возможно, правоохранительный орган или юридическая фирма. Может быть, вы можете открыть с ними сеанс Skype, поделиться своим экраном и делать все эти вещи, а также использовать видео, которое они записали.
Может быть, кто-то может придумать «безопасную» систему записи экрана. Система записи экрана, которая «встряхивает» экран в каждом кадре, делая линейное редактирование громоздким и подверженным ошибкам, и хранит метаданные о видео, чтобы сделать возможным некоторый уровень проверки.
Не существует полностью безопасного способа проверки подлинности вашего скриншота. Однако вы можете использовать стороннее приложение, которое мгновенно отправляет дату и время чтения-записи файлов в папке снимков экрана (если они сохранены локально) и отправляет их как можно быстрее вашему аутентификатору (возможно, другу, вашему начальнику или кто-то хочет проверить его подлинность). Таким образом, средство проверки подлинности может видеть время, которое потребовалось с момента создания файла скриншота до времени, когда он получил информацию о файле. Если он маленький, он подлинный.
Если вы решите использовать другие методы для аутентификации, и это предполагает отправку файла, вы можете использовать стегонографию. Это техника, позволяющая скрыть информацию внутри изображения. Если изображение будет изменено в процессе отправки кому-то, кому нельзя полностью доверять, сообщение будет повреждено и, следовательно, не будет аутентичным.
Вы не можете, поскольку это могло быть отредактировано в любое время и сохранено. Что вы могли бы сделать, это сделать анализ частиц изображения, чтобы убедиться, что он был подделан. Вы должны будете использовать компанию, которая, как известно, делает это для доказательств. Лучшая ставка, помимо того, что она проанализирована, это получить суд, чтобы вызвать в суд записи вашего разговора в WhatsApp.
Как подделать скриншот или не верьте красивым цифрам на картинке
Денис Князев Опубликовано: 20.02.2017 Обновлено: 04.06.2020 26 34889
В сфере интернет инвестиций принято показывать скриншот, чтобы подтвердить свои вклады и выплаты, поделиться успехами в привлечении рефералов или результатами по собственным депозитам. Также админы в ряде проектов показывают отчёты в виде скриншотов.
Но знаете ли вы, что любой скриншот можно подделать, потратив при этом от 20 секунд? Если нет, то усаживайтесь поудобнее, сейчас я расскажу как это делается. И да, я не призываю подделывать скриншоты, а лишь показываю, насколько легко можно обмануть в интернете 🙂
Как мне пришла идея статьи
Последнее время часто стал натыкаться на скриншоты от всяких млмщиков, где они светят тысячидолларовыми выплатами и сотнями активных рефералов в первой линии, дабы привлечь в хайп проекты новых партнеров.
Смотришь на этих горе-зазывал и видишь, что сайта у них либо нет вообще, либо он уже покрылся паутиной – так давно на ресурс никто не заходил. Их личная страница в соцсети не популярна, на youtube их видео не набирают и сотни просмотров, а единственная группа вконтакте полу-пустая.
А если находишь его вклады или выплаты из прошлого проекта, где почему-то вместо тысяч долларов всего 2 транзакции по 10 баксов, всё сразу становится понятно – наш пациент научился подделывать скриншоты 🙂
Каким образом?
Дело в том, что у любого современного браузера есть функция «Просмотр кода страницы». В каждом браузере функция может иметь чуть другое название, в моей версии Google Chrome называется «Просмотреть код». Благодаря нехитрой манипуляции с этим кодом, можно на время изменить всю страницу сайта по своему усмотрению.
Без всяких знаний в области программирования! Разумеется, страница поменяется только в вашем браузере и все изменения “слетят” когда вы обновите страницу. Но разве это важно, если скриншот уже сделан 🙂
А если серьезно, то таким способом можно подделать что угодно: суммы на кошельке, переписки (в том же вконтакте, например), количество выигранных ставок в букмереских конторах или успешных сделок на форексе – любую информацию. Будьте внимательны и относитесь к любым скринам скептически.
Как подделать скриншот
Возьмем для примера мой аккаунт в платежной системе Advcash и пошаманим с ним. Напомню, что все скриншоты из статьи можно увеличить, кликнув по ним.
Теперь нужно кликнуть правой кнопкой мыши по элементу, которой вы хотите изменить, и нажать “Просмотреть код”. В нашем случае это цифры на долларовом кошельке.
Появится код страницы с уже выделенным местом. Дважды кликнув на это место левой кнопкой мыши, заменяем реальные цифры на выдуманные и нажимаем Enter. Коварный план сработал.
Вы узнали как подделать скриншот. Остается закрыть исходный код, заскринить крупную сумму на кошельке и идти хвастаться. Шучу, не стоит так делать вообще 🙂
Ещё можно проделать тоже самое действие с каждым элементом на странице и вот что может получиться в итоге:
К слову, нечто подобное вам могут скинуть мошенники-менялы, показывая, что якобы у них на кошельке достаточно денег для обмена, а после перевода с вашей стороны – благополучно испариться.
Или другой пример. Я зарегистрировался в случайном проекте, слева совершенно чистый аккаунт, а справа подделанный. И вот спустя минуту никому неизвестный участник стал топовым рефоводом, строящим тысячные структуры. Это именно то, про что я говорил в начале статьи.
Подведем итог
Как видите, не нужно верить красивым картинкам у неизвестных вам людей, как бы реалистично эти скрины не выглядели. Но как узнать, настоящий ли скриншот или нет? Достаточно попросить человека записать видео, в котором ему потребуется обновить нужную вам страницу браузера. Этот способ хоть и действенный, но даже он не дает стопроцентной гарантии подлинности скриншота.
Во всяком случае, теперь мошенникам будет труднее вас обмануть. И надеюсь, сами вы не будете баловаться подделкой скринов 🙂
Спасибо за внимание, буду рад вашим комментариям по статье.
Создатель блога. Частный инвестор. Зарабатывает в высокодоходных инвестиционных проектах и криптовалютах с 2014 года. Консультирует партнеров. Присоединяйтесь в телеграм канал блога и наш чатик.
Подделка screenlife. «Да я Мадонну лично знаю»
В спорах в интернете и в реальной жизни наибольший вес имеют аргументы, которые подкрепляются доказательствами — скриншоты, фотографии, записи сообщений/звонков, видеозаписи экрана и т.д.
Статичные картинки себя уже дискредитировали — их слишком просто отредактировать. К аудиозаписям доверие тоже невысокое. Как же дело обстоит с видео или живой демонстрацией на экране устройства?
Введение
В телешоу, видеоблогах и на стримах часто можно увидеть, как кто-то обвиняет кого-то или, наоборот, оправдывается, демонстрируя свои переписки.
В киноиндустрии благодаря усилиям Тимура Бекмамбетова появился новый формат сторителлинга — screenlife, где сюжет развивается на экране устройства. Это и неудивительно: наши мобильные устройства могут рассказать о нас больше, чем мы сами.
Скриншотам уже никто не верит (правда, не всегда). Наблюдается другая тенденнция: показывать / снимать видео либо сразу с экрана устройства, либо второй камерой. Все это чтобы доказать, что это не фотошоп, а реальные данные в реальном приложении. Аргументы понятны: видео подделать куда сложнее и дороже, а лого приложения / имя разработчика внушают доверие.
Но спешим вас огорчить: чтобы подделать screenlife, не нужно ни больших бюджетов, ни спецэффектов, ни навыков видеомонтажа.
Все, что нужно, — это фреймворк инструментации Frida, небольшой скрипт на JavaScript и один реверсер. Да, не нужно машинного обучения, нейронных сетей и тяжелой артиллерии вроде DeepFace.
Техническая сторона вопроса, или пара слов о Frida
К сожалению, на Хабре Frida упоминается всего лишь 18 раз.
Frida — это фреймворк динамической бинарной инструментации (Dynamic Binary Instrumentation, DBI), позволяющий в runtime добавлять пользовательский JavaScript код внутрь исполняемого blackbox процесса / приложения с целью его дальнейшего изучения — hooking и tracing кода приложения, подмена аргументов и возвращаемых значений функций, изменение их поведения и многое другое. Подробнее с возможностями Frida можно ознакомиться на официальном сайте. Frida доступна для многих платформ, в том числе и для iOS.
Пример/proof
Устройство: iPhone 6s с версией iOS 13.2.3
Целевое приложение: Instagram (v126.0.0.13.120)
Цель: Продемонстрировать переписку с очень известной личностью, в нашем случае с Мадонной.
Сразу оговоримся, что можно взять абсолютно любое устройство под любой ОС. Целевое приложение тоже может быть любым — от новостных до мобильного банкинга.
Более подробно об этом можно почитать в нашей статье “Динамический анализ iOS-приложений без Jailbreak”.
Что мы хотим получить
Ниже продемонстрирован конечный результат описанной задачи:
Если вам интересно, как это реализовано технически, то читайте дальше. В противном случае можете сразу перейти к выводам.
Для написания и отладки скрипта мы используем устройство с jailbreak, а финальный результат можно будет запускать и на устройстве без него.
Прежде всего, нужно понять, как должно выглядеть приложение после запуска скрипта. Какие UI элементы должны быть изменены, чтобы создать видимость правдивой переписки? Для этого взглянем на стандартный UI интерфейс Instagram:
Так выглядит профиль пользователя Madonna (на момент написания статьи):
Если открыть личные сообщения с Мадонной, то увидим пустой диалог (что ожидаемо):
Также пример непустого диалога с пользователем (состоящий просто из рандомных предложений):
Получаем дешифрованный IPA файл
Итак, чтобы начать разработку Frida-скрипта, нам нужно дешифрованное целевое приложение (в данном случае IPA файл приложения Instagram). Получить его можно несколькими способами:
Получив файлы приложения, можно приступать к ревёрсу. Про иерархию директорий и файлов iOS bundle можно почитать на официальном сайте разработчиков. В нашем случае можно найти три интересных исполняемых Mach-O 64-bit arm64 файла:
Ревёрсим исполняемые файлы (Instagram)
Просмотрев функции бинарного файла Instagram, можно заметить, что их сравнительно мало (всего 364), хотя Instagram — довольно обширное приложение:
Большая часть этих функций — импорты из фреймворков. Поэтому далее имеет смысл смотреть функционал фреймворков, упомянутых выше.
Ревёрсим исполняемые файлы (InstagramAppCoreFramework и FBSharedFramework)
Doxygen документация по хедерам
Открыв InstagramAppCoreFramework в IDA Pro, мы видим, что в нём по меньшей мере 250000 функций, а значит, искать нужную логику вслепую будет довольно долго. Чтобы ускорить процесс ревёрс-инжиринга, можно сгенерировать doxygen-документацию на основе header-файлов Objective-C классов этого фреймворка. Для генерации header-файлов можно использовать утилиту classdumpios, поддерживающую архитектуру ARM64. Имея iPhone с jailbreak, можем зайти на него через SSH по USB и в директории с уже распакованным IPA файлом Instagram сделать следующее:
Теперь осталось скачать архивы с header-файлами из iPhone на хостовую машину, разархивировать их в одну директорию, создать соответствующий конфигурационный файл для doxygen и запустить генерацию документации:
Когда doxygen-документация сгенерирована, можно смотреть на отношения между классами и их иерархию. При анализе больших файлов это упрощает жизнь.
Вот небольшой кусочек списка классов, участвующих в InstagramAppCoreFramework и FBSharedFramework :
И пример того, как выглядит описание рандомно взятого класса IGAuthUserParser :
С помощью такой документации перемещаться по классам, их методам и полям становится в разы проще.
Первый Frida-скрипт
В процессе анализа исполняемого файла вы наверняка найдёте интересную функцию, которая может участвовать в необходимой логике. Чтобы проверить это предположение, но при этом не ревёрсить статически все внутренние и внешние вызовы функции, можно с помощью простого Frida-скрипта проверить, действительно ли функция срабатывает, с какими аргументами была вызвана, какое возвращаемое значение, какой backtrace, состояние стека на момент вызова и так далее. При желании вы даже можете подменять возвращаемое значение или полностью заменить логику функции. Всё зависит от ваших нужд. Далее мы опишем только trace-скрипт, который следит за вызовами функции и показывает интересующую нас отладочную информацию.
Прежде всего необходимо установить Python-биндинг для Frida, а также вспомогательные утилиты:
Подразумевается, что к этому моменту на тестируемом устройстве уже поднят frida-server. О том, как это сделать, можно прочитать тут (для устройств с JB) или тут (для устройств без JB).
Затем поставим hook, срабатывающий на вход и выход из функции:
В итоге получился максимально простой скрипт, который выводит сообщения на вход и выход из функции.
Уже этого скрипта будет достаточно, чтобы понять, выполняется ли та или иная функция. Но, разумеется, нам нужен более детальный анализ, поэтому внесём некоторые улучшения.
В hook, срабатывающий на вход, добавим вывод названий аргументов, их значений и бектрейс. А в hook на выход — возвращаемое значение. Большая часть кода позаимствована отсюда. В итоге получим такую функцию:
Использовать полученную функцию можно таким образом:
Чтобы запустить полученный скрипт, нужно выполнить следующую команду (с запущенным Frida-сервером на тестируемом устройстве, подключенном по USB):
После запуска скрипта заходим в direct сообщения с пользователем и нажимаем на кнопку со стикерами (расположены справа от поля для ввода сообщения). Мы получем исчерпывающий вывод:
Поиск и анализ direct чата
Сразу оговоримся, что дальнейшее описание относится к указанной версии Instagram. Мы не гарантируем работу скрипта для других версий.
В Instagram за direct сообщения (как личные сообщения, так и чаты) отвечает класс IGDirectThread (далее «direct сообщения«, «direct thread«, «диалог» можно считать одной и той же сущностью).
Подмена direct чата
В коде ниже реализован первый вариант, так как он требует меньше времени на поиск direct thread — не нужно проходить все объекты IGDirectThread в памяти, достаточно лишь сравнить открываемые direct сообщения с теми, что нам нужны (наличие пользователя в поле _users ):
Изменяем верхний бар
Теперь осталась только аватарка.
Замена аватарки
Код для этого функционала оставляем читателю в качестве домашнего задания.
Небольшие проблемы
Эта реализация имеет ряд проблем, которые могут привести к падению приложения и некоторым другим глюкам. Мы не ставили задачи написать production-ready скрипт, а этой реализации достаточно, чтобы записать небольшую демку, показывающую изначальную задумку.
Весь скрипт занимает около 350 строк на JavaScript с учётом всех возникших проблем. Для более сложной логики он, конечно, будет больше — тут уже дело в вашей фантазии 😉
Взгляд в будущее
Можно с ужасом представить, что будет, когда до широких масс дойдет дополненная реальность (AR), которая для телефонов сейчас в основном представлена в виде развлекательных масок и небольших игрушек.