diff --git a/tests/data/v7.4/x32/kernel32.idb b/tests/data/v7.4/x32/kernel32.idb new file mode 100644 index 0000000..eb85aeb Binary files /dev/null and b/tests/data/v7.4/x32/kernel32.idb differ diff --git a/tests/data/v7.4/x64/kernel32.i64 b/tests/data/v7.4/x64/kernel32.i64 new file mode 100644 index 0000000..b00e933 Binary files /dev/null and b/tests/data/v7.4/x64/kernel32.i64 differ diff --git a/tests/data/v7.5/x32/kernel32.idb b/tests/data/v7.5/x32/kernel32.idb new file mode 100644 index 0000000..b94081b Binary files /dev/null and b/tests/data/v7.5/x32/kernel32.idb differ diff --git a/tests/data/v7.5/x64/kernel32.i64 b/tests/data/v7.5/x64/kernel32.i64 new file mode 100644 index 0000000..f55acb9 Binary files /dev/null and b/tests/data/v7.5/x64/kernel32.i64 differ diff --git a/tests/fixtures.py b/tests/fixtures.py index 12751b4..46d5bd1 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -112,6 +112,7 @@ def rundebug(request): 750: "v7.5", } DefaultKern32Specs = [ + (500, 32, None), (630, 32, None), (630, 64, None), (640, 32, None), @@ -132,6 +133,10 @@ def rundebug(request): (720, 64, None), (730, 32, None), (730, 64, None), + (740, 32, None), + (740, 64, None), + (750, 32, None), + (750, 64, None), ] diff --git a/tests/test_analysis.py b/tests/test_analysis.py index ac0aafa..924eb28 100644 --- a/tests/test_analysis.py +++ b/tests/test_analysis.py @@ -1,4 +1,5 @@ import re +import sys import idb.analysis from fixtures import * @@ -299,6 +300,7 @@ def test_xrefs(kernel32_idb, version, bitness, expected): ) +@pytest.mark.skipif(six.PY2, reason="it consumes too much memory") @kern32_test() def test_fixups(kernel32_idb, version, bitness, expected): fixups = idb.analysis.Fixups(kernel32_idb).fixups diff --git a/tests/test_idaapi.py b/tests/test_idaapi.py index 4c5d5b7..db1d943 100644 --- a/tests/test_idaapi.py +++ b/tests/test_idaapi.py @@ -556,19 +556,17 @@ def test_get_mnem(kernel32_idb, version, bitness, expected): @kern32_test() def test_functions(kernel32_idb, version, bitness, expected): - if version <= 500: - return - api = idb.IDAPython(kernel32_idb) funcs = api.idautils.Functions() # exact number of detected functions varies by IDA version, # but the first and last addresses should remain constant. assert funcs[0] == 0x68901010 - assert funcs[-1] == 0x689BD410 + assert funcs[-1] == 0x689BD410 if version > 500 else 0x689CD6BA # this is a function chunk. should not be reported. - assert 0x689018E5 not in funcs + if version > 500: + assert 0x689018E5 not in funcs @kern32_test() diff --git a/tests/test_netnode.py b/tests/test_netnode.py index 2a51443..0b4bb33 100644 --- a/tests/test_netnode.py +++ b/tests/test_netnode.py @@ -22,16 +22,16 @@ def test_valobj(kernel32_idb, version, bitness, expected): # Out[29]: 'Z:\\home\\user\\Downloads\\kernel32\\kernel32.dll\x00' root = idb.netnode.Netnode(kernel32_idb, ROOT_NODEID) assert root.value_exists() is True - if version > 500: - assert root.valobj().endswith(b"kernel32.dll\x00") - assert root.valstr().endswith("kernel32.dll") - else: + if version >= 740 or version == 500: assert root.valobj().endswith( b"ba1bc09b7bb290656582b4e4d896105caf00825b557ce45621e76741cd5dc262\x00" ) assert root.valstr().endswith( "ba1bc09b7bb290656582b4e4d896105caf00825b557ce45621e76741cd5dc262" ) + else: + assert root.valobj().endswith(b"kernel32.dll\x00") + assert root.valstr().endswith("kernel32.dll") @kern32_test( @@ -72,7 +72,7 @@ def test_alts(kernel32_idb, version, bitness, expected): uint(-1), ] else: - alts == [ + assert alts == [ uint(-5), uint(-4), uint(-3),