Inbal Talgam-Cohen

125 papers A* 35A 1B 4Journal 76Unranked 6
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Eden Saig, Tamar Garbuz, Ariel D. Procaccia, Inbal Talgam-Cohen, Jamie Tucker-Foltz
2026 J jnl
Games Econ. Behav.
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2026 J jnl
CoRR
Elad Lavi, Hadas Shachnai, Inbal Talgam-Cohen
2026 J jnl
CoRR
Zohar Barak, Inbal Talgam-Cohen
2025 J jnl
CoRR
Ilan Doron-Arad, Hadas Shachnai, Gilad Shmerler, Inbal Talgam-Cohen
2025 A* conf
EC
Batya Berzack, Rotem Oshman, Inbal Talgam-Cohen
2025 J jnl
CoRR
Batya Berzack, Rotem Oshman, Inbal Talgam-Cohen
2025 J jnl
CoRR
Zohar Barak, Asnat Berlin, Ilan Reuven Cohen, Alon Eden, Omri Porat, Inbal Talgam-Cohen
2025 A* conf
EC
Tal Alon, Matteo Castiglioni, Junjie Chen, Tomer Ezra, Yingkai Li, Inbal Talgam-Cohen
2025 J jnl
CoRR
Tal Alon, Matteo Castiglioni, Junjie Chen, Tomer Ezra, Yingkai Li, Inbal Talgam-Cohen
2025 A* conf
EC
Gil Aharoni, Martin Hoefer, Inbal Talgam-Cohen
2025 J jnl
CoRR
Gil Aharoni, Martin Hoefer, Inbal Talgam-Cohen
2024 A* conf
EC
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2024 J jnl
CoRR
Paul Duetting, Michal Feldman, Inbal Talgam-Cohen
2024 J jnl
Found. Trends Theor. Comput. Sci.
Paul Dütting, Michal Feldman, Inbal Talgam-Cohen
2024 A* conf
NeurIPS
Guru Guruganesh, Yoav Kolumbus, Jon Schneider, Inbal Talgam-Cohen, Emmanouil-Vasileios Vlatakis-Gkaragkounis, Joshua R. Wang, S. Matthew Weinberg
2024 J jnl
CoRR
Guru Guruganesh, Yoav Kolumbus, Jon Schneider, Inbal Talgam-Cohen, Emmanouil-Vasileios Vlatakis-Gkaragkounis, Joshua R. Wang, S. Matthew Weinberg
2024 A* conf
NeurIPS
Eden Saig, Ohad Einav, Inbal Talgam-Cohen
2024 J jnl
CoRR
Eden Saig, Ohad Einav, Inbal Talgam-Cohen
2024 A* conf
EC
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2024 J jnl
CoRR
Zohar Barak, Anupam Gupta, Inbal Talgam-Cohen
2024 A* conf
NeurIPS
Zohar Barak, Anupam Gupta, Inbal Talgam-Cohen
2024 J jnl
CoRR
Dima Ivanov, Paul Dütting, Inbal Talgam-Cohen, Tonghan Wang, David C. Parkes
2024 J jnl
CoRR
Roy Maor Lotan, Inbal Talgam-Cohen, Yaniv Romano
2024 J jnl
Oper. Res.
Tal Alon, Inbal Talgam-Cohen, Ron Lavi, Elisheva S. Shamash
2023 J jnl
CoRR
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2023 A* conf
EC
Tal Alon, Paul Duetting, Yingkai Li, Inbal Talgam-Cohen
2023 A* conf
NeurIPS
Tonghan Wang, Paul Duetting, Dmitry Ivanov, Inbal Talgam-Cohen, David C. Parkes
2023 J jnl
CoRR
Tonghan Wang, Paul Dütting, Dmitry Ivanov, Inbal Talgam-Cohen, David C. Parkes
2023 A* conf
NeurIPS
Eden Saig, Inbal Talgam-Cohen, Nir Rosenfeld
2023 J jnl
CoRR
Eden Saig, Inbal Talgam-Cohen, Nir Rosenfeld
2023 A* conf
SODA
Avi Cohen, Michal Feldman, Divyarthi Mohan, Inbal Talgam-Cohen
2023 J jnl
ACM Trans. Economics and Comput.
Yotam Gafni, Xin Huang, Ron Lavi, Inbal Talgam-Cohen
2023 A* conf
EC
Itai Arieli, Yakov Babichenko, Inbal Talgam-Cohen, Konstantin Zabarnyi
2023 J jnl
CoRR
Itai Arieli, Yakov Babichenko, Inbal Talgam-Cohen, Konstantin Zabarnyi
2022 J jnl
CoRR
Tal Alon, Paul Dütting, Yingkai Li, Inbal Talgam-Cohen
2022 A* conf
EC
Nir Bachrach, Inbal Talgam-Cohen
2022 J jnl
CoRR
Nir Bachrach, Inbal Talgam-Cohen
2022 J jnl
CoRR
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2022 J jnl
CoRR
Avi Cohen, Michal Feldman, Divyarthi Mohan, Inbal Talgam-Cohen
2022 A conf
ITCS
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2022 J jnl
Games Econ. Behav.
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2022 A* conf
ICML
Vineet Nair, Ganesh Ghalme, Inbal Talgam-Cohen, Nir Rosenfeld
2022 J jnl
CoRR
Vineet Nair, Ganesh Ghalme, Inbal Talgam-Cohen, Nir Rosenfeld
2022 ed.
WINE
Michal Feldman, Hu Fu, Inbal Talgam-Cohen
2021 J jnl
Oper. Res.
Alon Eden, Michal Feldman, Ophir Friedler, Inbal Talgam-Cohen, S. Matthew Weinberg
2021 B conf
SAGT
Ameer Amer, Inbal Talgam-Cohen
2021 J jnl
CoRR
Ameer Amer, Inbal Talgam-Cohen
2021 A* conf
AAAI
Yakov Babichenko, Inbal Talgam-Cohen, Konstantin Zabarnyi
2021 J jnl
Math. Oper. Res.
Moshe Babaioff, Noam Nisan, Inbal Talgam-Cohen
2021 A* conf
EC
Tal Alon, Paul Dütting, Inbal Talgam-Cohen
2021 J jnl
CoRR
Tal Alon, Paul Dütting, Inbal Talgam-Cohen
2021 J jnl
SIGecom Exch.
Inbal Talgam-Cohen, S. Matthew Weinberg
2021 A* conf
EC
Tal Alon, Ron Lavi, Elisheva S. Shamash, Inbal Talgam-Cohen
2021 J jnl
CoRR
Tal Alon, Ron Lavi, Elisheva S. Shamash, Inbal Talgam-Cohen
2021 J jnl
CoRR
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2021 A* conf
AAAI
Alon Eden, Michal Feldman, Inbal Talgam-Cohen, Ori Zviran
2021 A* conf
EC
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2021 J jnl
CoRR
Yakov Babichenko, Inbal Talgam-Cohen, Haifeng Xu, Konstantin Zabarnyi
2021 A* conf
ICML
Ganesh Ghalme, Vineet Nair, Itay Eilat, Inbal Talgam-Cohen, Nir Rosenfeld
2021 J jnl
CoRR
Ganesh Ghalme, Vineet Nair, Itay Eilat, Inbal Talgam-Cohen, Nir Rosenfeld
2021 J jnl
SIAM J. Comput.
Paul Dütting, Tim Roughgarden, Inbal Talgam-Cohen
2021 J jnl
CoRR
Yotam Gafni, Xin Huang, Ron Lavi, Inbal Talgam-Cohen
2020 J jnl
SIAM J. Comput.
Uriel Feige, Michal Feldman, Inbal Talgam-Cohen
2020 J jnl
CoRR
Yakov Babichenko, Inbal Talgam-Cohen, Konstantin Zabarnyi
2020 J jnl
SIGecom Exch.
Inbal Talgam-Cohen, S. Matthew Weinberg
2020 J jnl
SIGecom Exch.
Inbal Talgam-Cohen, S. Matthew Weinberg
2020 A* conf
EC
Moshe Babaioff, Michal Feldman, Yannai A. Gonczarowski, Brendan Lucier, Inbal Talgam-Cohen
2020 J jnl
CoRR
Moshe Babaioff, Michal Feldman, Yannai A. Gonczarowski, Brendan Lucier, Inbal Talgam-Cohen
2020 A* conf
AAAI
Tal Alon, Magdalen Dobson, Ariel D. Procaccia, Inbal Talgam-Cohen, Jamie Tucker-Foltz
2020 J jnl
CoRR
Alon Eden, Michal Feldman, Inbal Talgam-Cohen, Ori Zviran
2020 ch.
Beyond the Worst-Case Analysis of Algorithms
Inbal Talgam-Cohen
2020 J jnl
Oper. Res.
Tim Roughgarden, Inbal Talgam-Cohen, Qiqi Yan
2020 A* conf
SODA
Paul Dütting, Tim Roughgarden, Inbal Talgam-Cohen
2020 J jnl
CoRR
Paul Duetting, Tim Roughgarden, Inbal Talgam-Cohen
2019 J jnl
CoRR
Moshe Babaioff, Noam Nisan, Inbal Talgam-Cohen
2019 conf
FAT
Moshe Babaioff, Noam Nisan, Inbal Talgam-Cohen
2019 A* conf
FOCS
Tomer Ezra, Michal Feldman, Eric Neyman, Inbal Talgam-Cohen, S. Matthew Weinberg
2019 A* conf
EC
Paul Dütting, Tim Roughgarden, Inbal Talgam-Cohen
2018 J jnl
CoRR
Tim Roughgarden, Inbal Talgam-Cohen
2018 J jnl
CoRR
Tomer Ezra, Michal Feldman, Eric Neyman, Inbal Talgam-Cohen, S. Matthew Weinberg
2018 J jnl
CoRR
Paul Dütting, Tim Roughgarden, Inbal Talgam-Cohen
2017 A* conf
EC
Alon Eden, Michal Feldman, Ophir Friedler, Inbal Talgam-Cohen, S. Matthew Weinberg
2017 A* conf
STOC
Uriel Feige, Michal Feldman, Inbal Talgam-Cohen
2017 J jnl
CoRR
Moshe Babaioff, Noam Nisan, Inbal Talgam-Cohen
2017 J jnl
Games Econ. Behav.
Paul Dütting, Inbal Talgam-Cohen, Tim Roughgarden
2017 A* conf
EC
Alon Eden, Michal Feldman, Ophir Friedler, Inbal Talgam-Cohen, S. Matthew Weinberg
2017 conf
APPROX-RANDOM
Tim Roughgarden, Inbal Talgam-Cohen, Jan Vondrák
2017 A* conf
STOC
Tim Roughgarden, Inbal Talgam-Cohen
2016 J jnl
CoRR
Alon Eden, Michal Feldman, Ophir Friedler, Inbal Talgam-Cohen, S. Matthew Weinberg
2016 J jnl
CoRR
Uriel Feige, Michal Feldman, Inbal Talgam-Cohen
2016 conf
APPROX-RANDOM
Uriel Feige, Michal Feldman, Inbal Talgam-Cohen
2016 J jnl
ACM Trans. Economics and Comput.
Tim Roughgarden, Inbal Talgam-Cohen
2016 J jnl
Theory Comput. Syst.
Mukund Sundararajan, Inbal Talgam-Cohen
2016 J jnl
CoRR
Alon Eden, Michal Feldman, Ophir Friedler, Inbal Talgam-Cohen, S. Matthew Weinberg
2016 J jnl
CoRR
Tim Roughgarden, Inbal Talgam-Cohen, Jan Vondrák
2016 A* conf
IJCAI
Tim Roughgarden, Inbal Talgam-Cohen
2015 J jnl
XRDS
Inbal Talgam-Cohen
2015
Inbal Talgam-Cohen
2015 conf
WINE
Shahar Dobzinski, Michal Feldman, Inbal Talgam-Cohen, Omri Weinstein
2015 A* conf
EC
Tim Roughgarden, Inbal Talgam-Cohen
2015 J jnl
SIGecom Exch.
Tim Roughgarden, Inbal Talgam-Cohen
2014 J jnl
XRDS
Sean Follmer, Inbal Talgam-Cohen
2014 J jnl
XRDS
Inbal Talgam-Cohen, Sean Follmer
2014 J jnl
XRDS
Inbal Talgam-Cohen
2014 A* conf
EC
Paul Dütting, Tim Roughgarden, Inbal Talgam-Cohen
2014 B conf
SAGT
Mukund Sundararajan, Inbal Talgam-Cohen
2014 J jnl
XRDS
Sean Follmer, Inbal Talgam-Cohen
2014 J jnl
SIAM J. Comput.
Matthias Englert, Anupam Gupta, Robert Krauthgamer, Harald Räcke, Inbal Talgam-Cohen, Kunal Talwar
2014 J jnl
CoRR
Shahar Dobzinski, Michal Feldman, Inbal Talgam-Cohen, Omri Weinstein
2013 J jnl
XRDS
Peter Kinnaird, Inbal Talgam-Cohen
2013 J jnl
XRDS
Peter Kinnaird, Inbal Talgam-Cohen
2013 J jnl
XRDS
Inbal Talgam-Cohen, Peter Kinnaird
2013 A* conf
EC
Tim Roughgarden, Inbal Talgam-Cohen
2013 J jnl
CoRR
Mukund Sundararajan, Inbal Talgam-Cohen
2012 B conf
SAGT
Hu Fu, Patrick R. Jordan, Mohammad Mahdian, Uri Nadav, Inbal Talgam-Cohen, Sergei Vassilvitskii
2012 conf
INFOCOM Workshops
Hu Fu, Patrick R. Jordan, Mohammad Mahdian, Uri Nadav, Inbal Talgam-Cohen, Sergei Vassilvitskii
2012 J jnl
XRDS
Peter Kinnaird, Inbal Talgam-Cohen
2012 J jnl
XRDS
Peter Kinnaird, Inbal Talgam-Cohen
2012 A* conf
EC
Tim Roughgarden, Inbal Talgam-Cohen, Qiqi Yan
2010 B conf
SAGT
Uriel Feige, Inbal Talgam-Cohen
2010 J jnl
CoRR
Uriel Feige, Inbal Talgam-Cohen
2010 J jnl
XRDS
Michael S. Bernstein, Inbal Talgam-Cohen
2010 J jnl
CoRR
Matthias Englert, Anupam Gupta, Robert Krauthgamer, Harald Räcke, Inbal Talgam-Cohen, Kunal Talwar
2010 conf
APPROX-RANDOM
Matthias Englert, Anupam Gupta, Robert Krauthgamer, Harald Räcke, Inbal Talgam-Cohen, Kunal Talwar
tests/unit/test_apk_method_extractor.py
← Index tests/unit/test_apk_method_extractor.py python
"""
Unit tests for APK method-level content extraction, hashing, and similarity.

Tests SHA-256 normalization, ssdeep/TLSH computation, obfuscation detection,
and Dalvik-to-Java type conversion.
"""
import pytest

pytestmark = [pytest.mark.unit, pytest.mark.apk, pytest.mark.decompile]


class TestHashingFunctions:
    """Tests for hashing utility functions."""

    def test_sha256_deterministic(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        h1 = compute_sha256("invoke-virtual {p0}, Lcom/Foo;->bar()V")
        h2 = compute_sha256("invoke-virtual {p0}, Lcom/Foo;->bar()V")
        assert h1 == h2

    def test_sha256_hex_length(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        assert len(compute_sha256("test")) == 64

    def test_sha256_different_inputs(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_sha256
        assert compute_sha256("aaa") != compute_sha256("bbb")

    def test_ssdeep_none_for_short(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_ssdeep
        assert compute_ssdeep("short") is None

    def test_tlsh_none_for_short(self):
        from redb.extractors.decompiler.apk.method_extractor import compute_tlsh
        assert compute_tlsh("x") is None


class TestObfuscationDetection:
    """Tests for obfuscation indicator detection."""

    def test_short_method_name_single_char(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("a", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is True

    def test_short_method_name_two_chars(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("ab", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is True

    def test_normal_method_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("onCreate", "Lcom/Foo;", "", 10)
        assert r["short_method_name"] is False

    def test_short_class_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("foo", "Lcom/a;", "", 10)
        assert r["short_class_name"] is True

    def test_normal_class_name(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        r = detect_obfuscation_indicators("foo", "Lcom/example/MainActivity;", "", 10)
        assert r["short_class_name"] is False

    def test_string_encryption_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = (
            'const-string v0, "xyz"\n'
            'invoke-static {v0}, Lcom/Enc;->decrypt(Ljava/lang/String;)Ljava/lang/String;\n'
        )
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_string_encryption"] is True

    def test_no_string_encryption(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'const-string v0, "hello"\ninvoke-virtual {v0}, Ljava/lang/String;->length()I'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_string_encryption"] is False

    def test_reflection_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'invoke-virtual {v0, v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_reflection_calls"] is True

    def test_no_reflection(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = 'invoke-virtual {p0}, Lcom/Foo;->bar()V'
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 10)
        assert r["has_reflection_calls"] is False

    def test_excessive_goto_detected(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "\n".join(["goto :label"] * 10)
        # threshold = max(5, 20*0.15=3) = 5, 10 > 5
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 20)
        assert r["excessive_goto_count"] is True

    def test_no_excessive_goto(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "goto :label\nreturn-void"
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 100)
        assert r["excessive_goto_count"] is False

    def test_goto_16_counted(self):
        from redb.extractors.decompiler.apk.method_extractor import detect_obfuscation_indicators
        smali = "\n".join(["goto/16 :label"] * 10)
        r = detect_obfuscation_indicators("m", "Lcom/Foo;", smali, 20)
        assert r["excessive_goto_count"] is True


class TestDalvikTypeConversion:
    """Tests for Dalvik-to-Java type conversion."""

    def test_void(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("V") == "void"

    def test_primitives(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("I") == "int"
        assert dalvik_type_to_java("Z") == "boolean"
        assert dalvik_type_to_java("J") == "long"
        assert dalvik_type_to_java("F") == "float"
        assert dalvik_type_to_java("D") == "double"
        assert dalvik_type_to_java("B") == "byte"
        assert dalvik_type_to_java("S") == "short"
        assert dalvik_type_to_java("C") == "char"

    def test_object_type(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("Ljava/lang/String;") == "String"
        assert dalvik_type_to_java("Lcom/example/Foo;") == "Foo"

    def test_array_type(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("[I") == "int[]"
        assert dalvik_type_to_java("[Ljava/lang/String;") == "String[]"

    def test_empty_returns_void(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_type_to_java
        assert dalvik_type_to_java("") == "void"


class TestJavaPrototypeConversion:
    """Tests for method signature to Java prototype conversion."""

    def test_simple_method(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        assert dalvik_to_java_prototype("foo", "()V") == "void foo()"

    def test_method_with_params(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("bar", "(ILjava/lang/String;)Z")
        assert result == "boolean bar(int, String)"

    def test_method_returning_object(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("create", "()Lcom/example/Foo;")
        assert result == "Foo create()"

    def test_empty_signature(self):
        from redb.extractors.decompiler.apk.method_extractor import dalvik_to_java_prototype
        result = dalvik_to_java_prototype("m", "")
        assert "m()" in result


class TestDalvikParamParsing:
    """Tests for parsing Dalvik parameter descriptors."""

    def test_empty(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("") == []

    def test_single_primitive(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("I") == ["I"]

    def test_multiple_primitives(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("IZJ") == ["I", "Z", "J"]

    def test_single_object(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        assert _parse_dalvik_params("Ljava/lang/String;") == ["Ljava/lang/String;"]

    def test_mixed(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("ILjava/lang/String;Z")
        assert result == ["I", "Ljava/lang/String;", "Z"]

    def test_arrays(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("[I[Ljava/lang/String;")
        assert result == ["[I", "[Ljava/lang/String;"]

    def test_two_objects(self):
        from redb.extractors.decompiler.apk.method_extractor import _parse_dalvik_params
        result = _parse_dalvik_params("Landroid/os/Bundle;Ljava/lang/String;")
        assert len(result) == 2