хакерские коды для компьютера
Секретный код. Прячем конфиденциальную информацию внутри своих приложений для Android
Содержание статьи
Так что все пароли, ключи шифрования и другую действительно важную информацию засовывать в код приложения уж точно не стоит. Нужно дать приложению доступ к какому-то веб-сервису? Используй его API для получения токена сервиса в момент подключения к нему. Приложение использует специальный скрытый API твоего сервиса? Сделай так, чтобы оно запрашивало его URL у самого сервиса и этот URL был уникальным для каждой копии приложения. Делаешь приложение для шифрования файлов? Запрашивай пароль шифрования у пользователя. В общем, любыми средствами сделай так, чтобы внутри приложения не было никакой информации, которая может привести к взлому твоих аккаунтов, твоего веб-сервиса или данных пользователя.
А если ты все-таки решил вшить важные данные в код приложения и не хочешь, чтобы их увидели, есть несколько рецептов, как это сделать, от простейших до действительно сложных.
Сохраняем строки в strings.xml
Это, наверное, простейший метод скрытия строк. Смысл метода в том, чтобы вместо размещения строки внутри константы в коде, что приведет к ее обнаружению после декомпиляции, разместить ее в файле res/values/strings.xml :
А из кода обращаться через getResources():
Разбиваем строки на части
Ты можешь не только использовать части строк, но и дробить их, чтобы затем собрать воедино. Допустим, ты хочешь скрыть в коде строку MyLittlePony. Совсем необязательно хранить ее в одной-единственной переменной, разбей ее на несколько строк и раскидай их по разным методам или даже классам:
Но здесь есть опасность столкнуться с оптимизацией компилятора, который соберет строку воедино для улучшения производительности. Поэтому директивы static и final к этим переменным лучше не применять.
Кодируем данные с помощью XOR
Для еще большего запутывания реверсера строки можно поксорить. Это излюбленный метод начинающих (и не только) вирусописателей. Суть метода: берем строку, генерируем еще одну строку (ключ), раскладываем их на байты и применяем операцию исключающего ИЛИ. В результате получаем закодированную с помощью XOR строку, которую можно раскодировать, вновь применив исключающее ИЛИ. В коде это все может выглядеть примерно так (создай класс StringXOR и помести в него эти методы):
Открыв Android Monitor в Android Studio, ты найдешь строки вида:
Это и есть закодированные с помощью XOR оригинальные строки. Добавь их в код вместо оригинальных, а при доступе к строкам используй функцию декодирования:
Благодаря этому методу строки не будут открыто лежать в коде приложения, однако раскодировать их тоже будет совсем нетрудно, так что всецело полагаться на этот метод не стоит. Да и ключ тоже придется как-то прятать.
Шифруем данные
Окей, XOR — это уже кое-что. Но что, если пойти дальше и применить к строкам реальное шифрование? Вскользь я уже затрагивал этот вопрос в статье «Как защитить свое приложение для Android от реверса и дебага», сейчас же разберемся более детально. Во-первых, нам понадобятся функции шифрования и дешифрования строк:
Во-вторых, функция генерации случайного 128-битного ключа:
В-третьих, функции для перевода ключа в строку и обратно:
Так же как и в случае с XOR’ом, добавь куда-нибудь в начало приложения код, генерирующий ключ, а затем выводящий его в консоль с помощью Log (в примере подразумевается, что все криптографические функции ты разместил в классе Crypto):
На экране ты увидишь ключ, c помощью которого сможешь зашифровать строки и точно так же вывести их в консоль:
Так ты получишь в консоль зашифрованную строку. Далее уже в таком виде ты сможешь вставить ее в код приложения и расшифровывать на месте:
Чтобы еще больше запутать реверсера, ты можешь разбить ключ и пароль на несколько частей и поксорить их. При включенном ProGuard такой метод превратит весь твой код сборки и расшифровки строк в запутанную мешанину, в которой с наскоку будет не разобраться.
Храним данные в нативном коде
Наконец, самый хардкорный и действенный метод скрытия данных — разместить их в нативном коде. А если быть точным — коде, который компилируется не в легко декомпилируемый для простоты изучения язык Java, а в инструкции ARM/ARM64. Разобрать такой код намного сложнее, декомпиляторов для него нет, сам дизассемблированный код сложен для чтения и понимания и требует действительно неплохих навыков от реверсера.
В Android, как и в случае с настольной Java, нативный код обычно пишут на языках C или C++. Так что для нашей задачи мы выберем язык C. Для начала напишем класс-обертку, который будет вызывать наш нативный код (а именно ARM-библиотеку с реализацией функции getPassword() ):
В целом это все. За одним исключением: хоть саму нативную библиотеку разобрать будет сложно, для извлечения из нее пароля достаточно достать библиотеку из APK-файла и применить к ней команду strings (в Linux-системах):
А вот если применить к ней все описанные выше техники разбиения строки, XOR, шифрование и так далее, все станет намного сложнее и ты сразу отобьешь желание ковырять свое приложение у 99% реверсеров. Однако и писать все эти техники защиты придется на языках C/C++.
Выводы
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
Пиши код в терминале, как настоящий хакер
Перевод статьи Калеба Тейлора «How to code like a Hacker in the terminal».
Вы хакер. Терминал – ваш дом родной. Вы знаете, что каждое нажатие клавиш имеет значение. Если что-то эффективно менее чем на 100%, то вы готовы проводить часы, подбирая правильный инструмент, который сохранит вам секунды. Потому что дело всегда того стоит.
Source: Pablo Stanley via Twitter
Но не отвлекает ли вас от работы этот постоянный поиск новых и лучших способов работать? Кто-то может с этим согласиться, но вы – вряд ли. Никакая работа не стоит того чтобы ею заниматься, если после вы не сможете прочесть коллегам лекцию о том, как вам удалось сделать это так эффективно (ну, эффективно – это не считая времени на настройку всего).
Инструменты/функционал из списка ниже должны быть известны любому хорошему хакеру.
Оболочка (zsh)
Обычный разработчик: Оболочка это оболочка. Вообще не важно, какую использовать.
Вы, хакер: Командная оболочка это сердце моей работы. Моя страсть к эффективности и функционалу не знает границ. Моя оболочка должна быть достойна настоящего хакера.
Вы живете в терминале, поэтому хотите использовать прекрасную оболочку. Вот почему вы используете zsh.
Она имеет массу особенностей:
Она также поставляется с отличным фреймворком для управления вашей zsh-конфигурацией: Oh My Zsh. Он включает больше 200 плагинов и больше 140 тем, с помощью которых можно добавить в ваш терминал разнообразные прекрасные функции. Маленький пример:
git – тысячи aliases и полезных функций для git.
tmux — alias и настройки для интеграции zsh с tmux.
node – добавляет команду node-docs для открытия документации сайта.
osx – несколько утилит для работы с OSX.
web-search – поиск в интернете из командной строки.
auto-suggestions – быстрые, ненавязчивые предложения команд, возникающие по мере ввода. Основываются на вашей истории команд.
Полный список плагинов можно посмотреть здесь.
Управление сессиями (tmux)
Обычный разработчик: Окей, я открыл мои файлы проекта lame_project_1. Но мне также нужно работать над boring_project_2. Также мне нужно подключиться к серверу по ssh и посмотреть логи. Подозреваю, что у меня будет бардак в терминале со всеми этими файлами/вкладками из разных проектов и в конечном итоге я потеряю над ними контроль и буду вынужден закрыть терминал и начать сначала.
Вы, хакер: я работаю над несколькими проектами одновременно, так что мне нужен инструмент, чтобы все организовать. Он должен работать на разных платформах, давать мне возможность организовывать рабочее пространство и обладать другими функциями, увеличивающими продуктивность.
Вы знаете, что разработка может стать беспорядочной. Порой приходится работать над несколькими проектами одновременно. Вот почему вам нужен tmux.
Он позволяет создавать сессии. Каждая сессия может быть кастомизирована под ваши нужды. Чтобы было легче переключаться, сессиям можно давать имена. Также их можно сохранять, чтобы в случае закрытия терминала можно было восстановить. Плюс, в этом инструменте есть собственная строка состояния, где отображаются вещи вроде времени, даты, использования CPU и пр. А если вы не знаете, сколько CPU у вас используется на данный момент, то какой же вы хакер?
В tmux даже есть менеджер плагинов и масса прекрасных плагинов и функций, которые поднимут ваш хакинг на новый уровень.
Супер-хакерский совет: используйте tmux с fzf с помощью прекрасных скриптов для быстрого создания / удаления файлов и перемещения по ним.
Поиск (ripgrep)
Обычный разработчик: Где я определил эту константу? Я знаю, что она где-то здесь. Попытаюсь найти с помощью grep. А какие аргументы задать? Загуглю. Вот черт, теперь оно ищет по моей папке node_modules. Хуже не бывает.
Вы, хакер: Когда я что-нибудь ищу, поиск должен быть молниеносно быстрым. Также в инструменте поиска должны быть тонкие настройки, заданные по умолчанию, чтобы игнорировать бинарные и скрытые файлы.
Говоря словами разработчика программы, «Используйте ripgrep, если вам нравится скорость, фильтрация по умолчанию, меньшее количество багов и поддержка Unicode».
Fuzzy Finding (fzf)
Обычный разработчик: Помнить расположение всех файлов моего проекта, безусловно, тяжело. Думаю, придется покопаться, пока найду нужный.
Вы, хакер: мне нужна возможность искать файлы с нечеткими условиями поиска. Чтобы я мог быстро найти искомое, введя имя файла или часть пути, или и то, и другое.
Вы знаете, что вам нужна возможность не печатать больше необходимого. Поэтому вы применяете fzf – fuzzy finder общего назначения для использования в командной строке. Он может осуществлять поиск по любому списку: по файлам, истории команд, процессам, именам хостов, закладкам, git commits и т.п.
Супер-хакерский совет: псевдонимы (aliases) это отличный способ создать сокращения, которые помогут вам извлечь пользу из функционала fzf. Например, если вы хотите найти файл, а затем открыть выбранное в вашем дефолтном редакторе, вы можете добавить в конфиг вашего zsh следующее:
На fzf wiki есть гораздо больше примеров.
Подсказки в терминале (Spaceship)
Обычный разработчик: да какая разница, как выглядят подсказки в терминале? В них все равно нет ничего полезного для меня. Я бы просто оставил их в дефолтном состоянии.
Вы, хакер: Я хочу, чтобы мои подсказки были восхитительными. Они должны учитывать контекст. Они должны давать мне полезную информацию и быть настраиваемыми. Также было бы хорошо, если бы они соотносились с пространством.
Вы знаете, что подсказки должны быть короткими, простыми и предоставлять информацию, имеющую отношение к делу. А также они должны поражать людей своей красотой. Вот почему вы используете spaceship-prompt. Он предоставляет git/mercurial интеграцию, индикатор заряда батареи, «умное» имя хоста и пользовательские данные, номера версий для разнообразных библиотек, потрясающие значки и многое другое.
Смена директорий (z)
Обычный разработчик: Мне нужно перейти в мой проект hacker, который находится внутри папки cool, которая лежит в папке personal, которая расположена в папке code, а уж та, в свою очередь, – в домашней директории.
Вы, хакер: Мне нужно перейти в мой проект hacker.
Обычные разработчики печатают весь путь к нужной директории. А вы хакер. Вы полагаетесь на z. После установки эта программа начинает изучать, какие директории вы посещаете. Затем вы можете передать ей регулярное выражение (или просто имя директории), чтобы перейти к наиболее вероятному кандидату.
Бонусные инструменты хакера
Следующие инструменты позволят вам вывести свою хакерскую игру на новый уровень.
1. wttr.in – Есть только один правильный способ узнавать погоду.
2. Star Wars – Классные люди любят «Звездные войны». Хакеры смотрят их в терминале. (о подобные интересных штуках, которые можно делать в терминале Linux, мы писали ранее).
3. haxor-news – Если вы не читаете Hacker News, то вы вообще хакер?
4. Spotify – Используя shpotify, вы можете проигрывать музыку прямо из терминала (только OSX). Или можно использовать mopidy для чего-нибудь кроссплатформенного.
Конечно, это далеко не исчерпывающий список. У вас есть собственные любимые инструменты, повышающие эффективность работы? Поделитесь в комментариях!
21 хитрость командной строки и хаки
Трюки, хаки и секреты командной строки в Windows 10, 8, 7, Vista и XP
Средство командной строки Windows и многие его команды могут показаться на первый взгляд скучными или даже относительно бесполезными, но, как может сказать любой, кто когда-либо использовал командную строку очень часто, есть что любить!
Некоторые из этих хитростей и приемов командной строки – это специальные функции или забавное использование самой командной строки, в то время как другие – просто аккуратные или относительно неизвестные вещи, которые вы можете сделать с помощью определенных команд CMD.
Давайте начнем! Откройте командную строку, а затем просмотрите эти 21 супер-крутые хаки командной строки.
Что бы вы ни делали, не пропустите безумный трюк, где вы можете бесплатно посмотреть весь фильм «Звездные войны – Эпизод IV» прямо из командной строки. Да, мы серьезно.
Используйте Ctrl-C, чтобы прервать команду
Любая команда может быть остановлена на ее треках командой abort: Ctrl-C.
Если вы на самом деле не выполнили команду, вы можете просто вернуться назад и стереть то, что вы ввели, но если вы уже выполнили ее, вы можете нажать Ctrl-C, чтобы остановить ее.
Ctrl-C не волшебная палочка, и она не может отменить вещи, которые нельзя отменить, например, частично завершенную команду форматирования.
Тем не менее, для таких вещей, как команда dir, которая кажется вечной, или для вопросов, которые вы задаете в ответ на приглашение, на которое вы не знаете, команда abort – отличный способ узнать командную строку.
Просмотр результатов команды по одной странице (или строке) за раз
Вы когда-нибудь запускали команду, например, команду dir, которая выводит на экран столько информации, что она почти бесполезна? Ты не одинок.
Одним из способов решения этой проблемы является выполнение команды особым образом, чтобы любая генерируемая информация отображалась по одной странице или одной строке за раз.
Чтобы сделать это, просто введите команду, например, команду dir, а затем введите символ канала и затем команду more.
Запуск командной строки от имени администратора автоматически
Многие команды требуют, чтобы вы выполняли их из командной строки с повышенными привилегиями в Windows – другими словами, выполняйте их из командной строки, которая запускается от имени администратора.
Станьте опытным пользователем из командной строки с функциональными клавишами
Тот факт, что функциональные клавиши на самом деле что-то делают в командной строке, может быть, один из самых секретов этого инструмента:
Взломать подсказку
Знаете ли вы, что само приглашение в командной строке полностью настраивается благодаря команде приглашения? Это так, и когда мы говорим настраиваемый, мы имеем в виду действительно настраиваемый.
Вы всегда можете выполнить подсказку в одиночку, без параметров, чтобы вернуть его иногда скучное значение по умолчанию.
Получить справку для любой команды
Верьте или нет, команда справки не предоставляет справку для каждой команды командной строки. (Насколько это глупо?)
Я сомневаюсь, что переключатель справки – самый крутой трюк командной строки, о котором вы когда-либо слышали, но трудно не согласиться с тем, что он один из наиболее полезных.
К сожалению, ни команда справки, ни переключатель справки не дают много объяснений о том, как интерпретировать синтаксис. См. Как читать командный синтаксис, если вам нужна помощь с этим.
Сохранить вывод команды в файл
Эти маленькие символы позволяют перенаправить вывод команды в текстовый файл, давая вам сохраненную версию любых данных, которые команда выдает в окне командной строки.
Например, допустим, вы собираетесь опубликовать проблему с компьютером на онлайн-форуме и хотите предоставить действительно точную информацию о вашем компьютере. Простой способ сделать это – использовать команду systeminfo с оператором перенаправления.
Посмотрите, Как Перенаправить Вывод Команды в Файл для большего количества примеров и лучшего объяснения того, как использовать операторы перенаправления.
Просмотр всей структуры каталогов накопителя
Одной из самых приятных маленьких команд является команда дерева. С помощью дерева вы можете создать своего рода карту каталогов на любом из дисков вашего компьютера.
Выполните дерево из любого каталога, чтобы увидеть структуру папок в этом каталоге.
С помощью такой информации, созданной с помощью этой команды, вероятно, будет хорошей идеей экспортировать результаты дерева в файл, чтобы вы могли просмотреть его.
Настройте текст строки заголовка командной строки
Изменение не вступит в силу, поэтому в следующий раз, когда вы откроете командную строку, строка заголовка вернется в нормальное состояние.
Команда title обычно используется, чтобы помочь придать индивидуальный вид файлам сценариев и пакетным файлам … не то, чтобы присвоение имени вашему имени не было хорошей идеей!
Копировать текст из командной строки
Однако, что если вы просто хотите скопировать короткий фрагмент текста в буфер обмена? Это не слишком сложно, но и не очень интуитивно понятно:
Теперь вы можете вставить эту информацию в любую программу, какую захотите, так же, как вы вставляете другой текст.
Откройте командную строку из любого места
Если вы когда-либо работали в командной строке очень долго, вы знаете, что выполнение команды cd/chdir снова и снова (снова и снова) может привести к разочарованию, чтобы получить нужный каталог, с которым вы хотите работать.
К счастью, есть очень простой трюк с командной строкой, который позволит вам открыть окно командной строки из любой папки, которую вы просматриваете в Windows.
Нажмите на нее, и вы запустите новый экземпляр командной строки, готовый и ожидающий в нужном месте!
Другой способ сделать это – отредактировать путь к папке в окне проводника. В папке, которую вы хотите использовать в командной строке, удалите путь на панели навигации и выполните cmd оттуда.
Если вы опытный пользователь из командной строки, вы сразу узнаете значение этого маленького трюка.
Если вы видите PowerShell в контекстном меню вместо командной строки, вы можете внести небольшое изменение в реестр Windows, чтобы изменить его на Командную строку. Solutics.ru есть руководство по этому вопросу.
Перетащите для легкого ввода имени пути
Большинство команд командной строки требуют от вас или имеют опции, чтобы указать полный путь к файлам или папкам, но ввод длинного пути может быть неприятным, особенно если вы пропустите символ и должны начать все сначала.
Просто перейдите к папке, путь к которой вы хотите найти в File/Windows Explorer. Там перетащите папку или файл в окно командной строки и отпустите. Как и в случае с магией, вставляется полный путь, что значительно экономит время при наборе текста в зависимости от длины и сложности имени пути.
К сожалению, функция перетаскивания не работает в командной строке с повышенными правами. По крайней мере, вы узнали несколько хитростей, как открыть один из них чуть быстрее!
Завершение работы или перезагрузка другого компьютера
Системные администраторы в бизнес-среде делают это все время по многим причинам, но вы также можете выключить или перезапустить другой компьютер в сети, все из командной строки вашего компьютера.
Просто введите имя удаленного компьютера (которое вы можете получить, запустив команду hostname на другом ПК), выберите то, что вы хотите сделать (перезагрузка или завершение работы), выберите некоторые другие параметры и нажмите кнопку ОК.
Так что, независимо от того, совершенствуете ли вы свои командные навыки или просто пугаете члена семьи, этот трюк с командной строкой – забавный.
Вы также можете выключить или перезагрузить другой компьютер строго из командной строки с помощью команды выключения, не используя диалог удаленного выключения.
Используйте Robocopy в качестве решения для резервного копирования
Благодаря команде robocopy вам не нужно использовать программное обеспечение для резервного копирования Windows или устанавливать сторонние программы для управления резервными копиями.
Просто выполните следующее, очевидно заменив исходную и целевую папки тем, что вы хотите создать резервную копию и куда это должно пойти.
Команда robocopy с этими параметрами работает идентично программному инструменту инкрементного резервного копирования, обеспечивая синхронизацию обоих местоположений.
У вас нет команды robocopy, если вы используете Windows XP или более раннюю версию. Однако у вас есть команда xcopy, которую можно использовать для выполнения чего-то очень похожего:
Независимо от того, какую команду вы решите использовать, просто создайте BAT-файл, содержащий команду, и запланируйте его запуск в планировщике задач, и у вас будет собственное решение для резервного копирования.
Просмотр важной информации о вашем компьютере
Может быть, просто для вашей собственной информации, но, конечно, когда вы решаете проблемы с сетью или интернетом, вам, возможно, в какой-то момент понадобится узнать подробности о сетевом подключении вашего компьютера.
Все, что вы хотели бы знать о своем сетевом подключении, доступно где-то на панели управления в Windows, но его гораздо проще найти и гораздо лучше организовать в результатах команды ipconfig.
Далее на экране отображается все, что важно для вашего сетевого подключения: ваш IP-адрес, имя хоста, DHCP-сервер, информация DNS и многое, многое другое.
Объедините этот хак с сообщением об операторах перенаправления, которое вы узнали о нескольких слайдах назад, и у вас есть очень простой способ получить информацию о вашем соединении с кем-то, кто помогает вам с проблемой.
Подключите локальную папку как сетевой диск
Команда net use используется для назначения общих дисков в сети вашему собственному компьютеру в качестве буквы диска, но знаете ли вы, что есть другая команда, которую можно использовать для того же действия с любой папкой в любой из локальных жесткие диски?
Существует, и это называется команда subst. Просто выполните команду subst, затем укажите путь к папке, которую вы хотите отобразить как диск.
Этот трюк с командной строкой значительно упрощает доступ к определенному месту из командной строки.
Доступ к ранее использованным командам с помощью клавиш со стрелками
Еще один замечательный трюк командной строки – использование клавиш со стрелками на клавиатуре для циклического выполнения ранее выполненных команд.
Клавиши со стрелками вверх и вниз переключают введенные вами команды, а стрелка вправо автоматически вводит символ за символом последнюю команду, которую вы выполнили. казнены.
Это может показаться не таким уж интересным, но есть несколько ситуаций, когда клавиши со стрелками экономят время.
Рассмотрим следующий пример: вы набрали 75 символов команды, а затем попытались выполнить ее, но обнаружили, что забыли добавить опцию в самом конце. Нет проблем, просто нажмите стрелку вверх, и вся команда автоматически вводится в окно командной строки, готовые для редактирования, чтобы она работала.
Конечно, я много работаю в командной строке, но я полагаю, что этот маленький трюк сэкономил мне много часов повторного набора текста на протяжении многих лет.
Автоматически завершать команды с завершением вкладки
Завершение с помощью вкладки – это еще одна хитрость командной строки, которая может сэкономить вам много времени, особенно если в вашей команде есть имя файла или папки, в которых вы не совсем уверены.
Чтобы использовать завершение табуляции в командной строке, просто введите команду, а затем часть пути, который вы знаете, если он вообще существует. Затем нажмите кнопку Tab снова и снова, чтобы просмотреть все доступные возможности.
Цикл результатов по порядку, или вы можете использовать SHIFT + TAB, чтобы пошагово просмотреть результаты.
Вы знаете, как приложение для текстовых сообщений вашего смартфона автоматически угадывает, что именно вы хотите напечатать дальше? Завершение вкладки в командной строке вроде как … только лучше.
Найти IP-адрес веб-сайта
Хотите узнать IP-адрес веб-сайта? Вы можете использовать команду nslookup или команду ping, но первая, вероятно, быстрее.
Сначала давайте воспользуемся командой nslookup, чтобы найти IP-адрес lifewire.com :
Теперь давайте попробуем использовать команду ping, чтобы найти ее:
Вы можете использовать ту же процедуру с любым веб-сайтом или любым именем хоста в вашей локальной сети.
Копировать и вставлять проще с режимом QuickEdit
Некоторые из этих трюков командной строки касались упрощения копирования и вставки.Итак, как насчет еще более простого способа копирования из командной строки (и секретного способа простой вставки)?
Посмотрите Звездные войны Эпизод IV
Правда, это не очень продуктивное использование командной строки, и при этом это не уловка командной строки или какой-либо команды, но это, безусловно, весело! Мы не можем представить работу, которая вошла в это!
Команда telnet обычно не включена в Windows, но ее можно включить, включив Клиент Telnet из компонентов Windows в апплете «Программы и компоненты» на панели управления. Если вы не хотите включать Telnet, но хотите посмотреть фильм, вы также можете посмотреть его в своем браузере на Star Wars ASCIIMation.