Jacques A. de Guise

78 papers B 12Misc 1Journal 27Unranked 38
YearRankTypeTitle / Venue / Authors
2025 J jnl
Comput. Biol. Medicine
Nahid Babazadeh Khameneh, Thierry Cresson, Frédéric Lavoie, Jacques A. de Guise, Carlos Vázquez
2024 conf
ISBI
Pejman Hashemibakhtiar, Thierry Cresson, Marie-Lyne Nault, Jacques A. de Guise, Carlos Vázquez
2023 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Roseline Olory Agomma, Thierry Cresson, Jacques A. de Guise, Carlos Vázquez
2023 conf
VISIGRAPP (1: GRAPP)
Pejman Hashemibakhtiar, Thierry Cresson, Jacques A. de Guise, Carlos Vázquez
2023 J jnl
Comput. methods Biomech. Biomed. Eng. Imaging Vis.
Florian Beguet, Thierry Cresson, Matthieu Schmittbuhl, Cédric Doucet, David Camirand, Philippe Harris, Jean-Luc Mari, Jacques A. de Guise
2023 J jnl
IEEE Trans. Medical Imaging
Benjamin Aubert, Thierry Cresson, Jacques A. de Guise, Carlos Vázquez
2022 B conf
Image Processing
Manon Ansart, Thierry Cresson, Benjamin Aubert, Jacques A. de Guise, Carlos Vázquez
2021 conf
ISBI
Nahid Babazadeh Khameneh, Carlos Vázquez, Thierry Cresson, Frédéric Lavoie, Jacques A. de Guise
2020 conf
EMBC
Ali Zeighami, Raphaël Dumas, Jacinthe Bleau, Frédéric Lavoie, Jacques A. de Guise, Rachid Aissaoui
2020 J jnl
NeuroImage
Laurent Chauvin, Kuldeep Kumar, Christian Wachinger, Mark G. Vangel, Jacques A. de Guise, Christian Desrosiers, William M. Wells III, Matthew Toews
2019 conf
Eurographics (Posters)
Florian Beguet, Jacques A. de Guise, Matthieu Schmittbuhl, Jean-Luc Mari
2019 conf
ISBI
Christine Bakhous, Carlos Vázquez, Thierry Cresson, Stefan Parent, Jacques A. de Guise
2019 conf
IPMI
Laurent Chauvin, Kuldeep Kumar, Christian Desrosiers, Jacques A. de Guise, William M. Wells III, Matthew Toews
2019 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Liset Vázquez Romaguera, Nils Olofsson, Rosalie Plantefève, Elodie Lugez, Jacques A. de Guise, Samuel Kadoury
2019 conf
EMBC
Amiel Allab, Carlos Vázquez, Thierry Cresson, Jacques A. de Guise
2019 conf
ISBI
Roseline Olory Agomma, Carlos Vázquez, Thierry Cresson, Jacques A. de Guise
2019 conf
EMBC
Ted Julien Tchinde Fotsin, Carlos Vázquez, Thierry Cresson, Jacques A. de Guise
2019 J jnl
IEEE Trans. Medical Imaging
Benjamin Aubert, Carlos Vázquez, Thierry Cresson, Stefan Parent, Jacques A. de Guise
2018 conf
3DOR@Eurographics
Florian Beguet, Jean-Luc Mari, Thierry Cresson, Matthieu Schmittbuhl, Jacques A. de Guise
2018 conf
Computer-Aided Diagnosis
Roseline Olory Agomma, Carlos Vázquez, Thierry Cresson, Jacques A. de Guise
2018 conf
Computer-Aided Diagnosis
Christine Bakhous, Benjamin Aubert, Carlos Vázquez, Thierry Cresson, Stefan Parent, Jacques A. de Guise
2017 conf
MICCAI (2)
Benjamin Aubert, P. A. Vidal, Stefan Parent, Thierry Cresson, Carlos Vázquez, Jacques A. de Guise
2017 J jnl
IET Comput. Vis.
Hossein Mahvash Mohammadi, Jacques A. de Guise
2017 J jnl
IEEE Trans. Biomed. Eng.
Gabriel Chartrand, Thierry Cresson, Ramnada Chav, Akshat Gotra, An Tang, Jacques A. de Guise
2016 conf
EMBC
Lulu Zhou, Ramnada Chav, Thierry Cresson, Gabriel Chartrand, Jacques A. de Guise
2016 conf
EMBC
Pierre Laurent, Thierry Cresson, Carlos Vázquez, Nicola Hagemeister, Jacques A. de Guise
2016 conf
ISBI
Benjamin Aubert, Carlos Vázquez, Thierry Cresson, Stefan Parent, Jacques A. de Guise
2016 conf
EMBC
Imen Mechmeche, Amar Mitiche, Youssef Ouakrim, Jacques A. de Guise, Neila Mezghani
2016 conf
SD&A
Mohamad Kharboutly, Carlos Vázquez, Stéphane Coulombe, Jacques A. de Guise
2016 conf
ISBI
Robert Korez, Benjamin Aubert, Thierry Cresson, Stefan Parent, Tomaz Vrtovec, Jacques A. de Guise, Samuel Kadoury
2015 J jnl
Artif. Intell. Res.
Neila Mezghani, Nathaly Gaudreault, Amar Mitiche, Leila Ayoubian, Youssef Ouakrim, Nicola Hagemeister, Jacques A. de Guise
2015 B conf
Image Processing
Gabriel Chartrand, An Tang, Ramnada Chav, Thierry Cresson, Steeve Chantrel, Jacques A. de Guise
2015 B conf
ICIP
Fatma Ouertani, Carlos Vázquez, Thierry Cresson, Jacques A. de Guise
2014 conf
EMBC
Antoine Moevus, Max Mignotte, Jacques A. de Guise, Jean Meunier
2014 conf
ISBI
Ramnada Chav, Thierry Cresson, Gabriel Chartrand, Claude Kauffmann, Gilles Soulez, Jacques A. de Guise
2014 conf
ISBI
Gabriel Chartrand, Thierry Cresson, Ramnada Chav, Akshat Gotra, An Tang, Jacques A. de Guise
2012 B conf
Image Processing
Pierre-Yves Lagacé, Thierry Cresson, Nicola Hagemeister, Fabien Billuart, Xavier Ohl, Jacques A. de Guise, Wafa Skalli
2012 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Neila Mezghani, Philippe Phan, Amar Mitiche, Hubert Labelle, Jacques A. de Guise
2012 conf
EMBC
Hoang Anh Nguyen, Edouard Auvinet, Max Mignotte, Jacques A. de Guise, Jean Meunier
2011 conf
EMBC
Caroline Rougier, Edouard Auvinet, Jean Meunier, Max Mignotte, Jacques A. de Guise
2011 J jnl
IEEE Trans. Medical Imaging
Ali Meghoufel, Guy Cloutier, Nathalie Crevier-Denoix, Jacques A. de Guise
2010 B conf
Image Processing
Thierry Cresson, Dominic Branchaud, Ramnada Chav, Benoit Godbout, Jacques A. de Guise
2010 B conf
ICPR
Neila Mezghani, Philippe Phan, Amar Mitiche, Hubert Labelle, Jacques A. de Guise
2009 J jnl
Medical Biol. Eng. Comput.
I. Südhoff, Jacques A. de Guise, Antoine Nordez, Erwan Jolivet, D. Bonneau, V. Khoury, Wafa Skalli
2009 B conf
Image Processing
Ramnada Chav, Thierry Cresson, Claude Kauffmann, Jacques A. de Guise
2008 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Neila Mezghani, Ramnada Chav, Ludovic Humbert, Stefan Parent, Wafa Skalli, Jacques A. de Guise
2008 conf
ISBI
Ali Meghoufel, Guy Cloutier, Nathalie Crevier-Denoix, Jacques A. de Guise
2008 J jnl
IEEE Trans. Biomed. Eng.
Neila Mezghani, Sabine Husse, Karine Boivin, Katia Turcot, Rachid Aissaoui, Nicola Hagemeister, Jacques A. de Guise
2008 conf
ISBI
Boris Chayer, Jacques A. de Guise, Guy Cloutier
2008 J jnl
IEEE Trans. Biomed. Eng.
Katia Turcot, Rachid Aissaoui, Karine Boivin, Michel Pelletier, Nicola Hagemeister, Jacques A. de Guise
2008 J jnl
Medical Biol. Eng. Comput.
A. Baudoin, Wafa Skalli, Jacques A. de Guise, David Mitton
2008 J jnl
Medical Image Anal.
Marie-Ange Janvier, Louis-Gilles Durand, Marie-Hélène Roy Cardinal, Isabelle Renaud, Boris Chayer, Pascal Bigras, Jacques A. de Guise, Gilles Soulez, Guy Cloutier
2008 conf
ISBI
Simon Lessard, Caroline Lau, Daniel Roy, Gilles Soulez, Jacques A. de Guise
2005 J jnl
IEEE Trans. Biomed. Eng.
Said Benameur, Max Mignotte, Hubert Labelle, Jacques A. de Guise
2005 J jnl
IEEE Trans. Biomed. Eng.
Raphaël Dumas, Rachid Aissaoui, David Mitton, Wafa Skalli, Jacques A. de Guise
2005 B conf
Image Processing
Pierre Gravel, Philippe Després, Gilles Beaudoin, Jacques A. de Guise
2005 J jnl
IEEE Trans. Biomed. Eng.
Said Benameur, Max Mignotte, François Destrempes, Jacques A. de Guise
2004 J jnl
IEEE Trans. Medical Imaging
Pierre Gravel, Gilles Beaudoin, Jacques A. de Guise
2004 conf
CARS
Raphaël Dumas, Rachid Aissaoui, David Mitton, Wafa Skalli, Jacques A. de Guise
2004 B conf
ICIP
Said Benameur, Max Mignotte, François Destrempes, Jacques A. de Guise
2004 conf
SMC (3)
Simon Lessard, Pascal Bigras, Louis-Gilles Durand, Gilles Soulez, Guy Cloutier, Jacques A. de Guise
2004 conf
Image-Guided Procedures
Alain Gravel, Jean Raymond, Benoit Godbout, Michel Daronat, Philippe Leblanc, Guy Cloutier, Jacques A. de Guise
2004 conf
CARS
Sylvain Deschênes, Benoit Godbout, Vincent Pomero, Wafa Skalli, Jacques A. de Guise
2003 conf
MICCAI (1)
Benoit Godbout, Jacques A. de Guise, Gilles Soulez, Guy Cloutier
2003 conf
ICIP (1)
Said Benameur, Max Mignotte, Stefan Parent, Hubert Labelle, Wafa Skalli, Jacques A. de Guise
2003 J jnl
IEEE Trans. Biomed. Eng.
Sébastien Delorme, Yvan Petit, Jacques A. de Guise, Hubert Labelle, Carl-Eric Aubin, Jean Dansereau
2003 J jnl
IEEE Trans. Biomed. Eng.
Claude Kauffmann, Pierre Gravel, Benoit Godbout, Alain Gravel, Gilles Beaudoin, Jean-Pierre Raynauld, Johanne Martel-Pelletier, Jean-Pierre Pelletier, Jacques A. de Guise
2003 conf
CARS
Vincent Pomero, Sylvain Deschênes, Dominic Branchaud, David Mitton, Sébastien Laporte, Benoit Godbout, Wafa Skalli, Jacques A. de Guise
2003 B conf
Image Processing
Nicolas Boussion, Jacques A. de Guise, Gilles Soulez, Michel Daronat, Guy Cloutier
2003 B conf
Image Processing
Sylvain Deschênes, Benoit Godbout, Dominic Branchaud, David Mitton, Vincent Pomero, André Bleau, Wafa Skalli, Jacques A. de Guise
2003 conf
CARS
Anthony Le Bras, Sébastien Laporte, Valérie Bousson, David Mitton, Jacques A. de Guise, Jean Denis Laredo, Wafa Skalli
2002 Misc conf
ICASSP
Sylvain Deschênes, Jacques A. de Guise
2001 conf
CVPR (2)
Said Benameur, Max Mignotte, Stefan Parent, Hubert Labelle, Wafa Skalli, Jacques A. de Guise
1999 conf
3DIM
Sébastien Delorme, Yvan Petit, Carl-Eric Aubin, Jean Dansereau, Hubert Labelle, C. Landry, Jacques A. de Guise
1999 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Farida Cheriet, Jean Dansereau, Yvan Petit, Carl-Eric Aubin, Hubert Labelle, Jacques A. de Guise
1998 B conf
Image Processing
Claude Kauffmann, Benoit Godbout, Jacques A. de Guise
1992 J jnl
CVGIP Image Underst.
André Bleau, Jacques A. de Guise, A.-Robert LeBlanc
1992 J jnl
CVGIP Image Underst.
André Bleau, Jacques A. de Guise, A.-Robert LeBlanc
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