resedit 1.4 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c6ddbe66a77c0195afafaaff1c2756e915f38614
4
- data.tar.gz: c97154c36b5753121497f2d01ef6ce38fc0d1fc0
3
+ metadata.gz: c544c164c27a245f45cebe0ede011c1a8ebd19d2
4
+ data.tar.gz: a212b23cc05f16ec779469aecc74601b046ae468
5
5
  SHA512:
6
- metadata.gz: e9d0e7a836d85b455f4b2172b4d891f9f938f55c38b275f8e7aaa0c88e36b362e9bb4601927fed859a48c1a2767f414092f1adc38672f115e84e1633cdf10127
7
- data.tar.gz: 60b8f1b47633ea8520649b2be11592ec057e53f682caa1e98cb3ca5a9ab2429d7e20111d8a6a2f687a39e0ad994877ce1a58cf0cfabbea643f39ebb4accf2874
6
+ metadata.gz: 85deaaad0d6928ceafda0bb8a6642b8af902f061870c1e8a0fc2ba33bf3e3c25c97c83ac38c2858534214f058f713b3e955bba3fa995eacf77abb4b9ea47ea42
7
+ data.tar.gz: a8c03dcca383eb79c3215009e4c3563e73cce82e05bd590946926b70ef3a56d57433e57ca51dbb4ea2fbf07596cad6106ccf6fadc66ed6fbd9cd2510db6815de
@@ -13,5 +13,5 @@ require 'resedit/mz/mz'
13
13
 
14
14
 
15
15
  module Resedit
16
- VERSION = "1.4"
16
+ VERSION = "1.5.1"
17
17
  end
@@ -25,6 +25,7 @@ module Resedit
25
25
  "append"=>[method(:append), "add bytes to current file", {"value" => "value", "type" => "value type", }],
26
26
  "replace"=>[method(:replace), "replace added bytes", {"value" => "value", "type"=>"value type"}],
27
27
  "change"=>[method(:change), "change bytes at offset", {"ofs" => "data ofset", "value" => "value", "disp" => "code/file", "type"=>"value type"}],
28
+ "reloc"=>[method(:reloc), "add relocation", {"value" => "value"}],
28
29
  "revert"=>[method(:revert), "revert changes", {"ofs"=>"change offset/all"}],
29
30
  "hex"=>[method(:hex), "print hex file", {"ofs" => "data offset", "size" => "data size", "how"=>"original/modified", "disp" => "code/file"}],
30
31
  "dasm"=>[method(:dasm), "print disasm", {"ofs" => "data offset", "size" => "data size", "how"=>"original/modified"}],
@@ -142,6 +143,9 @@ module Resedit
142
143
  cur().change(params['ofs'], params['value'], params['disp'], params['type'])
143
144
  end
144
145
 
146
+ def reloc(params)
147
+ cur().reloc(params['value'])
148
+ end
145
149
 
146
150
  def revert(params)
147
151
  cur().revert(params['ofs'])
@@ -28,7 +28,7 @@ module Resedit
28
28
  addParam('command', 'help on specific command', '')
29
29
  end
30
30
  def job(params)
31
- if params['command']
31
+ if params['command'] != ''
32
32
  cmd = App.get().cmds[params['command']]
33
33
  raise "Unknown command: #{params['command']}" if !cmd
34
34
  puts "Command:"
@@ -101,6 +101,7 @@ module Resedit
101
101
  end
102
102
  }
103
103
  log("Appended at %s",s)
104
+ return res
104
105
  end
105
106
 
106
107
 
@@ -122,6 +123,12 @@ module Resedit
122
123
  log("Change added at %08X", res)
123
124
  end
124
125
 
126
+ def reloc(ofs)
127
+ ofs = s2i(ofs)
128
+ res = @header.addReloc(ofs)
129
+ log((res ? "Relocation added %08X" : "Relocation %08X already exists"), ofs)
130
+ end
131
+
125
132
 
126
133
  def dasm(ofs, size=nil, how=nil)
127
134
  ofs = s2i(ofs ? ofs : "entry")
@@ -49,14 +49,25 @@ module Resedit
49
49
  end
50
50
 
51
51
 
52
- def setCodeSize(size)
52
+ def changeSize(size)
53
53
  mode(HOW_CHANGED)
54
- size += headerSize()
55
54
  mod = size % BLK
56
55
  ch = [mod, size / BLK + (mod ? 1 : 0)]
57
56
  change(2, ch.pack('vv'))
58
57
  end
59
58
 
59
+ def setCodeSize(size)
60
+ changeSize(size + headerSize())
61
+ end
62
+
63
+ def addHeaderSize(size)
64
+ mode(HOW_CHANGED)
65
+ paras = size/16 + (size%16 == 0 ? 0 : 1)
66
+ append("00" * (paras * PARA))
67
+ changeSize(fileSize() + paras * PARA)
68
+ change(8, [@info[:HeaderParagraphs] + paras].pack('v'))
69
+ end
70
+
60
71
 
61
72
  def headerSize()
62
73
  return @info[:HeaderParagraphs] * PARA
@@ -83,6 +94,28 @@ module Resedit
83
94
  return headerSize() - HSIZE - @info[:NumberOfRelocations] * 4
84
95
  end
85
96
 
97
+ def addReloc(ofs)
98
+ mode(HOW_CHANGED)
99
+ #check relocation exists
100
+ for i in 0..@info[:NumberOfRelocations]-1
101
+ rel = getRelocation(i)
102
+ if @mz.body.seg2Linear(rel[0], rel[1]) == ofs
103
+ return false
104
+ end
105
+ end
106
+ #add relocation
107
+ if freeSpace()<4
108
+ addHeaderSize(4)
109
+ mode(HOW_CHANGED)
110
+ end
111
+ val = @mz.body.linear2seg(ofs)
112
+ puts "VAL"+ val.to_s()
113
+ pos = @info[:RelocTableOffset]+@info[:NumberOfRelocations]*4
114
+ change(pos, val.pack('vv'))
115
+ change(6, [@info[:NumberOfRelocations]+1].pack('v'))
116
+ return true
117
+ end
118
+
86
119
 
87
120
  def print(what, how)
88
121
  mode(parseHow(how))
@@ -103,6 +136,7 @@ module Resedit
103
136
  printf("free space in header: before relocs 0x%X, after relocs 0x%X\n", freeSpace(true), freeSpace())
104
137
  return true
105
138
  end
139
+ @mz.body.mode(@mode)
106
140
  if what == "reloc"
107
141
  ofs = @info[:RelocTableOffset]
108
142
  for i in 0..@info[:NumberOfRelocations]-1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resedit
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.4'
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - bjfn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-21 00:00:00.000000000 Z
11
+ date: 2017-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chunky_png
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.3.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: builder
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.2.3
27
41
  description:
28
42
  email:
29
43
  executables:
@@ -31,6 +45,8 @@ executables:
31
45
  extensions: []
32
46
  extra_rdoc_files: []
33
47
  files:
48
+ - bin/resedit
49
+ - lib/resedit.rb
34
50
  - lib/resedit/app/app.rb
35
51
  - lib/resedit/app/app_command.rb
36
52
  - lib/resedit/app/colorizer.rb
@@ -58,8 +74,6 @@ files:
58
74
  - lib/resedit/text/format_xml.rb
59
75
  - lib/resedit/text/huffman.rb
60
76
  - lib/resedit/text/text.rb
61
- - lib/resedit.rb
62
- - bin/resedit
63
77
  homepage:
64
78
  licenses: []
65
79
  metadata: {}
@@ -69,17 +83,17 @@ require_paths:
69
83
  - lib
70
84
  required_ruby_version: !ruby/object:Gem::Requirement
71
85
  requirements:
72
- - - '>='
86
+ - - ">="
73
87
  - !ruby/object:Gem::Version
74
88
  version: '0'
75
89
  required_rubygems_version: !ruby/object:Gem::Requirement
76
90
  requirements:
77
- - - '>='
91
+ - - ">="
78
92
  - !ruby/object:Gem::Version
79
93
  version: '0'
80
94
  requirements: []
81
95
  rubyforge_project:
82
- rubygems_version: 2.0.14.1
96
+ rubygems_version: 2.6.11
83
97
  signing_key:
84
98
  specification_version: 4
85
99
  summary: OG resource proc library!