about summary refs log tree commit diff stats
path: root/example/samples/x86_32_enc.S
diff options
context:
space:
mode:
Diffstat (limited to 'example/samples/x86_32_enc.S')
-rw-r--r--example/samples/x86_32_enc.S38
1 files changed, 38 insertions, 0 deletions
diff --git a/example/samples/x86_32_enc.S b/example/samples/x86_32_enc.S
new file mode 100644
index 00000000..92379838
--- /dev/null
+++ b/example/samples/x86_32_enc.S
@@ -0,0 +1,38 @@
+main:
+    CALL cipher_code
+    CALL msgbox_encrypted_start
+    CALL cipher_code
+    RET
+
+cipher_code:
+    PUSH EBP
+    MOV  EBP, ESP
+
+    LEA  ESI, DWORD PTR [msgbox_encrypted_start]
+    LEA  EDI, DWORD PTR [msgbox_encrypted_stop]
+
+loop:
+    XOR  BYTE PTR [ESI], 0x42
+    INC  ESI
+    CMP  ESI, EDI
+    JBE  loop
+
+    MOV  ESP, EBP
+    POP  EBP
+    RET
+
+msgbox_encrypted_start:
+    PUSH 0
+    PUSH title
+    PUSH msg
+    PUSH 0
+    CALL DWORD PTR [ MessageBoxA ]
+    RET
+.dontsplit
+msgbox_encrypted_stop:
+.long 0
+
+title:
+.string "Hello!"
+msg:
+.string "World!"