Skip to content

Commit 34d83f3

Browse files
committed
Add specs for Rex AlphaMixed mods
1 parent 3fb0a5f commit 34d83f3

File tree

1 file changed

+197
-1
lines changed

1 file changed

+197
-1
lines changed

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

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

55229

@@ -83,6 +257,28 @@
83257
expect { decoder }.to raise_error
84258
end
85259
end
86-
end
87260

261+
context "when modified_registers passed" do
262+
let(:modified_registers) { [] }
263+
it "marks EDX as modified" do
264+
described_class.gen_decoder(reg, offset, modified_registers)
265+
expect(modified_registers).to include(Rex::Arch::X86::EDX)
266+
end
267+
268+
it "marks ECX as modified" do
269+
described_class.gen_decoder(reg, offset, modified_registers)
270+
expect(modified_registers).to include(Rex::Arch::X86::ECX)
271+
end
272+
273+
it "marks EAX as modified" do
274+
described_class.gen_decoder(reg, offset, modified_registers)
275+
expect(modified_registers).to include(Rex::Arch::X86::EAX)
276+
end
277+
278+
it "marks ESP as modified" do
279+
described_class.gen_decoder(reg, offset, modified_registers)
280+
expect(modified_registers).to include(Rex::Arch::X86::ESP)
281+
end
282+
end
283+
end
88284
end

0 commit comments

Comments
 (0)