Skip to content

Commit 3fb0a5f

Browse files
committed
Add specs for Rex AlphaUpper mods
1 parent f8623eb commit 3fb0a5f

File tree

1 file changed

+202
-0
lines changed

1 file changed

+202
-0
lines changed

spec/lib/rex/encoder/alpha2/alpha_upper_spec.rb

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,180 @@
5656
expect { decoder_prefix }.to raise_error
5757
end
5858
end
59+
60+
context "when modified_registers is passed" do
61+
context "when reg is ECX" do
62+
context "when offset is 10" do
63+
let(:reg) { 'ECX' }
64+
let(:offset) { 10 }
65+
let(:modified_registers) { [] }
66+
67+
it "marks ECX as modified" do
68+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
69+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
70+
end
71+
72+
it "marks EBX as modified" do
73+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
74+
expect(modified_registers).to include(Rex::Arch::X86::EBX)
75+
end
76+
77+
it "marks EDX as modified" do
78+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
79+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
80+
end
81+
end
82+
83+
context "when offset is 5" do
84+
let(:reg) { 'ECX' }
85+
let(:offset) { 5 }
86+
let(:modified_registers) { [] }
87+
88+
it "marks ECX as modified" do
89+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
90+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
91+
end
92+
93+
it "marks EBX as modified" do
94+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
95+
expect(modified_registers).to include(Rex::Arch::X86::EBX)
96+
end
97+
98+
it "marks EDX as modified" do
99+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
100+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
101+
end
102+
end
103+
104+
context "when offset is 0" do
105+
let(:reg) { 'ECX' }
106+
let(:offset) { 0 }
107+
let(:modified_registers) { [] }
108+
109+
it "marks ECX as modified" do
110+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
111+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
112+
end
113+
114+
it "doesn't mark EBX as modified" do
115+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
116+
expect(modified_registers).to_not include(Rex::Arch::X86::EBX)
117+
end
118+
119+
it "marks EDX as modified" do
120+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
121+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
122+
end
123+
end
124+
125+
context "when offset is 15" do
126+
let(:reg) { 'ECX' }
127+
let(:offset) { 15 }
128+
let(:modified_registers) { [] }
129+
130+
it "marks ECX as modified" do
131+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
132+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
133+
end
134+
135+
it "marks EBX as modified" do
136+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
137+
expect(modified_registers).to include(Rex::Arch::X86::EBX)
138+
end
139+
140+
it "marks EDX as modified" do
141+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
142+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
143+
end
144+
end
145+
end
146+
147+
context "when reg is EDX" do
148+
context "when offset is 10" do
149+
let(:reg) { 'EDX' }
150+
let(:offset) { 10 }
151+
let(:modified_registers) { [] }
152+
153+
it "marks ECX as modified" do
154+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
155+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
156+
end
157+
158+
it "marks EBX as modified" do
159+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
160+
expect(modified_registers).to include(Rex::Arch::X86::EBX)
161+
end
162+
163+
it "marks EDX as modified" do
164+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
165+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
166+
end
167+
end
168+
169+
context "when offset is 5" do
170+
let(:reg) { 'EDX' }
171+
let(:offset) { 5 }
172+
let(:modified_registers) { [] }
173+
174+
it "marks ECX as modified" do
175+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
176+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
177+
end
178+
179+
it "marks EBX as modified" do
180+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
181+
expect(modified_registers).to include(Rex::Arch::X86::EBX)
182+
end
183+
184+
it "marks EDX as modified" do
185+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
186+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
187+
end
188+
end
189+
190+
context "when offset is 0" do
191+
let(:reg) { 'EDX' }
192+
let(:offset) { 0 }
193+
let(:modified_registers) { [] }
194+
195+
it "marks ECX as modified" do
196+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
197+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
198+
end
199+
200+
it "doesn't mark EBX as modified" do
201+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
202+
expect(modified_registers).to_not include(Rex::Arch::X86::EBX)
203+
end
204+
205+
it "marks EDX as modified" do
206+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
207+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
208+
end
209+
end
210+
211+
context "when offset is 15" do
212+
let(:reg) { 'EDX' }
213+
let(:offset) { 15 }
214+
let(:modified_registers) { [] }
215+
216+
it "marks ECX as modified" do
217+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
218+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
219+
end
220+
221+
it "marks EBX as modified" do
222+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
223+
expect(modified_registers).to include(Rex::Arch::X86::EBX)
224+
end
225+
226+
it "marks EDX as modified" do
227+
described_class.gen_decoder_prefix(reg, offset, modified_registers)
228+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
229+
end
230+
end
231+
end
232+
end
59233
end
60234

61235

@@ -89,6 +263,34 @@
89263
expect { decoder }.to raise_error
90264
end
91265
end
266+
267+
context "when modified_registers passed" do
268+
let(:modified_registers) { [] }
269+
it "marks EDX as modified" do
270+
described_class.gen_decoder(reg, offset, modified_registers)
271+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
272+
end
273+
274+
it "marks ECX as modified" do
275+
described_class.gen_decoder(reg, offset, modified_registers)
276+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
277+
end
278+
279+
it "marks ESI as modified" do
280+
described_class.gen_decoder(reg, offset, modified_registers)
281+
expect(modified_registers).to include(Rex::Arch::X86::ESI)
282+
end
283+
284+
it "marks EAX as modified" do
285+
described_class.gen_decoder(reg, offset, modified_registers)
286+
expect(modified_registers).to include(Rex::Arch::X86::EAX)
287+
end
288+
289+
it "marks ESP as modified" do
290+
described_class.gen_decoder(reg, offset, modified_registers)
291+
expect(modified_registers).to include(Rex::Arch::X86::ESP)
292+
end
293+
end
92294
end
93295

94296
end

0 commit comments

Comments
 (0)