diff --git a/tests/fixtures.py b/tests/fixtures.py index 47c23371..e58ffbcb 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -182,6 +182,8 @@ def get_data_path_by_name(name): return os.path.join(CD, "data", "kernel32.dll_") elif name == "kernel32-64": return os.path.join(CD, "data", "kernel32-64.dll_") + elif name == "pma01-01": + return os.path.join(CD, "data", "Practical Malware Analysis Lab 01-01.dll_") elif name == "pma12-04": return os.path.join(CD, "data", "Practical Malware Analysis Lab 12-04.exe_") elif name == "pma16-01": @@ -234,6 +236,8 @@ def get_sample_md5_by_name(name): return "56bed8249e7c2982a90e54e1e55391a2" elif name == "pma16-01": return "7faafc7e4a5c736ebfee6abbbc812d80" + elif name == "pma01-01": + return "290934c61de9176ad682ffdd65f0a669" elif name == "pma21-01": return "c8403fb05244e23a7931c766409b5e22" elif name == "al-khaser x86": diff --git a/tests/test_main.py b/tests/test_main.py index aa74bed3..25a62c1f 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -375,3 +375,14 @@ def test_backend_option(capsys): std_json = json.loads(std.out) assert std_json["meta"]["analysis"]["extractor"] == "SmdaFeatureExtractor" assert len(std_json["rules"]) > 0 + + +def test_json_meta(capsys): + path = fixtures.get_data_path_by_name("pma01-01") + assert capa.main.main([path, "-j"]) == 0 + std = capsys.readouterr() + std_json = json.loads(std.out) + # remember: json can't have integer keys :-( + assert str(0x10001010) in std_json["meta"]["analysis"]["layout"]["functions"] + assert 0x10001179 in std_json["meta"]["analysis"]["layout"]["functions"][str(0x10001010)]["matched_basic_blocks"] +