ruby_android 0.0.2 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.idea/.name +1 -0
  3. data/.idea/.rakeTasks +7 -0
  4. data/.idea/encodings.xml +5 -0
  5. data/.idea/misc.xml +5 -0
  6. data/.idea/modules.xml +9 -0
  7. data/.idea/ruby_apk.iml +51 -0
  8. data/.idea/scopes/scope_settings.xml +5 -0
  9. data/.idea/vcs.xml +7 -0
  10. data/.idea/workspace.xml +508 -0
  11. data/.travis.yml +4 -0
  12. data/CHANGELOG.md +51 -0
  13. data/Gemfile +3 -3
  14. data/Gemfile.lock +73 -0
  15. data/LICENSE.txt +2 -2
  16. data/Rakefile +42 -1
  17. data/VERSION +1 -0
  18. data/lib/android/apk.rb +207 -0
  19. data/lib/android/axml_parser.rb +173 -0
  20. data/lib/android/dex/access_flag.rb +74 -0
  21. data/lib/android/dex/dex_object.rb +475 -0
  22. data/lib/android/dex/info.rb +151 -0
  23. data/lib/android/dex/utils.rb +45 -0
  24. data/lib/android/dex.rb +92 -0
  25. data/lib/android/layout.rb +44 -0
  26. data/lib/android/manifest.rb +249 -0
  27. data/lib/android/resource.rb +529 -0
  28. data/lib/android/utils.rb +55 -0
  29. data/lib/ruby_apk.rb +7 -0
  30. data/ruby_android.gemspec +103 -17
  31. data/spec/apk_spec.rb +301 -0
  32. data/spec/axml_parser_spec.rb +67 -0
  33. data/spec/data/sample.apk +0 -0
  34. data/spec/data/sample_AndroidManifest.xml +0 -0
  35. data/spec/data/sample_classes.dex +0 -0
  36. data/spec/data/sample_resources.arsc +0 -0
  37. data/spec/data/sample_resources_utf16.arsc +0 -0
  38. data/spec/data/str_resources.arsc +0 -0
  39. data/spec/dex/access_flag_spec.rb +42 -0
  40. data/spec/dex/dex_object_spec.rb +118 -0
  41. data/spec/dex/info_spec.rb +121 -0
  42. data/spec/dex/utils_spec.rb +56 -0
  43. data/spec/dex_spec.rb +59 -0
  44. data/spec/layout_spec.rb +27 -0
  45. data/spec/manifest_spec.rb +221 -0
  46. data/spec/resource_spec.rb +170 -0
  47. data/spec/ruby_apk_spec.rb +4 -0
  48. data/spec/spec_helper.rb +17 -0
  49. data/spec/utils_spec.rb +90 -0
  50. metadata +112 -27
  51. data/.gitignore +0 -14
  52. data/lib/ruby_android/version.rb +0 -3
  53. data/lib/ruby_android.rb +0 -7
@@ -0,0 +1,90 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Android::Utils do
4
+ let(:sample_apk_path) { File.expand_path(File.dirname(__FILE__) + '/data/sample.apk') }
5
+ let(:sample_dex_path) { File.expand_path(File.dirname(__FILE__) + '/data/sample_classes.dex') }
6
+ describe '.apk?' do
7
+ subject { Android::Utils.apk?(apk_path) }
8
+
9
+ context 'assigns apk file path' do
10
+ let(:apk_path) { sample_apk_path }
11
+ it { should be_true }
12
+ end
13
+ context 'assigns nil' do
14
+ let(:apk_path) { nil }
15
+ it { should be_false }
16
+ end
17
+ context 'assigns not exist path' do
18
+ let(:apk_path) { 'hogehoge' }
19
+ it { should be_false }
20
+ end
21
+ context 'assigns not apk file path' do
22
+ let(:apk_path) { __FILE__ }
23
+ it { should be_false }
24
+ end
25
+ end
26
+
27
+ describe '.elf?' do
28
+ subject { Android::Utils.elf?(data) }
29
+ context 'assigns data start with elf magic' do
30
+ let(:data) { "\x7fELF\xff\xff\xff" }
31
+ it { should be_true }
32
+ end
33
+ context 'assigns nil' do
34
+ let(:data) { nil }
35
+ it { should be_false }
36
+ end
37
+ context 'assigns not elf data' do
38
+ let(:data) { "\xff\xff\xff\xff\xff\xff" }
39
+ it { should be_false }
40
+ end
41
+ end
42
+
43
+ describe '.cert?' do
44
+ subject { Android::Utils.cert?(data) }
45
+ context 'assigns data start with x509 magic' do
46
+ let(:data) { "\x30\x82\xff\xff\xff" }
47
+ it { should be_true }
48
+ end
49
+ context 'assigns nil' do
50
+ let(:data) { nil }
51
+ it { should be_false }
52
+ end
53
+ context 'assigns not valid data' do
54
+ let(:data) { "\xff\xff\xff\xff\xff\xff" }
55
+ it { should be_false }
56
+ end
57
+ end
58
+
59
+ describe '.dex?' do
60
+ subject { Android::Utils.dex?(data) }
61
+ context 'assigns dex file data' do
62
+ let(:data) { File.read(sample_dex_path) }
63
+ it { should be_true }
64
+ end
65
+ context 'assigns nil' do
66
+ let(:data) { nil }
67
+ it { should be_false }
68
+ end
69
+ context 'assings not dex data' do
70
+ let(:data) { 'hogehoge' }
71
+ it { should be_false }
72
+ end
73
+ end
74
+ describe '.valid_dex?' do
75
+ subject { Android::Utils.valid_dex?(data) }
76
+ context 'assigns dex file data' do
77
+ let(:data) { File.read(sample_dex_path) }
78
+ it { should be_true }
79
+ end
80
+ context 'assigns nil' do
81
+ let(:data) { nil }
82
+ it { should be_false }
83
+ end
84
+ context 'assings not dex data' do
85
+ let(:data) { 'hogehoge' }
86
+ it { should be_false }
87
+ end
88
+ end
89
+ end
90
+
metadata CHANGED
@@ -1,87 +1,172 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_android
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Tajchert
8
+ - SecureBrain
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-09-08 00:00:00.000000000 Z
12
+ date: 2014-08-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: bundler
15
+ name: rubyzip
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 1.1.6
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: 1.1.6
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
15
30
  requirement: !ruby/object:Gem::Requirement
16
31
  requirements:
17
32
  - - ~>
18
33
  - !ruby/object:Gem::Version
19
- version: '1.7'
34
+ version: 2.11.0
20
35
  type: :development
21
36
  prerelease: false
22
37
  version_requirements: !ruby/object:Gem::Requirement
23
38
  requirements:
24
39
  - - ~>
25
40
  - !ruby/object:Gem::Version
26
- version: '1.7'
41
+ version: 2.11.0
27
42
  - !ruby/object:Gem::Dependency
28
- name: rake
43
+ name: bundler
29
44
  requirement: !ruby/object:Gem::Requirement
30
45
  requirements:
31
- - - ~>
46
+ - - '>='
32
47
  - !ruby/object:Gem::Version
33
- version: '10.0'
48
+ version: 1.3.0
34
49
  type: :development
35
50
  prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
38
- - - ~>
53
+ - - '>='
39
54
  - !ruby/object:Gem::Version
40
- version: '10.0'
55
+ version: 1.3.0
41
56
  - !ruby/object:Gem::Dependency
42
- name: rubyzip
57
+ name: jeweler
43
58
  requirement: !ruby/object:Gem::Requirement
44
59
  requirements:
45
60
  - - ~>
46
61
  - !ruby/object:Gem::Version
47
- version: '1.1'
48
- type: :runtime
62
+ version: 1.8.7
63
+ type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
67
  - - ~>
53
68
  - !ruby/object:Gem::Version
54
- version: '1.1'
69
+ version: 1.8.7
55
70
  - !ruby/object:Gem::Dependency
56
- name: rspec
71
+ name: yard
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
- - - ~>
74
+ - - '>='
60
75
  - !ruby/object:Gem::Version
61
- version: '2.11'
76
+ version: '0'
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
- - - ~>
81
+ - - '>='
67
82
  - !ruby/object:Gem::Version
68
- version: '2.11'
69
- description: copy of update ruby_apk
70
- email:
71
- - thetajchert@gmail.com
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: redcarpet
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: simplecov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ description: static analysis tool for android apk
113
+ email: thetajchert@gmail.com
72
114
  executables: []
73
115
  extensions: []
74
- extra_rdoc_files: []
116
+ extra_rdoc_files:
117
+ - LICENSE.txt
118
+ - README.md
75
119
  files:
76
- - .gitignore
120
+ - .idea/.name
121
+ - .idea/.rakeTasks
122
+ - .idea/encodings.xml
123
+ - .idea/misc.xml
124
+ - .idea/modules.xml
125
+ - .idea/ruby_apk.iml
126
+ - .idea/scopes/scope_settings.xml
127
+ - .idea/vcs.xml
128
+ - .idea/workspace.xml
129
+ - .travis.yml
130
+ - CHANGELOG.md
77
131
  - Gemfile
132
+ - Gemfile.lock
78
133
  - LICENSE.txt
79
134
  - README.md
80
135
  - Rakefile
81
- - lib/ruby_android.rb
82
- - lib/ruby_android/version.rb
136
+ - VERSION
137
+ - lib/android/apk.rb
138
+ - lib/android/axml_parser.rb
139
+ - lib/android/dex.rb
140
+ - lib/android/dex/access_flag.rb
141
+ - lib/android/dex/dex_object.rb
142
+ - lib/android/dex/info.rb
143
+ - lib/android/dex/utils.rb
144
+ - lib/android/layout.rb
145
+ - lib/android/manifest.rb
146
+ - lib/android/resource.rb
147
+ - lib/android/utils.rb
148
+ - lib/ruby_apk.rb
83
149
  - ruby_android.gemspec
84
- homepage: https://github.com/tajchert/ruby_android
150
+ - spec/apk_spec.rb
151
+ - spec/axml_parser_spec.rb
152
+ - spec/data/sample.apk
153
+ - spec/data/sample_AndroidManifest.xml
154
+ - spec/data/sample_classes.dex
155
+ - spec/data/sample_resources.arsc
156
+ - spec/data/sample_resources_utf16.arsc
157
+ - spec/data/str_resources.arsc
158
+ - spec/dex/access_flag_spec.rb
159
+ - spec/dex/dex_object_spec.rb
160
+ - spec/dex/info_spec.rb
161
+ - spec/dex/utils_spec.rb
162
+ - spec/dex_spec.rb
163
+ - spec/layout_spec.rb
164
+ - spec/manifest_spec.rb
165
+ - spec/resource_spec.rb
166
+ - spec/ruby_apk_spec.rb
167
+ - spec/spec_helper.rb
168
+ - spec/utils_spec.rb
169
+ homepage: https://github.com/tajchert/ruby_apk
85
170
  licenses:
86
171
  - MIT
87
172
  metadata: {}
data/.gitignore DELETED
@@ -1,14 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
@@ -1,3 +0,0 @@
1
- module RubyAndroid
2
- VERSION = "0.0.1"
3
- end
data/lib/ruby_android.rb DELETED
@@ -1,7 +0,0 @@
1
- require_relative 'ruby_android/apk'
2
- require_relative 'ruby_android/manifest'
3
- require_relative 'ruby_android/axml_parser'
4
- require_relative 'ruby_android/dex'
5
- require_relative 'ruby_android/resource'
6
- require_relative 'ruby_android/utils'
7
- require_relative 'ruby_android/layout'