From c62f991018ac94fc94a08fbfc8e38b73d807d027 Mon Sep 17 00:00:00 2001 From: Bojan Date: Fri, 1 Jan 2021 15:36:15 -0400 Subject: [PATCH 1/3] feat: add dex and dey support --- README.md | 2 ++ src/map.rs | 12 ++++++++++++ src/matchers/app.rs | 21 +++++++++++++++++++++ testdata/sample.dex | Bin 0 -> 151596 bytes testdata/sample.dey | Bin 0 -> 46800 bytes tests/app.rs | 4 ++++ 6 files changed, 39 insertions(+) create mode 100644 testdata/sample.dex create mode 100644 testdata/sample.dey diff --git a/README.md b/README.md index 6db9c76..4538817 100644 --- a/README.md +++ b/README.md @@ -195,6 +195,8 @@ assert_eq!(kind.extension(), "foo"); - **bc** - `application/llvm` - **mach** - `application/x-mach-binary` - **class** - `application/java` +- **dex** - `application/vnd.android.dex` +- **dey** - `application/vnd.android.dey` ## Known Issues diff --git a/src/map.rs b/src/map.rs index 908bca3..5aa4f73 100644 --- a/src/map.rs +++ b/src/map.rs @@ -68,6 +68,18 @@ matcher_map!( "mach", matchers::app::is_mach ), + ( + MatcherType::APP, + "application/vnd.android.dex", + "dex", + matchers::app::is_dex + ), + ( + MatcherType::APP, + "application/vnd.android.dey", + "dey", + matchers::app::is_dey + ), // Image ( MatcherType::IMAGE, diff --git a/src/matchers/app.rs b/src/matchers/app.rs index f59115a..03a173d 100644 --- a/src/matchers/app.rs +++ b/src/matchers/app.rs @@ -69,3 +69,24 @@ pub fn is_mach(buf: &[u8]) -> bool { _ => false, } } + +/// Returns whether a buffer is a Dalvik Executable(DEX). +pub fn is_dex(buf: &[u8]) -> bool { + // https://source.android.com/devices/tech/dalvik/dex-format#dex-file-magic + + buf.len() > 36 && + // magic + buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x78 && buf[3] == 0x0A + // file sise + && buf[36] == 0x70 +} + + +/// Returns whether a buffer is a Dey Optimized Dalvik Executable(ODEX) +pub fn is_dey(buf: &[u8]) -> bool { + buf.len() > 100 && + // magic + buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x79 && buf[3] == 0x0A + // file sise + && is_dex(&buf[40..100]) +} \ No newline at end of file diff --git a/testdata/sample.dex b/testdata/sample.dex new file mode 100644 index 0000000000000000000000000000000000000000..0ac7a7c2f3cb3f74e0b7ccf2f2c437485fadf821 GIT binary patch literal 151596 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 E4SnWV#{d8T literal 0 HcmV?d00001 diff --git a/testdata/sample.dey b/testdata/sample.dey new file mode 100644 index 0000000000000000000000000000000000000000..2263e37eb2ac2d883af235aba45b9ab948ab150b GIT binary patch literal 46800 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 literal 0 HcmV?d00001 diff --git a/tests/app.rs b/tests/app.rs index 7ff477e..db00fd8 100644 --- a/tests/app.rs +++ b/tests/app.rs @@ -43,3 +43,7 @@ test_format!( ); test_format!(APP, "application/wasm", "wasm", wasm, "sample.wasm"); + +test_format!(APP, "application/vnd.android.dex", "dex", dex, "sample.dex"); + +test_format!(APP, "application/vnd.android.dey", "dey", dey, "sample.dey"); From 435a877bcdf1591bf6faaa0570ac005ca144827b Mon Sep 17 00:00:00 2001 From: Bojan Date: Fri, 1 Jan 2021 15:41:54 -0400 Subject: [PATCH 2/3] fix: formatting --- src/matchers/app.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/matchers/app.rs b/src/matchers/app.rs index 03a173d..de0357c 100644 --- a/src/matchers/app.rs +++ b/src/matchers/app.rs @@ -74,9 +74,9 @@ pub fn is_mach(buf: &[u8]) -> bool { pub fn is_dex(buf: &[u8]) -> bool { // https://source.android.com/devices/tech/dalvik/dex-format#dex-file-magic - buf.len() > 36 && + buf.len() > 36 // magic - buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x78 && buf[3] == 0x0A + && buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x78 && buf[3] == 0x0A // file sise && buf[36] == 0x70 } @@ -84,9 +84,9 @@ pub fn is_dex(buf: &[u8]) -> bool { /// Returns whether a buffer is a Dey Optimized Dalvik Executable(ODEX) pub fn is_dey(buf: &[u8]) -> bool { - buf.len() > 100 && + buf.len() > 100 // magic - buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x79 && buf[3] == 0x0A + && buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x79 && buf[3] == 0x0A // file sise && is_dex(&buf[40..100]) } \ No newline at end of file From da1642732dc1aced459058716df2f59109839b6f Mon Sep 17 00:00:00 2001 From: Bojan Date: Fri, 1 Jan 2021 15:43:45 -0400 Subject: [PATCH 3/3] fix: formatting --- src/matchers/app.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/matchers/app.rs b/src/matchers/app.rs index de0357c..ce33be9 100644 --- a/src/matchers/app.rs +++ b/src/matchers/app.rs @@ -70,23 +70,22 @@ pub fn is_mach(buf: &[u8]) -> bool { } } -/// Returns whether a buffer is a Dalvik Executable(DEX). +/// Returns whether a buffer is a Dalvik Executable (DEX). pub fn is_dex(buf: &[u8]) -> bool { // https://source.android.com/devices/tech/dalvik/dex-format#dex-file-magic buf.len() > 36 // magic && buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x78 && buf[3] == 0x0A - // file sise + // file sise && buf[36] == 0x70 } - -/// Returns whether a buffer is a Dey Optimized Dalvik Executable(ODEX) +/// Returns whether a buffer is a Dey Optimized Dalvik Executable (ODEX). pub fn is_dey(buf: &[u8]) -> bool { buf.len() > 100 // magic && buf[0] == 0x64 && buf[1] == 0x65 && buf[2] == 0x79 && buf[3] == 0x0A - // file sise + // file sise && is_dex(&buf[40..100]) -} \ No newline at end of file +}