about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--example/samples/x86_32_pop_esp.S18
-rw-r--r--test/test_all.py2
2 files changed, 19 insertions, 1 deletions
diff --git a/example/samples/x86_32_pop_esp.S b/example/samples/x86_32_pop_esp.S
new file mode 100644
index 00000000..4115a522
--- /dev/null
+++ b/example/samples/x86_32_pop_esp.S
@@ -0,0 +1,18 @@
+main:
+    MOV EAX, ESP
+    CALL test
+    MOV ESP, EAX
+    PUSH 0
+    PUSH title
+    PUSH msg
+    PUSH 0
+    CALL DWORD PTR [ MessageBoxA ]
+    RET
+
+test:
+    POP ESP
+    JMP ESP
+title:
+.string "Hello!"
+msg:
+.string "World!"
diff --git a/test/test_all.py b/test/test_all.py
index 5de12bf4..66620375 100644
--- a/test/test_all.py
+++ b/test/test_all.py
@@ -120,7 +120,7 @@ class ExampleShellcode(ExampleAssembler):
 testset += ExampleShellcode(['x86_32', 'x86_32_manip_ptr.S', "demo_x86_32.bin"])
 
 test_box = {}
-test_box_names = ["mod", "mod_self", "repmod", "simple", "enc"]
+test_box_names = ["mod", "mod_self", "repmod", "simple", "enc", "pop_esp"]
 for source in test_box_names:
     sample_base = "x86_32_" + source
     args = ["x86_32", sample_base + ".S", sample_base + ".bin", "--PE"]