Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
«(Не)Безопасность 101» — Григорий Джанелидзе, M...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
AvitoTech
March 20, 2018
Programming
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
«(Не)Безопасность 101» — Григорий Джанелидзе, Mosdroid
AvitoTech
March 20, 2018
More Decks by AvitoTech
See All by AvitoTech
Один кликстрим на все бэкенды. Дмитрий Хасанов (Авито)
avitotech
0
840
«Масштабируемая архитектура фронтенда» — Роман Дворнов, Avito
avitotech
0
1.3k
Атомарные SPA — Александр Китов, Альфа-Банк
avitotech
0
2k
Моделирование пользовательских предпочтений в мультимодальных данных. Hady W. Lauw, Максим Ткаченко (Singapore Management University)
avitotech
0
420
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
440
«CI процессы в Android разработке Avito», Сергей Пинчук, Avito
avitotech
0
480
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
130
Аналитическое хранилище Avito.ru — от больших к очень большим данным — Артем Данилов (Avito)
avitotech
1
4.9k
Кросс-продуктовые эффекты, или как мы оценивали вклад «Электричек» — Екатерина Лосева (Туту.ру)
avitotech
0
4.6k
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.7k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
350
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.3k
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
170
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
setup-vp GitLab対応の裏側
naokihaba
0
150
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
240
Are APIs Still Relevant in the AI Era?
soyuka
0
410
Rでドレミ/Do-Re-Mi_with_R
florets1
0
120
iOSDCのペンライトを自動制御したい!
akkeylab
0
360
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
6.2k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Unsuck your backbone
ammeep
672
58k
Optimising Largest Contentful Paint
csswizardry
37
4k
Automating Front-end Workflow
addyosmani
1369
210k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Making the Leap to Tech Lead
cromwellryan
135
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
620
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Transcript
(Не)Безопасность 101 Григорий Джанелидзе
Почему поговорим: 2
Про что поговорим: • Как делать точно не надо •
Как делать скорее всего не надо • Какие инструменты существуют для разных задач • Как с этим всем жить 3
101 is a topic for beginners in any area. It
has all the basic principles and concepts that is expected in a particular field. – Wikipedia
Вся информация представлена исключительно в ознакомительных и образовательных целях. –
я
Храним ключи Demo 6
7 Храним ключи
Храним ключи 8 Demo
Храним ключи 9
Храним ключи 10 https://github.com/KeepSafe/ReLinker
Храним ключи Итоги 11 Хранить в коде Хранить в манифесте/ресурсах
Хранить в нативной библиотеке и доставать через JNI Хранить в коде и шифровать
12 Храним ключи Инструменты •apktool •JD-GUI, ByteCode Viewer, … •IDA
Pro, Hopper, … •если нужны только строчки: man 1 strings
Обфусцируем 13 Demo
14 Обфусцируем Инструменты • smali / backsmali • https://github.com/CalebFenton/simplify •
frida, xposed, … • https://github.com/xoreaxeaxeax/movfuscator
15
16 Обфусцируем Итоги •ProGuard полезный и его в любом случае
надо включить •Но он не спасет •Ревью любых изменений в конфиге ProGuard’а ≠ обычное кодревью •декомпилируйте и пытайтесь реверсить
17 Обфусцируем Итоги •Я уже говорил, что не надо использовать
JNI для «безопасности»? •ProGuard не трогает все методы с модификатором native •Выпиливайте логи, имена переменных, …
18 Обфусцируем Зло •Consumer ProGuard Files
19 Обфусцируем Зло ¯\_(ツ)_/¯ (спасибо Google, стало удобнее)
Сопротивляемся 20 Demo
21 Сопротивляемся Итоги •Debug.isDebuggerConnected() •не надо •лайфхаки с ptrace •могут
быть полезными •миграция с json’а на protobuf, flatbuf, … •поможет, но не сильно
22 Сопротивляемся Итоги •SSL pinning нужен и спасёт •…но не
от реверсинжиниринга
23 Сопротивляемся Инструменты •man 1 ps •gdb, lldb, … •frida,
xposed, …
Как быть? 24 •Пользоваться проприетарными решениями •DexGuard, SecNeo, DexProtector, …
•Если есть ресурсы и время, то делать свое
Заключение • Всегда нужно понимать, что делаешь • Проверяйте любые
советы по безопасности на практике • , но с этим надо жить 25
И если что: 26 На iOS всё не сильно лучше
(но это тема отдельного выступления)
27 Спасибо за внимание
28 t.me/androidguards