Enviar búsqueda
Cargar
詳解Dexファイルフォーマット
•
13 recomendaciones
•
4,908 vistas
Takuya Matsunaga
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 24
Descargar ahora
Descargar para leer sin conexión
Recomendados
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
Linux device drivers
Linux device drivers
Emertxe Information Technologies Pvt Ltd
A brief talk on arm device tree and how kernel loading the corresponding hardware drivers
Arm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
Linux kernel goes through very rapid changes each release. Over each release new protections and mitigations are added to make it more secure against different category of attacks. Unlike other platform, Linux security features are not advertise enough and most of the time limit to a mail thread. Since Linux is getting popular day by day in different sectors of industries, it is important for a researcher or an administrator to be aware about what protection it provide against sophisticated attacks targeting Linux kernel. In this session, I will take you through the different security features that Linux kernel has introduced over years and their limitations or bypasses. We will go though few demos to verify the working and bypasses of these protections. In the end I will discuss what is missing on Linux kernel that can be improved in future. This talk will help security researcher in identify the current Linux security protection and gaps presents in Linux kernel. With this knowledge they can tweak their product, for example an AV vendor working on Linux security need to be aware what protection is already present before working on something new. A developer dealing with Linux kernel development can also utilize this session to identify the security issues their code may hold and things they need to take care and ignore to make their modules or components secure
Summary of linux kernel security protections
Summary of linux kernel security protections
Shubham Dubey
Linux I2C Driver slides. Covers the complete i2c driver framework in linux and details on the components such as I2C adapter, I2C Client and I2C Core.
I2c drivers
I2c drivers
Pradeep Tewani
eBPF is one of the key technologies nowadays. There are several existing technologies in network or observability fields but not much in storage space. This presentation tells my research story and tries to define some of the possibilities of the technology.
eBPF in the view of a storage developer
eBPF in the view of a storage developer
Richárd Kovács
it's just a part of...
Linux Ethernet device driver
Linux Ethernet device driver
艾鍗科技
Virtual File System in Linux Kernel Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Linux Kernel - Virtual File System
Linux Kernel - Virtual File System
Adrian Huang
PCIe Gen3 presentation by PLDA at 4th FPGA Camp in Santa Clara, CA. For more details visit http://www.fpgacentral.com/fpgacamp or http://www.fpgacentral.com
PCIe Gen 3.0 Presentation @ 4th FPGA Camp
PCIe Gen 3.0 Presentation @ 4th FPGA Camp
FPGA Central
Recomendados
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
Linux device drivers
Linux device drivers
Emertxe Information Technologies Pvt Ltd
A brief talk on arm device tree and how kernel loading the corresponding hardware drivers
Arm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
Linux kernel goes through very rapid changes each release. Over each release new protections and mitigations are added to make it more secure against different category of attacks. Unlike other platform, Linux security features are not advertise enough and most of the time limit to a mail thread. Since Linux is getting popular day by day in different sectors of industries, it is important for a researcher or an administrator to be aware about what protection it provide against sophisticated attacks targeting Linux kernel. In this session, I will take you through the different security features that Linux kernel has introduced over years and their limitations or bypasses. We will go though few demos to verify the working and bypasses of these protections. In the end I will discuss what is missing on Linux kernel that can be improved in future. This talk will help security researcher in identify the current Linux security protection and gaps presents in Linux kernel. With this knowledge they can tweak their product, for example an AV vendor working on Linux security need to be aware what protection is already present before working on something new. A developer dealing with Linux kernel development can also utilize this session to identify the security issues their code may hold and things they need to take care and ignore to make their modules or components secure
Summary of linux kernel security protections
Summary of linux kernel security protections
Shubham Dubey
Linux I2C Driver slides. Covers the complete i2c driver framework in linux and details on the components such as I2C adapter, I2C Client and I2C Core.
I2c drivers
I2c drivers
Pradeep Tewani
eBPF is one of the key technologies nowadays. There are several existing technologies in network or observability fields but not much in storage space. This presentation tells my research story and tries to define some of the possibilities of the technology.
eBPF in the view of a storage developer
eBPF in the view of a storage developer
Richárd Kovács
it's just a part of...
Linux Ethernet device driver
Linux Ethernet device driver
艾鍗科技
Virtual File System in Linux Kernel Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Linux Kernel - Virtual File System
Linux Kernel - Virtual File System
Adrian Huang
PCIe Gen3 presentation by PLDA at 4th FPGA Camp in Santa Clara, CA. For more details visit http://www.fpgacentral.com/fpgacamp or http://www.fpgacentral.com
PCIe Gen 3.0 Presentation @ 4th FPGA Camp
PCIe Gen 3.0 Presentation @ 4th FPGA Camp
FPGA Central
There is ongoing confusion, and some contention, over the right way to use the QThread class. Part of the confusion comes from the uniqueness of QThread, which is significantly different from other threading classes. There are two valid patterns of QThread use, and each pattern is best suited for different use cases. Errors will arise when mixing these two patterns, or applying them inappropriately. This presentation will look at different patterns of threading in general, and examine in detail the two usage patterns for QThread. This talk will also cover how QThread works inside, how to communicate between threads, provide examples, and point out the pitfalls to avoid.
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
ICS
Hypervisor seminar
Hypervisor seminar
용환 노
The linux networking architecture
The linux networking architecture
hugo lu
Often called as the Swiss Army Knife of Embedded Linux, BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. It is written with size-optimization and limited resources in mind. Here is a presentation that details about BusyBox.
BusyBox for Embedded Linux
BusyBox for Embedded Linux
Emertxe Information Technologies Pvt Ltd
NLKB-005
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Hiraku Toyooka
This lecture is for a 3-hours class -- Open Source System Software & Practice -- in Dept. Computer Science and Information Engineering of National Taiwan University, organized and hosted by Prof. Shih-Hao Hung. The slides give an introductory overview on the Linux kernel and device drivers. It covers introductions and references for the Linux kernel, boot process overview, basics for system integration, character device drivers, and preliminary description and in-class issue discussion about memory management, multitask and concurrency control, interrupt handling, and waiting queue control, etc.
An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)
An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)
William Liang
linux device driver, LDD, linux, device driver,os internal
linux device driver
linux device driver
Rahul Batra
第一回 カーネル/VM探検隊@名古屋での資料です。
あるキャッシュメモリの話
あるキャッシュメモリの話
nullnilaki
2011年10月15日勉強会@武蔵小杉 PCIe SR-IOV
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
用Raspberry Pi 學Linux I2C Driver http://www.ittraining.com.tw/ittraining/course/embedded/devicedriver
用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver
艾鍗科技
Linuxカーネルの割り込み・例外処理(ハードウェア寄り) ・例外ベクタと例外ハンドラ ・割り込みディスクリプタテーブル ・割り込み信号発生からハンドラ実行まで ・ハンドラ実行終了後の処理 ・割り込み/例外処理のネスト kernel ver 4.9.16
4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
mao999
Describes the bootstrapping part in Linux and some related technologies. This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
shimosawa
GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64
Yi-Hsiu Hsu
Page cache mechanism in Linux kernel. Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Page cache in Linux kernel
Page cache in Linux kernel
Adrian Huang
Linux PCI Express Driver
Slideshare - PCIe
Slideshare - PCIe
Jin Wu
With the increasing number of ARM-based devices being used in the modern world today, mobile devices including tablets and smartphones are becoming a very worth-while target for attackers. This lecture will cover the fundamentals of both the ARM and ARM64 architectures, introduce return-oriented exploitation techniques for those who are unfamiliar and walk through the process of developing and executing an exploit on an ARM64-based system, making use of ROP and stack pivoting techniques along the way.
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
BillyEllis3
For new age touch-based embedded devices, Android is becoming a popular OS going beyond mobile phones. With its roots from Embedded Linux, Android framework offers benefits in terms of rich libraries, open-source and multi-device support. Emertxe’s hands-on Embedded Android Training Course is designed to customize, build and deploy custom Embedded OS on ARM target. Rich set of projects will make your learning complete.
Embedded Android : System Development - Part III
Embedded Android : System Development - Part III
Emertxe Information Technologies Pvt Ltd
Is it possible to use Neural Engine to run your neural network models on A11 devices?
Why You Cannot Use Neural Engine to Run Your NN Models on A11 Devices?
Why You Cannot Use Neural Engine to Run Your NN Models on A11 Devices?
Koan-Sin Tan
A compilation of several resources and paying it forward to the community.
Embedded linux network device driver development
Embedded linux network device driver development
Amr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
Linux Internals - Interview essentials 2.0
Linux Internals - Interview essentials 2.0
Linux Internals - Interview essentials 2.0
Emertxe Information Technologies Pvt Ltd
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
Takuya Matsunaga
Más contenido relacionado
La actualidad más candente
There is ongoing confusion, and some contention, over the right way to use the QThread class. Part of the confusion comes from the uniqueness of QThread, which is significantly different from other threading classes. There are two valid patterns of QThread use, and each pattern is best suited for different use cases. Errors will arise when mixing these two patterns, or applying them inappropriately. This presentation will look at different patterns of threading in general, and examine in detail the two usage patterns for QThread. This talk will also cover how QThread works inside, how to communicate between threads, provide examples, and point out the pitfalls to avoid.
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
ICS
Hypervisor seminar
Hypervisor seminar
용환 노
The linux networking architecture
The linux networking architecture
hugo lu
Often called as the Swiss Army Knife of Embedded Linux, BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. It is written with size-optimization and limited resources in mind. Here is a presentation that details about BusyBox.
BusyBox for Embedded Linux
BusyBox for Embedded Linux
Emertxe Information Technologies Pvt Ltd
NLKB-005
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Hiraku Toyooka
This lecture is for a 3-hours class -- Open Source System Software & Practice -- in Dept. Computer Science and Information Engineering of National Taiwan University, organized and hosted by Prof. Shih-Hao Hung. The slides give an introductory overview on the Linux kernel and device drivers. It covers introductions and references for the Linux kernel, boot process overview, basics for system integration, character device drivers, and preliminary description and in-class issue discussion about memory management, multitask and concurrency control, interrupt handling, and waiting queue control, etc.
An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)
An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)
William Liang
linux device driver, LDD, linux, device driver,os internal
linux device driver
linux device driver
Rahul Batra
第一回 カーネル/VM探検隊@名古屋での資料です。
あるキャッシュメモリの話
あるキャッシュメモリの話
nullnilaki
2011年10月15日勉強会@武蔵小杉 PCIe SR-IOV
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
用Raspberry Pi 學Linux I2C Driver http://www.ittraining.com.tw/ittraining/course/embedded/devicedriver
用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver
艾鍗科技
Linuxカーネルの割り込み・例外処理(ハードウェア寄り) ・例外ベクタと例外ハンドラ ・割り込みディスクリプタテーブル ・割り込み信号発生からハンドラ実行まで ・ハンドラ実行終了後の処理 ・割り込み/例外処理のネスト kernel ver 4.9.16
4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
mao999
Describes the bootstrapping part in Linux and some related technologies. This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
shimosawa
GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64
Yi-Hsiu Hsu
Page cache mechanism in Linux kernel. Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Page cache in Linux kernel
Page cache in Linux kernel
Adrian Huang
Linux PCI Express Driver
Slideshare - PCIe
Slideshare - PCIe
Jin Wu
With the increasing number of ARM-based devices being used in the modern world today, mobile devices including tablets and smartphones are becoming a very worth-while target for attackers. This lecture will cover the fundamentals of both the ARM and ARM64 architectures, introduce return-oriented exploitation techniques for those who are unfamiliar and walk through the process of developing and executing an exploit on an ARM64-based system, making use of ROP and stack pivoting techniques along the way.
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
BillyEllis3
For new age touch-based embedded devices, Android is becoming a popular OS going beyond mobile phones. With its roots from Embedded Linux, Android framework offers benefits in terms of rich libraries, open-source and multi-device support. Emertxe’s hands-on Embedded Android Training Course is designed to customize, build and deploy custom Embedded OS on ARM target. Rich set of projects will make your learning complete.
Embedded Android : System Development - Part III
Embedded Android : System Development - Part III
Emertxe Information Technologies Pvt Ltd
Is it possible to use Neural Engine to run your neural network models on A11 devices?
Why You Cannot Use Neural Engine to Run Your NN Models on A11 Devices?
Why You Cannot Use Neural Engine to Run Your NN Models on A11 Devices?
Koan-Sin Tan
A compilation of several resources and paying it forward to the community.
Embedded linux network device driver development
Embedded linux network device driver development
Amr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
Linux Internals - Interview essentials 2.0
Linux Internals - Interview essentials 2.0
Linux Internals - Interview essentials 2.0
Emertxe Information Technologies Pvt Ltd
La actualidad más candente
(20)
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
Hypervisor seminar
Hypervisor seminar
The linux networking architecture
The linux networking architecture
BusyBox for Embedded Linux
BusyBox for Embedded Linux
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)
An introduction to the linux kernel and device drivers (NTU CSIE 2016.03)
linux device driver
linux device driver
あるキャッシュメモリの話
あるキャッシュメモリの話
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
用Raspberry Pi 學Linux I2C Driver
用Raspberry Pi 學Linux I2C Driver
4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
GCC for ARMv8 Aarch64
GCC for ARMv8 Aarch64
Page cache in Linux kernel
Page cache in Linux kernel
Slideshare - PCIe
Slideshare - PCIe
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Introduction to Return-Oriented Exploitation on ARM64 - Billy Ellis
Embedded Android : System Development - Part III
Embedded Android : System Development - Part III
Why You Cannot Use Neural Engine to Run Your NN Models on A11 Devices?
Why You Cannot Use Neural Engine to Run Your NN Models on A11 Devices?
Embedded linux network device driver development
Embedded linux network device driver development
Linux Internals - Interview essentials 2.0
Linux Internals - Interview essentials 2.0
Destacado
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
Takuya Matsunaga
第4回マルウェア解析勉強会 「Android DEX Formatと同じファミリーのAndroidマルウェアのDEX差分」
Android DEX Format & DIFF (第4回マルウェア解析勉強会)
Android DEX Format & DIFF (第4回マルウェア解析勉強会)
雅太 西田
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
YoheiOkuyama
ここが変だよDalvik仮想マシン
ここが変だよDalvik仮想マシン
Takuya Matsunaga
2016/8/27 なにわテック『はじめてのDeep Learning』の発表資料です。
Deep Leaningと超解像
Deep Leaningと超解像
Takuya Matsunaga
OSDC 2016, Berlin: Talk by Florian Lautenschlager (@flolaut, Senior Software Engineer at QAware) Abstract: How to store billions of time series points and access them within a few milliseconds? Chronix! Chronix is a young but mature open source project that allows one for example to store about 15 GB (csv) of time series in 238 MB with average query times of 21 ms. Chronix is built on top of Apache Solr a bulletproof distributed NoSQL database with impressive search capabilities. In this code-intense session we show how Chronix achieves its efficiency in both respects by means of an ideal chunking, by selecting the best compression technique, by enhancing the stored data with (pre-computed) attributes, and by specialized query functions.
A Fast and Efficient Time Series Storage Based on Apache Solr
A Fast and Efficient Time Series Storage Based on Apache Solr
QAware GmbH
2015/4/25のDroidKaigiの発表資料です。
進化するArt
進化するArt
Takuya Matsunaga
Destacado
(8)
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
Android DEX Format & DIFF (第4回マルウェア解析勉強会)
Android DEX Format & DIFF (第4回マルウェア解析勉強会)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
ここが変だよDalvik仮想マシン
ここが変だよDalvik仮想マシン
Deep Leaningと超解像
Deep Leaningと超解像
A Fast and Efficient Time Series Storage Based on Apache Solr
A Fast and Efficient Time Series Storage Based on Apache Solr
進化するArt
進化するArt
Similar a 詳解Dexファイルフォーマット
Webなどで人気の高いMySQLデータベースサーバーにおいて、DTraceを使った解析手法を紹介します。MySQLの構造的について簡単にお話しし、それをどのようにDTraceで追いかけるかについて説明します。
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
SPDYの中身を見てみよう
SPDYの中身を見てみよう
shigeki_ohtsu
In the first half, we give an introduction to modern serialization systems, Protocol Buffers, Apache Thrift and Apache Avro. Which one does meet your needs? In the second half, we show an example of data ingestion system architecture using Apache Avro.
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
Presentation at MOSS10
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
Masafumi Okada
プログラミングのリファクタリング初歩に関する話題です。
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
CanSecWest 2013 で公開された資料を詳しく見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
NetBSD-6.0.1のソースコードリーディング。
NetBSD/i386 割り込みベクタテーブル
NetBSD/i386 割り込みベクタテーブル
kusabanachi
・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Databasedesignforsocialgames 110115195940-phpapp02
Databasedesignforsocialgames 110115195940-phpapp02
hideki hasegawa
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
Shintaro Fukushima
PLDIr#5 (2010-01-06) での紹介。
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
Masahiro Sakai
2011/01/15開催したJAPAN INNOVATION LEADERS SUMMIT 内で行った、株式会社ディー・エヌ・エー松信嘉範氏の講演資料「ソーシャルゲームの為のデータベース設計」
ソーシャルゲームの為のデータベース設計
ソーシャルゲームの為のデータベース設計
kaminashi
2014年11月29日に統計数理研究所で開催された, R研究集会での発表スライド「RとCDISC」です。
RとCDISC
RとCDISC
Masafumi Okada
mruby搭載ボードGR-CITRUSのRubyファームVer2.35の説明 クラスメソッドの説明のみ抜粋
mruby搭載ボードGR-CITRUSのRubyファームVer2.35の説明
mruby搭載ボードGR-CITRUSのRubyファームVer2.35の説明
三七男 山本
Exploring the x64
Exploring the x64
FFRI, Inc.
Cpu cache arch
Cpu cache arch
Shinichiro Niiyama
Rユーザのためのspark入門
Rユーザのためのspark入門
Shintaro Fukushima
CLR/H66で担当させて頂いたセッションの資料です。 pdf用に一部編集されています。
64ビット対応Dllインジェクション
64ビット対応Dllインジェクション
Shinichi Hirauchi
Yokohamapf25 nothingcosmos
DartVM on Android
DartVM on Android
nothingcosmos
負荷テストことはじめ
負荷テストことはじめ
Kazumune Katagiri
Similar a 詳解Dexファイルフォーマット
(20)
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
SPDYの中身を見てみよう
SPDYの中身を見てみよう
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Rとcdisc@moss10 公開用
Rとcdisc@moss10 公開用
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
NetBSD/i386 割り込みベクタテーブル
NetBSD/i386 割り込みベクタテーブル
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Databasedesignforsocialgames 110115195940-phpapp02
Databasedesignforsocialgames 110115195940-phpapp02
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
ソーシャルゲームの為のデータベース設計
ソーシャルゲームの為のデータベース設計
RとCDISC
RとCDISC
mruby搭載ボードGR-CITRUSのRubyファームVer2.35の説明
mruby搭載ボードGR-CITRUSのRubyファームVer2.35の説明
Exploring the x64
Exploring the x64
Cpu cache arch
Cpu cache arch
Rユーザのためのspark入門
Rユーザのためのspark入門
64ビット対応Dllインジェクション
64ビット対応Dllインジェクション
DartVM on Android
DartVM on Android
負荷テストことはじめ
負荷テストことはじめ
Más de Takuya Matsunaga
NTT法は廃止しよう
光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga
ソフトウェア開発の考え方の話です。
ソフトウェア組織マインド
ソフトウェア組織マインド
Takuya Matsunaga
製造業のチームトポロジーを考えてみました
ある製造業のチームトポロジー
ある製造業のチームトポロジー
Takuya Matsunaga
とっとるびー第39回の発表資料です
クリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみた
Takuya Matsunaga
2018/7/21 横浜Androidプラットフォーム部
組込エンジニアのための深層学習
組込エンジニアのための深層学習
Takuya Matsunaga
Design by contractとホーア論理
Design by contractとホーア論理
Takuya Matsunaga
Más de Takuya Matsunaga
(6)
光コラボは契約してはいけない
光コラボは契約してはいけない
ソフトウェア組織マインド
ソフトウェア組織マインド
ある製造業のチームトポロジー
ある製造業のチームトポロジー
クリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみた
組込エンジニアのための深層学習
組込エンジニアのための深層学習
Design by contractとホーア論理
Design by contractとホーア論理
詳解Dexファイルフォーマット
1.
発表者 : 僻地のプログラマ
kmt-t
2.
ハンドルネーム ◦ 正式にはkmt-t ◦ はてなID : kmt-t2 ◦ Twitter ID : kmt_t 僻地(鳥取県)出身です ◦ 大阪まで出稼ぎに出ています 得意分野など ◦ プログラミング言語はC++/C#など ◦ 組み込みではミドルウェア開発を得意にしています 2D/3Dグラフィックスおよび画像処理 ファイルシステム
3.
今回の発表はDalvik仮想マシン3部作の最後です 1. Dalvik仮想マシンのアーキテクチャ 2. Dalvikバイトコードのリファレンスの読み方 3. 詳解DEXフォーマット ← 今回はこれ! 発表の目的 1. Dalvik仮想マシンのソースコードを誰でも読めるように! 2. Dalvik仮想マシンに関するみんなのリテラシを上げる! 3. より深い部分の発表をするための下地をつくる!
4.
Dalvik仮想マシンの実行ファイル ◦ Windowsで言えばPEファイルに相当します ◦ Javaで言えばクラスファイルに相当します ◦ Javaのクラスファイルとは形式が違います ◦ 配布する場合は生のDEXファイルではなくパッケージされた apkファイルにすることが殆どです Dalvik仮想マシン同様シンプルで結構簡単です ◦ 理解するとバイトコードの動的生成、バイトコードエンジニアリ ングなどができるようになります リファレンス ◦ $ANDROID_SOURCE/dalvik/docs/dex-format.html
5.
Linuxにおけるobjdump相当 ◦ Android SDKに含まれています ◦ このツールでDEXファイルのいろいろな情報が抜き出せます ◦ 実用的にはこのツールが不自由なく使えるレベルのDEXファ イルフォーマットの知識があれば充分 代表的なオプション オプション 説明 -f ヘッダ(クラスやメソッドの定義など)のサマリーの表示 -h ヘッダ(クラスやメソッドの定義など)の詳細の表示 -d コードの逆アセンブルの表示
6.
7.
ファイルは以下の領域に分割 ヘッダ領域 string_ids領域 type_ids領域 proto_ids領域 field_ids領域 method_ids領域 class_defs領域 data領域 link_data領域 data領域、link_data領域に可変長データを格納 ◦ link_data領域はアンドキュメンテッド ◦ それ以外の領域には固定長のデータしか格納されない
8.
アイテム名
内容 magic “dex¥n035¥0” (固定値) checksum alder32によるチェックサム。signatureでも同様 の検出ができるが、ファイルの破損チェック用計算 コストの問題から通常はこちらを使った方が良い signature SHA-1によるハッシュ値。ファイルを一意に識別す るために使用できる。配布元の正しいハッシュ値と 比較すれば改ざんされていることは簡単に検出で きる。計算コストが高いので毎起動時に検査する のは難しい file_size ファイルサイズ header_size ヘッダサイズ。固定長 endian_tag 固定データ(0x12345678)。ファイルのエンディア ン識別用
9.
アイテム名
内容 link_size link_data領域のバイト数 link_off link_data領域へのオフセット map_off data領域のレイアウトを示すmapへのオフセット。 基本的にmapの情報は他の情報の冗長データに なっている(ファイルかデータを読み出す際には必 須ではない) string_ids_size 文字列定数プールに格納されている文字列の数。 string_ids_off string_ids領域へのオフセット type_ids_size type_ids領域のデータの数 type_ids_off type_ids領域へのオフセット proto_ids_size proto_ids領域のデータの数 proto_ids_off proto_ids領域へのオフセット
10.
アイテム名
内容 field_ids_size field_ids領域のデータ数 field_ids_off field_ids領域へのオフセット method_ids_size method_ids領域のデータ数 method_ids_off method_ids領域へのオフセット class_defs_size class_defs領域のデータの数 class_defs_off class_defs領域へのオフセット data_size data領域のバイト数 data_off data領域へのオフセット
11.
定数文字列プールを格納する領域 以下の情報の配列(データ数はヘッダに記述) データ名 型名 内容 string_data_off uint data領域の定数文字列データへのオフセット オフセットが指すdata領域には以下のデータが格納 データ名 型名 内容 utf16_size uleb128 MUFT-8文字列をUTF-16にデコードしたとき の文字列長 data MUTF-8 文字列データ
12.
LEB128 ◦ DWORF3でも使われているデータ形式らしいです ◦ 可変長整数データ型です Byteの最上位bitが立っている場合は次のByteはその上位7bit が格納されています。byteの最上位ビットが落ちている場合は データ終了 ◦ 値の小さな整数はデータ長が短くなります ◦ 可変長なのでdata領域のみに存在します 余談 ◦ 実際にはDEXはapk(ZIP)でパッケージされるのであんまり意 味が無い(圧縮したらサイズは同じぐらいになる)のでは
13.
UTF-16の一文字を1~3byteにエンコードした形式 ◦ Javaバイトコードでも使われています ◦ Java、Dalvikともに内部の文字コードはUTF-16です ◦ MUTF-8の方がUTF-8より都合がいいです ◦ エンコード元がUTF-16なのでサロゲートペアは出現します ◦ Linuxでのワイド文字列はUTF-32なので取り扱いは注意 ◦ 可変長なのでdata領域のみに存在します 余談 ◦ あんまり意味が無いと思うんですが(UTF-16そのままでもあ まり差が出ないはず)、がんばりすぎですよね
14.
DEXファイルで参照されている型のテーブル 以下の情報の配列(データ数はヘッダに記述) データ名 型名 内容 descriptor_idx uint 型名を表すTypeDiscriptor文字列のID (string_ids領域ののインデックス) TypeDiscriptorは以下のフォーマットの文字列 文字列 型名 V, Z, B, S, C, I, J, F, D プリミティブ型 Lfully/qualified/Name; クラス型 (この場合”fully.qualified.Name”) [TypeDescrioter 配列型 (“[I”ならintの配列)
15.
DEXファイルで参照されているメソッド型のテーブル 以下の情報の配列(データ数はヘッダに記述) データ名 型名 内容 shorty_idx uint 型名を表すShortTypeDiscriptor文字列の ID(string_ids領域のインデックス) return_type_idx uint 戻り値型のID (type_ids領域のインデックス) parameters_off uint パラメータ型のIDのリストへのオフセット。オフ セットの指す先はdata領域
16.
クラスのフィールド情報を格納する領域 以下の情報の配列(データ数はヘッダに記述) データ名 型名 内容 class_idx ushort フィールドを所有するクラス型のID (type_ids領域のインデックス) type_idx ushort フィールド型のID (type_ids領域のインデックス) name_idx uint フィールド名の文字列ID (string_ids領域のインデックス)
17.
クラスのメソッド情報を格納する領域 以下の情報の配列(データ数はヘッダに記述) データ名 型名 内容 class_idx ushort メソッドを所有するクラス型のID (type_ids領域のインデックス) proto_idx ushort メソッド型のID (proto_ids領域のインデックス) name_idx uint メソッド名の文字列ID (string_ids領域のインデックス)
18.
クラス情報を格納する領域 以下の情報の配列(データ数はヘッダに記述) データ名 型名 内容 class_idx uint クラス型のID (type_ids領域のインデックス) access_flags uint アクセス属性フラグ superclass_idx uint 親クラス型のID (type_ids領域のインデックス) interfaces_off uint 継承インターフェイス型のリストへのオフセット source_file_idx uint ソースファイル名の文字列ID annotations_off uint アノテーション情報のオフセット class_data_off uint class_dataへのオフセット static_values_off uint 静的フィールドの初期値.
19.
data領域に含まれるデータ一覧 (1/2) データ名 内容 MapList ファイルデータのレイアウト情報 StringData 文字列データ TypeList 型IDのリスト AnnotationDirectory クラスとそのフィールド、メソッドのすべてのアノテーショ ン情報の集まり AnnotationSetRef アノテーションのリストのリスト AnnotationSet アノテーションのリスト Annotation アノテーション EncodedArray クラスの初期値、アノテーションの設定値を圧縮した データ
20.
data領域に含まれるデータ一覧 (2/2) データ名 内容 ClassData クラス情報 Code メソッドのバイトコードの情報 DebugInfo デバッグ情報
21.
データ名
型名 内容 static_fields_size uleb128 静的フィールドの数 instance_fields_size uleb128 インスタンスフィールドの数 direct_methods_size uleb128 コンストラクタ、静的メソッドの数 virtual_methods_size uleb128 仮想メソッドの数 static_fields encoded_field 静的フィールドの数 の配列 instance_fields encoded_field インスタンスフィールドの情報 の配列 direct_methods encoded_method コンストラクタ、静的メソッドの の配列 情報 virtual_methods encoded_method 仮想メソッドの情報 の配列
22.
encoded_field構造体 データ名 型名 内容 field_idx_diff Uleb128 フィールドID (field_ids領域のインデックス) 差分前のフィールドの値との差分 access_flags Uleb128 アクセスフラグ encoded_method構造体 データ名 型名 内容 method_idx_diff uleb128 メソッドID (method_ids領域のインデックス) 差分前のメソッドの値との差分 access_flags uleb128 アクセスフラグ code_off uleb128 コード構造体のオフセット
23.
データ名
型名 内容 registers_size ushort メソッドで使用するレジスタ数 ins_size ushort 引数の数 outs_size ushort 出力引数の数 tries_size ushort tryスコープの数 debug_info_off uint デバッグ情報のオフセット insns_size uint バイトコードの16bitユニット数 insns ushortの配列 バイトコード命令列 padding ushort(optional) アライメントのためのパディング tries tryスコープの配列 tryスコープの情報 handlers ハンドラの配列 例外補足ハンドラのリスト
Descargar ahora