about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2019-12-04 11:07:55 +0100
committerGitHub <noreply@github.com>2019-12-04 11:07:55 +0100
commita900c85a32e1504da96e9ffe7138f85e13ebee04 (patch)
treea31f551785f12f995d8c2f098b9d807dc6ca5c15
parentc37cec913ac7724f20b0da3e2ef66ae45bbb54c4 (diff)
parent2cf53c576fae38f7882f4b86909bf2e0f076d6b1 (diff)
downloadmiasm-a900c85a32e1504da96e9ffe7138f85e13ebee04.tar.gz
miasm-a900c85a32e1504da96e9ffe7138f85e13ebee04.zip
Merge pull request #1106 from WilliamBruneau/loader_examples
More loader examples
-rw-r--r--example/loader/get_exports.py18
-rw-r--r--example/loader/sc2pe.py25
2 files changed, 43 insertions, 0 deletions
diff --git a/example/loader/get_exports.py b/example/loader/get_exports.py
new file mode 100644
index 00000000..19caba42
--- /dev/null
+++ b/example/loader/get_exports.py
@@ -0,0 +1,18 @@
+from argparse import ArgumentParser
+from miasm.jitter.loader.pe import get_export_name_addr_list
+from miasm.analysis.binary import Container
+
+
+parser = ArgumentParser(description="Retrieve exported functions of a DLL")
+parser.add_argument("filename",
+                    help="DLL filename")
+args = parser.parse_args()
+
+
+fdesc = open(args.filename, 'rb')
+cont = Container.from_stream(fdesc)
+
+exported_funcs = get_export_name_addr_list(cont.executable)
+
+for name_or_ordinal, address in exported_funcs:
+    print(name_or_ordinal, hex(address))
diff --git a/example/loader/sc2pe.py b/example/loader/sc2pe.py
new file mode 100644
index 00000000..95359419
--- /dev/null
+++ b/example/loader/sc2pe.py
@@ -0,0 +1,25 @@
+import sys
+
+from argparse import ArgumentParser
+from miasm.loader import pe_init
+
+
+parser = ArgumentParser(description="Create a PE from a shellcode")
+parser.add_argument("filename",
+                    help="x86 shellcode filename")
+parser.add_argument("-p", "--pename",
+                    help="new PE filename (default is 'sc_pe.exe')",
+                    default="sc_pe.exe")
+parser.add_argument("-w", "--word-size",
+                    help="word size (default is 32 bits)",
+                    choices=[32, 64],
+                    type=int,
+                    default=32)
+args = parser.parse_args()
+
+
+data = open(args.filename, 'rb').read()
+pe = pe_init.PE(wsize=args.word_size)
+s_text = pe.SHList.add_section(name="text", addr=0x1000, data=data)
+pe.Opthdr.AddressOfEntryPoint = s_text.addr
+open(args.pename, 'wb').write(bytes(pe))