From faeeaf1f3d674d4c83bd00f84e740264b11625d1 Mon Sep 17 00:00:00 2001 From: xwings Date: Tue, 18 Oct 2022 22:36:38 +0800 Subject: [PATCH 1/5] recompile armeb picohttpd with new test script --- examples/rootfs | 2 +- examples/src/linux/picohttpd/Makefile | 1 - examples/src/linux/picohttpd/picohttpd | Bin 0 -> 75316 bytes examples/src/linux/picohttpd/readme.txt | 2 ++ tests/test_elf_multithread.py | 23 +++++++++++++---------- 5 files changed, 16 insertions(+), 12 deletions(-) create mode 100755 examples/src/linux/picohttpd/picohttpd diff --git a/examples/rootfs b/examples/rootfs index 6ec2907b7..422b460e9 160000 --- a/examples/rootfs +++ b/examples/rootfs @@ -1 +1 @@ -Subproject commit 6ec2907b7cd345e0123379a4b409e1d48876e37a +Subproject commit 422b460e95f118bc6769834314040ef5a98b311e diff --git a/examples/src/linux/picohttpd/Makefile b/examples/src/linux/picohttpd/Makefile index 8cd91a626..e6b0864d2 100644 --- a/examples/src/linux/picohttpd/Makefile +++ b/examples/src/linux/picohttpd/Makefile @@ -4,7 +4,6 @@ clean: @rm -rf *.o @rm -rf x64_server @rm -rf arm_server - @rm -rf armeb_server x64_server: main.o httpd.o gcc -o x64_server $^ diff --git a/examples/src/linux/picohttpd/picohttpd b/examples/src/linux/picohttpd/picohttpd new file mode 100755 index 0000000000000000000000000000000000000000..90963e8358c1f49456b00f7be895bb8b27e5d120 GIT binary patch literal 75316 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 V4?-5Cpe^24LUyYVhpdfH{0FOOSUms$ literal 0 HcmV?d00001 diff --git a/examples/src/linux/picohttpd/readme.txt b/examples/src/linux/picohttpd/readme.txt index 32ad9edb1..3ebba350a 100644 --- a/examples/src/linux/picohttpd/readme.txt +++ b/examples/src/linux/picohttpd/readme.txt @@ -1 +1,3 @@ copy from: https://gist.github.com/laobubu/d6d0e9beb934b60b2e552c2d03e1409e + +compile armeb with https://crosstool-ng.github.io/docs/internals/ , with linux kernel diff --git a/tests/test_elf_multithread.py b/tests/test_elf_multithread.py index 6188b8111..5d16f5a7a 100644 --- a/tests/test_elf_multithread.py +++ b/tests/test_elf_multithread.py @@ -3,7 +3,7 @@ # Cross Platform and Multi Architecture Advanced Binary Emulation Framework # -import http.client, platform, sys, os, threading, time, unittest +import http.client, platform, socket, sys, os, threading, time, unittest sys.path.append("..") from qiling import Qiling @@ -176,7 +176,7 @@ def check_write(ql, write_fd, write_buf, write_count, *args, **kw): except: pass buf_out = None - ql = Qiling(["../examples/rootfs/armeb_linux/bin/armeb_multithreading"], "../examples/rootfs/armeb_linux", multithread=True, verbose=QL_VERBOSE.DEBUG) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_multithreading"], "../examples/rootfs/armeb_linux_oldlibc", multithread=True, verbose=QL_VERBOSE.DEBUG) ql.os.set_syscall("write", check_write, QL_INTERCEPT.ENTER) ql.run() @@ -266,7 +266,7 @@ def check_write(ql, write_fd, write_buf, write_count, *args, **kw): ql.buf_out = buf except: pass - ql = Qiling(["../examples/rootfs/armeb_linux/bin/armeb_tcp_test","20003"], "../examples/rootfs/armeb_linux", multithread=True) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_tcp_test","20003"], "../examples/rootfs/armeb_linux_oldlibc", multithread=True) ql.os.set_syscall("write", check_write, QL_INTERCEPT.ENTER) ql.run() @@ -352,7 +352,7 @@ def check_write(ql, write_fd, write_buf, write_count, *args, **kw): except: pass - ql = Qiling(["../examples/rootfs/armeb_linux/bin/armeb_udp_test","20010"], "../examples/rootfs/armeb_linux", multithread=True) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_udp_test","20010"], "../examples/rootfs/armeb_linux_oldlibc", multithread=True) ql.os.set_syscall("write", check_write, QL_INTERCEPT.ENTER) ql.run() @@ -392,18 +392,21 @@ def picohttpd(): def test_http_elf_linux_armeb(self): def picohttpd(): - ql = Qiling(["../examples/rootfs/armeb_linux/bin/picohttpd"], "../examples/rootfs/armeb_linux", multithread=True, verbose=QL_VERBOSE.DEBUG) + ql = Qiling(["../examples/rootfs/armeb_linux/bin/picohttpd","12913"], "../examples/rootfs/armeb_linux", multithread=True, verbose=QL_VERBOSE.DEBUG) ql.run() picohttpd_thread = threading.Thread(target=picohttpd, daemon=True) picohttpd_thread.start() time.sleep(1) - - f = http.client.HTTPConnection('localhost', 12913, timeout=10) - f.request("GET", "/") - response = f.getresponse() - self.assertEqual("httpd_test_successful", response.read().decode()) + + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.connect(("localhost", 12913)) + s.sendall(b"GET / HTTP/1.1\r\nHost: 127.0.0.1:12913\r\nUser-Agent: curl/7.74.0\r\nAccept: */*\r\n\r\n") + data = s.recv(1024) + + res = data.decode("UTF-8",'replace') + self.assertIn("httpd_test_successful", res) if __name__ == "__main__": From 0fe3c041c79497f942660a10b8d5e72413b08bb7 Mon Sep 17 00:00:00 2001 From: xwings Date: Tue, 18 Oct 2022 22:44:12 +0800 Subject: [PATCH 2/5] fix armeb test path --- tests/test_elf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_elf.py b/tests/test_elf.py index 48d071865..6a5cf6563 100644 --- a/tests/test_elf.py +++ b/tests/test_elf.py @@ -1077,12 +1077,12 @@ def test_elf_linux_x8664_getdents(self): del ql def test_elf_linux_armeb(self): - ql = Qiling(["../examples/rootfs/armeb_linux/bin/armeb_hello"], "../examples/rootfs/armeb_linux", verbose=QL_VERBOSE.DEBUG) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_hello"], "../examples/rootfs/armeb_linux", verbose=QL_VERBOSE.DEBUG) ql.run() del ql def test_elf_linux_armeb_static(self): - ql = Qiling(["../examples/rootfs/armeb_linux/bin/armeb_hello_static"], "../examples/rootfs/armeb_linux", verbose=QL_VERBOSE.DEFAULT) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_hello_static"], "../examples/rootfs/armeb_linux", verbose=QL_VERBOSE.DEFAULT) ql.run() del ql From 04927150fe1c66cb7e30586ffaaddc9267611c7e Mon Sep 17 00:00:00 2001 From: xwings Date: Tue, 18 Oct 2022 22:46:04 +0800 Subject: [PATCH 3/5] fix armeb test path and test libc --- tests/test_elf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_elf.py b/tests/test_elf.py index 6a5cf6563..678e79782 100644 --- a/tests/test_elf.py +++ b/tests/test_elf.py @@ -1077,12 +1077,12 @@ def test_elf_linux_x8664_getdents(self): del ql def test_elf_linux_armeb(self): - ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_hello"], "../examples/rootfs/armeb_linux", verbose=QL_VERBOSE.DEBUG) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_hello"], "../examples/rootfs/armeb_linux_oldlibc", verbose=QL_VERBOSE.DEBUG) ql.run() del ql def test_elf_linux_armeb_static(self): - ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_hello_static"], "../examples/rootfs/armeb_linux", verbose=QL_VERBOSE.DEFAULT) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_hello_static"], "../examples/rootfs/armeb_linux_oldlibc", verbose=QL_VERBOSE.DEFAULT) ql.run() del ql From e0ca0fde0a92409c4c51461320aa8c1904be0109 Mon Sep 17 00:00:00 2001 From: xwings Date: Tue, 18 Oct 2022 22:49:05 +0800 Subject: [PATCH 4/5] update workflow docker --- .github/workflows/build-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-ci.yml b/.github/workflows/build-ci.yml index 6ab9b2bf3..baf7ff053 100644 --- a/.github/workflows/build-ci.yml +++ b/.github/workflows/build-ci.yml @@ -13,7 +13,7 @@ jobs: os: [windows-latest, ubuntu-20.04] python-version: [3.8, 3.9] include: - - os: ubuntu-18.04 + - os: ubuntu-20.04 python-version: 3.9 container: Docker From be59d5b2eab14d1b9b122b74e228ec037104c778 Mon Sep 17 00:00:00 2001 From: xwings Date: Tue, 18 Oct 2022 22:53:14 +0800 Subject: [PATCH 5/5] update armeb gdbtest path --- tests/test_debugger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_debugger.py b/tests/test_debugger.py index 9003fe1cb..8893f246c 100644 --- a/tests/test_debugger.py +++ b/tests/test_debugger.py @@ -122,7 +122,7 @@ def gdb_test_client(): del ql def test_gdbdebug_armeb(self): - ql = Qiling(["../examples/rootfs/armeb_linux/bin/armeb_hello"], "../examples/rootfs/armeb_linux", verbose=QL_VERBOSE.DEBUG) + ql = Qiling(["../examples/rootfs/armeb_linux_oldlibc/bin/armeb_hello"], "../examples/rootfs/armeb_linux_oldlibc", verbose=QL_VERBOSE.DEBUG) ql.debugger = True # some random command test just to make sure we covered most of the command