ruby_android 0.0.2 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
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'