android_parser 2.5.0 → 2.5.1
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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +9 -7
- data/.github/workflows/ci.yml +2 -2
- data/CHANGELOG.md +5 -0
- data/README.md +5 -0
- data/android_parser.gemspec +2 -5
- data/lib/android/resource.rb +17 -6
- metadata +31 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8360af54a4093e8cc95844b8b7419e3190aed92f5aa6c832f0fd4f7e8ccd2f53
|
4
|
+
data.tar.gz: 1b8a9172fdf2b4f18c43cb0a342aa5244f7ad109cbfc8b8995d74d6de9fc34a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 393956811a1cfcb6bd043cdc8c6494a1760a0558d6d12ce157ee9e08b67035499f702e15cf8d6baa7971572eb616c0de28ebc92003a4e9a32c18541eb82b7f7b
|
7
|
+
data.tar.gz: a7998f5d5e71b889c083f6b1d73f4d277bd7aecd6c412a5d4b14dc10bccf1104472dffde03c2a2280071f88c846906f15c80991d73689f2dd957a46270ac3fbf
|
data/.github/dependabot.yml
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
version: 2
|
2
2
|
updates:
|
3
|
-
- package-ecosystem: bundler
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
- package-ecosystem: "bundler"
|
4
|
+
directory: "/"
|
5
|
+
schedule:
|
6
|
+
interval: "daily"
|
7
|
+
|
8
|
+
- package-ecosystem: "github-actions"
|
9
|
+
directory: "/"
|
10
|
+
schedule:
|
11
|
+
interval: "daily"
|
data/.github/workflows/ci.yml
CHANGED
@@ -10,12 +10,12 @@ jobs:
|
|
10
10
|
strategy:
|
11
11
|
fail-fast: false
|
12
12
|
matrix:
|
13
|
-
ruby: [ ruby-2.5, ruby-2.6, ruby-2.7, ruby-3.0 ]
|
13
|
+
ruby: [ ruby-2.5, ruby-2.6, ruby-2.7, ruby-3.0, ruby-3.1, ruby-3.2 ]
|
14
14
|
os: [ ubuntu-latest, macos-latest ]
|
15
15
|
runs-on: ${{ matrix.os }}
|
16
16
|
|
17
17
|
steps:
|
18
|
-
- uses: actions/checkout@
|
18
|
+
- uses: actions/checkout@v3
|
19
19
|
|
20
20
|
- uses: ruby/setup-ruby@v1
|
21
21
|
with:
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# android_parser
|
2
2
|
|
3
|
+
[](.github/workflows/ci.yml)
|
4
|
+
[](https://github.com/icyleaf/android_parser/actions/workflows/ci.yml)
|
5
|
+
[](https://rubygems.org/gems/android_parser)
|
6
|
+
[](LICENSE.txt)
|
7
|
+
|
3
8
|
Android Apk static analysis parser library for Ruby, forked from [playtestcloud/ruby_apk](https://github.com/playtestcloud/ruby_apk).
|
4
9
|
|
5
10
|
## Requirements
|
data/android_parser.gemspec
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
3
|
lib = File.expand_path('../lib', __FILE__)
|
6
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
7
|
-
# require 'android_parser/version'
|
8
5
|
|
9
6
|
Gem::Specification.new do |spec|
|
10
7
|
spec.name = 'android_parser'
|
11
|
-
spec.version = '2.5.
|
8
|
+
spec.version = '2.5.1'
|
12
9
|
spec.authors = ['SecureBrain', 'icyleaf']
|
13
10
|
spec.email = ['info@securebrain.co.jp', 'icyleaf.cn@gmail.com']
|
14
11
|
spec.platform = Gem::Platform::RUBY
|
@@ -26,10 +23,10 @@ Gem::Specification.new do |spec|
|
|
26
23
|
spec.add_dependency 'rexml', '> 3.0'
|
27
24
|
end
|
28
25
|
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
27
|
spec.add_development_dependency 'rspec-its', '>= 1.2.0'
|
30
28
|
spec.add_development_dependency 'rspec-collection_matchers', '>= 1.1.0'
|
31
29
|
spec.add_development_dependency 'rspec-mocks', '>= 3.6.0'
|
32
30
|
spec.add_development_dependency 'bundler', '>= 1.12'
|
33
31
|
spec.add_development_dependency 'rake', '>= 10.0'
|
34
|
-
# spec.add_development_dependency 'rspec', '~> 3.0'
|
35
32
|
end
|
data/lib/android/resource.rb
CHANGED
@@ -355,12 +355,7 @@ module Android
|
|
355
355
|
@types[type_id('string')].each do |type|
|
356
356
|
str_hash = {}
|
357
357
|
type.entry_count.times do |i|
|
358
|
-
|
359
|
-
if entry.nil?
|
360
|
-
str_hash[i] = nil
|
361
|
-
else
|
362
|
-
str_hash[i] = @global_string_pool.strings[type[i].val.data]
|
363
|
-
end
|
358
|
+
str_hash[i] = lookup_string_value(type, i)
|
364
359
|
end
|
365
360
|
lang = type.config.locale_lang
|
366
361
|
contry = type.config.locale_contry
|
@@ -375,6 +370,20 @@ module Android
|
|
375
370
|
end
|
376
371
|
private :extract_res_strings
|
377
372
|
|
373
|
+
def lookup_string_value(type, index)
|
374
|
+
entry = type[index]
|
375
|
+
return nil if entry.nil?
|
376
|
+
|
377
|
+
if entry.val.data_type == ResValue::TYPE_REFERENCE
|
378
|
+
# this assumes that the value references another string resource, i.e. we're ignoring the type id of the reference
|
379
|
+
reference_id = entry.val.data & 0xffff
|
380
|
+
lookup_string_value(type, reference_id)
|
381
|
+
else
|
382
|
+
@global_string_pool.strings[entry.val.data]
|
383
|
+
end
|
384
|
+
end
|
385
|
+
private :lookup_string_value
|
386
|
+
|
378
387
|
def inspect
|
379
388
|
"<ResTablePackage offset:%#08x, size:%#x, name:\"%s\">" % [@offset, @size, @name]
|
380
389
|
end
|
@@ -523,6 +532,8 @@ module Android
|
|
523
532
|
end
|
524
533
|
|
525
534
|
class ResValue < Chunk
|
535
|
+
TYPE_REFERENCE = 0x01
|
536
|
+
|
526
537
|
attr_reader :size, :data_type, :data
|
527
538
|
def parse
|
528
539
|
@size = read_int16
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: android_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SecureBrain
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-03-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubyzip
|
@@ -31,6 +31,34 @@ dependencies:
|
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.0'
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rexml
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
41
|
+
type: :runtime
|
42
|
+
prerelease: false
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rspec
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
34
62
|
- !ruby/object:Gem::Dependency
|
35
63
|
name: rspec-its
|
36
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
180
|
- !ruby/object:Gem::Version
|
153
181
|
version: '0'
|
154
182
|
requirements: []
|
155
|
-
rubygems_version: 3.1
|
183
|
+
rubygems_version: 3.4.1
|
156
184
|
signing_key:
|
157
185
|
specification_version: 4
|
158
186
|
summary: Static analysis tool for android apk since 2021
|