Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
«(Не)Безопасность 101» — Григорий Джанелидзе, Mosdroid
Search
AvitoTech
March 20, 2018
Programming
0
340
«(Не)Безопасность 101» — Григорий Джанелидзе, Mosdroid
AvitoTech
March 20, 2018
Tweet
Share
More Decks by AvitoTech
See All by AvitoTech
Один кликстрим на все бэкенды. Дмитрий Хасанов (Авито)
avitotech
0
610
«Масштабируемая архитектура фронтенда» — Роман Дворнов, Avito
avitotech
0
830
Атомарные SPA — Александр Китов, Альфа-Банк
avitotech
0
1.1k
Моделирование пользовательских предпочтений в мультимодальных данных. Hady W. Lauw, Максим Ткаченко (Singapore Management University)
avitotech
0
310
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
310
«CI процессы в Android разработке Avito», Сергей Пинчук, Avito
avitotech
0
330
Кластеризация волатильных объявлений с помощью EM-алгоритма — Василий Лексин (Avito)
avitotech
0
53
Аналитическое хранилище Avito.ru — от больших к очень большим данным — Артем Данилов (Avito)
avitotech
1
4.4k
Кросс-продуктовые эффекты, или как мы оценивали вклад «Электричек» — Екатерина Лосева (Туту.ру)
avitotech
0
4.3k
Other Decks in Programming
See All in Programming
「コンパイル時のユニットテスト」導入するとユニットテストを 書かなくてよくなるのか?
tomohisa
9
2.2k
Swiftの型推論を学ぼう | Let's Learn About Type Inference in Swift
omochi
2
520
Ruby製社内ツールのGo移行
bgpat
2
260
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
Parallel Socket Communication in Swift
s_shimotori
0
220
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
suzushin54
1
1.4k
WinUI 3デモ - "CommunityToolkit.Mvvm"NuGetパッケージ編
andrewkeepcoding
0
130
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
kuboaki
1
1.7k
オブジェクト指向は必要なのか / Is object-oriented needed?
kishida
27
19k
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
1
160
AppDeveloperCon 2024 EU: Building polyglot developer experiences in 2024
salaboy
0
380
Featured
See All Featured
Designing with Data
zakiwarfel
94
4.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
67
38k
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.6k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Code Review Best Practice
trishagee
54
15k
Designing for humans not robots
tammielis
247
25k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
14
1.3k
A Philosophy of Restraint
colly
195
15k
BBQ
matthewcrist
78
8.7k
From Idea to $5000 a Month in 5 Months
shpigford
376
45k
A designer walks into a library…
pauljervisheath
199
23k
Rebuilding a faster, lazier Slack
samanthasiow
72
8.2k
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