Van-Nam Huynh

226 papers B 27C 7Misc 3Journal 104Unranked 57
YearRankTypeTitle / Venue / Authors
2026 J jnl
Appl. Soft Comput.
Hongbin Yan, Lianzhuang Qu, Van-Nam Huynh
2026 J jnl
Neurocomputing
Toan Nguyen Mau, Hieu-Chi Dam, Van-Nam Huynh
2026 J jnl
Neurocomputing
Anh-Tu Tran, The-Dung Luong, Van-Nam Huynh
2025 J jnl
Comput. Ind. Eng.
Thanapat Leelertkij, Jirachai Buddhakulsomsiri, Van-Nam Huynh
2025 conf
IUKM (2)
Sathianphong Seedao, Warut Pannakkong, Van-Nam Huynh, Nuttapong Sanglerdsinlapachai, Fumio Kojima, Yoshiro Fukuda, Kuniaki Tanaka
2025 J jnl
Expert Syst. Appl.
Tai Dinh, Wong Hauchi, Philippe Fournier-Viger, Daniil Lisik, Minh-Quyet Ha, Hieu-Chi Dam, Van-Nam Huynh
2025 J jnl
CoRR
Duy-Tai Dinh, Tsutomu Fujinami, Van-Nam Huynh
2025 J jnl
CoRR
Phuong Mai Dinh, Van-Nam Huynh
2025 ed.
IUKM (1)
Van-Nam Huynh, Katsuhiro Honda, Bac Le, Masahiro Inuiguchi, Hieu Trung Huynh
2025 ed.
IUKM (2)
Van-Nam Huynh, Katsuhiro Honda, Bac Le, Masahiro Inuiguchi, Hieu Trung Huynh
2025 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Nguyen Duy Hung, Thanaruk Theeramunkong, Van-Nam Huynh
2025 conf
CLAR
Nguyen Duy Hung, Van-Nam Huynh
2025 conf
IUKM (1)
Kim-Dung Tran, Xuan-Truong Hoang, Vu-Linh Nguyen, Sébastien Destercke, Van-Nam Huynh
2025 J jnl
Inf. Sci.
Matteo Brunelli, Rajith Perera Jayasuriya Kuranage, Van-Nam Huynh
2025 conf
IUKM (1)
Xuan-Truong Hoang, Vu-Linh Nguyen, Takayuki Kitagawa, Van-Nam Huynh
2025 J jnl
CoRR
Minh-Quyet Ha, Dinh-Khiet Le, Duc-Anh Dao, Tien-Sinh Vu, Duong-Nguyen Nguyen, Viet-Cuong Nguyen, Hiori Kino, Van-Nam Huynh, Hieu-Chi Dam
2025 J jnl
IEEE Access
Xianghui Li, Takaya Yuizono, Van-Nam Huynh, Ruixuan Li
2024 J jnl
IEEE Access
Raveekiat Singhaphandu, Warut Pannakkong, Van-Nam Huynh, Prachya Boonkwan
2024 conf
BELIEF
Anh-Tu Tran, Van-Nam Huynh, Viet-Hung Dang
2024 J jnl
IEEE Access
Nittaya Chemkomnerd, Warut Pannakkong, Tanatorn Tanantong, Van-Nam Huynh, Jessada Karnjana
2024 J jnl
Neurocomputing
Anh-Tu Tran, The-Dung Luong, Van-Nam Huynh
2024 conf
SUM
Vu-Linh Nguyen, Toan Nguyen Mau, Van-Nam Huynh
2024 J jnl
Inf. Fusion
Toan Nguyen Mau, Anh-Cuong Le, Duc-Hong Pham, Van-Nam Huynh
2024 J jnl
Inf. Sci.
Wei Ou, Van-Nam Huynh
2024 J jnl
CoRR
Tai Dinh, Wong Hauchi, Philippe Fournier-Viger, Daniil Lisik, Minh-Quyet Ha, Hieu-Chi Dam, Van-Nam Huynh
2024 J jnl
Inf. Sci.
Wei Ou, Van-Nam Huynh
2024 J jnl
IEEE Trans. Engineering Management
Nu Dieu Khue Ngo, Thanh Quynh Le, Roengchai Tansuchat, Toan Nguyen Mau, Van-Nam Huynh
2024 conf
IIAI-AAI
Nittaya Chemkomnerd, Warut Pannakkong, Van-Nam Huynh, Tanatorn Tanantong
2024 B conf
MDAI
Nguyen Duy Hung, Van-Nam Huynh
2023 J jnl
IEEE Access
Nu Dieu Khue Ngo, Roengchai Tansuchat, Cu Pham-Van, Toan Nguyen Mau, Youji Kohda, Van-Nam Huynh
2023 J jnl
J. Ambient Intell. Humaniz. Comput.
Thu-Hien Thi Nguyen, Duy-Tai Dinh, Songsak Sriboonchitta, Van-Nam Huynh
2023 J jnl
IEEE Trans. Knowl. Data Eng.
Duc-Vinh Vo, Trung-Tin Tran, Kiyoaki Shirai, Van-Nam Huynh
2023 J jnl
IEEE Access
Quoc-Dai Luong Tran, Anh-Cuong Le, Van-Nam Huynh
2023 conf
IUKM (2)
Vu-Linh Nguyen, Xuan-Truong Hoang, Van-Nam Huynh
2023 ed.
IUKM (1)
Van-Nam Huynh, Bac Le, Katsuhiro Honda, Masahiro Inuiguchi, Youji Kohda
2023 ed.
IUKM (2)
Katsuhiro Honda, Bac Le, Van-Nam Huynh, Masahiro Inuiguchi, Youji Kohda
2023 J jnl
Int. J. Approx. Reason.
Nguyen Duy Hung, Van-Nam Huynh
2023 J jnl
IEEE Access
Yang Yu, Duy-Tai Dinh, Ba-Hung Nguyen, Fangyu Yu, Van-Nam Huynh
2023 J jnl
IEEE Access
Pakkaporn Saophan, Warut Pannakkong, Raveekiat Singhaphandu, Van-Nam Huynh
2023 C conf
MEDI
Yang Yu, Tai Dinh, Fangyu Yu, Van-Nam Huynh
2022 J jnl
Int. J. Uncertain. Fuzziness Knowl. Based Syst.
Sirin Suprasongsin, Pisal Yenradee, Van-Nam Huynh, Suchada Rianmora
2022 conf
IUKM
Nu Dieu Khue Ngo, Van-Nam Huynh
2022 J jnl
IEEE Access
Randall Mauricio Pérez-Wheelock, Wei Ou, Pisal Yenradee, Van-Nam Huynh
2022 J jnl
IEEE Access
Quang-Hung Le, Toan Nguyen Mau, Roengchai Tansuchat, Van-Nam Huynh
2022 J jnl
IEEE Access
Toan Nguyen Mau, Yasushi Inoguchi, Van-Nam Huynh
2022 ed.
IUKM
Katsuhiro Honda, Tomoe Entani, Seiki Ubukata, Van-Nam Huynh, Masahiro Inuiguchi
2022 conf
IUKM
Pavinee Rerkjirattikal, Raveekiat Singhaphandu, Van-Nam Huynh, Sun Olapiriyakul
2022 conf
ECML/PKDD (6)
Xuan-May Le, Minh-Tuan Tran, Van-Nam Huynh
2022 J jnl
J. Oper. Res. Soc.
Ba-Hung Nguyen, Van-Nam Huynh
2022 conf
KSE
Quoc-Dai Luong Tran, Anh-Cuong Le, Van-Nam Huynh
2021 J jnl
IEEE Access
Thananut Phiboonbanakit, Teerayut Horanont, Van-Nam Huynh, Thepchai Supnithi
2021 J jnl
IEEE Access
Anh Hoang, Toan Nguyen Mau, Duc-Vinh Vo, Van-Nam Huynh
2021 J jnl
Neurocomputing
Toan Nguyen Mau, Van-Nam Huynh
2021 J jnl
Neurocomputing
Anh-Tu Tran, The-Dung Luong, Jessada Karnjana, Van-Nam Huynh
2021 J jnl
Inf. Fusion
Duc-Vinh Vo, Jessada Karnjana, Van-Nam Huynh
2021 conf
AHFE (8)
Nu Dieu Khue Ngo, Youji Kohda, Van-Nam Huynh
2021 B conf
MDAI
Toan Nguyen Mau, Van-Nam Huynh
2021 C conf
ICORES
Panchalee Praneetpholkrang, Van-Nam Huynh, Sarunya Kanjanawattana
2021 J jnl
Inf. Sci.
Duy-Tai Dinh, Van-Nam Huynh, Songsak Sriboonchitta
2021 conf
AHFE (8)
Yang Yu, Ba-Hung Nguyen, Fangyu Yu, Van-Nam Huynh
2021 conf
KSE
Yang Yu, Ba-Hung Nguyen, Fangyu Yu, Van-Nam Huynh
2021 J jnl
Nat. Comput. Sci.
Minh-Quyet Ha, Duong-Nguyen Nguyen, Viet Cuong Nguyen, Takahiro Nagata, Toyohiro Chikyow, Hiori Kino, Takashi Miyake, Thierry Denoeux, Van-Nam Huynh, Hieu-Chi Dam
2021 B conf
FUZZ-IEEE
Toan Nguyen Mau, Van-Nam Huynh
2021 B conf
MDAI
Anh Hoang, Toan Nguyen Mau, Van-Nam Huynh
2021 J jnl
Int. J. Comput. Intell. Syst.
Kwanjira Kaewfak, Veeris Ammarapala, Van-Nam Huynh
2021 J jnl
Ann. Oper. Res.
Van-Nam Huynh, Hongbin Yan
2021 C conf
EUMAS
Nguyen Duy Hung, Van-Nam Huynh
2021 J jnl
Int. J. Approx. Reason.
Nguyen Duy Hung, Van-Nam Huynh
2020 conf
AHFE (8)
Pavinee Rerkjirattikal, Van-Nam Huynh, Sun Olapiriyakul, Thepchai Supnithi
2020 conf
IUKM
Thanh-Phu Nguyen, Van-Nam Huynh
2020 J jnl
IEEE Access
Kwanjira Kaewfak, Van-Nam Huynh, Veeris Ammarapala, Nantaporn Ratisoontorn
2020 J jnl
Ann. Oper. Res.
Sirin Suprasongsin, Pisal Yenradee, Van-Nam Huynh
2020 J jnl
IEEE Access
Bay Vo, Loan T. T. Nguyen, Nguyen Bui, Trinh D. D. Nguyen, Van-Nam Huynh, Tzung-Pei Hong
2020 conf
IUKM
Duc-Vinh Vo, Anh Hoang, Van-Nam Huynh
2020 conf
AHFE (8)
Raveekiat Singhaphandu, Van-Nam Huynh, Warut Pannakkong
2020 J jnl
IEEE Access
Thanh-Phu Nguyen, Su Nguyen, Damminda Alahakoon, Van-Nam Huynh
2020 J jnl
Int. J. Comput. Intell. Syst.
Nhat-Vinh Lu, Roengchai Tansuchat, Takaya Yuizono, Van-Nam Huynh
2020 ed.
IUKM
Van-Nam Huynh, Tomoe Entani, Chawalit Jeenanunta, Masahiro Inuiguchi, Pisal Yenradee
2020 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Van-Doan Nguyen, Van-Nam Huynh, Songsak Sriboonchitta
2020 J jnl
Appl. Intell.
Tuong Le, Bay Vo, Van-Nam Huynh, Ngoc Thanh Nguyen, Sung Wook Baik
2020 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Hung Ba Nguyen, Van-Nam Huynh
2020 conf
ECML/PKDD (5)
Ba-Hung Nguyen, Kiyoaki Shirai, Van-Nam Huynh
2020 J jnl
Appl. Intell.
Duy-Tai Dinh, Van-Nam Huynh
2019 J jnl
Int. J. Comput. Intell. Syst.
Warut Pannakkong, Van-Nam Huynh, Songsak Sriboonchitta
2019 J jnl
Eng. Appl. Artif. Intell.
Tuan Minh Tran, Xuan-May Thi Le, Hien T. Nguyen, Van-Nam Huynh
2019 J jnl
IISE Trans.
Hongbin Yan, Xiang-Sheng Meng, Tieju Ma, Van-Nam Huynh
2019 conf
IUKM
Xiaoyu Tang, Wei Ou, Van-Nam Huynh
2019 conf
UbiComp/ISWC Adjunct
Thananut Phiboonbanakit, Van-Nam Huynh, Teerayut Horanont, Thepchai Supnithi
2019 Misc conf
IVCNZ
Chau-Phuc-Thinh Phan, Anh Hoang, Doan-Phuc Phan, Huu-Hung Dao, Van-Nam Huynh
2019 ed.
IUKM
Hirosato Seki, Canh Hao Nguyen, Van-Nam Huynh, Masahiro Inuiguchi
2019 conf
PRICAI (1)
Nguyen Duy Hung, Van-Nam Huynh
2019 conf
IUKM
Thang Tran, Hung Ba, Van-Nam Huynh
2019 conf
IUKM
Jonathan Lawry, Van-Nam Huynh, Chris A. McMahon
2019 J jnl
Int. J. Approx. Reason.
Van-Nam Huynh
2018 conf
PRICAI (1)
Thanh-Phu Nguyen, Duy-Tai Dinh, Van-Nam Huynh
2018 conf
IUKM
Thanh-Phu Nguyen, Mina Ryoke, Van-Nam Huynh
2018 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Sirin Suprasongsin, Van-Nam Huynh, Pisal Yenradee
2018 J jnl
Int. J. Approx. Reason.
Bac Le, Duy-Tai Dinh, Van-Nam Huynh, Quang-Minh Nguyen, Philippe Fournier-Viger
2018 J jnl
Appl. Intell.
Duy-Tai Dinh, Bac Le, Philippe Fournier-Viger, Van-Nam Huynh
2018 B conf
MDAI
Randall Mauricio Pérez-Wheelock, Van-Nam Huynh
2018 J jnl
Int. J. Knowl. Syst. Sci.
Thanh Quynh Le, Van-Nam Huynh
2018 ed.
IUKM
Van-Nam Huynh, Masahiro Inuiguchi, Dang Hung Tran, Thierry Denoeux
2018 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Wei Ou, Van-Nam Huynh
2018 conf
UbiComp/ISWC Adjunct
Thananut Phiboonbanakit, Teerayut Horanont, Thepchai Supnithi, Van-Nam Huynh
2018 conf
IUKM
Sadaaki Miyamoto, Van-Nam Huynh, Shuhei Fujiwara
2018 B conf
MDAI
Sadaaki Miyamoto, Jong Moon Choi, Yasunori Endo, Van-Nam Huynh
2018 conf
IUKM
Nhat-Vinh Lu, Van-Nam Huynh, Takaya Yuizono, Trung-Ky Nguyen
2018 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Sirin Suprasongsin, Pisal Yenradee, Van-Nam Huynh, Chayakrit Charoensiriwath
2018 J jnl
Electron. Commer. Res. Appl.
Wei Ou, Van-Nam Huynh, Songsak Sriboonchitta
2018 B conf
MDAI
Duy-Tai Dinh, Van-Nam Huynh
2017 B conf
MDAI
Warut Pannakkong, Van-Nam Huynh
2017 J jnl
Int. J. Knowl. Syst. Sci.
Jing Sun, Jianguo Wu, Jing Tian, Van-Nam Huynh, Yoshiteru Nakamori
2017 J jnl
Int. J. Knowl. Syst. Sci.
Warut Pannakkong, Van Hai Pham, Van-Nam Huynh
2017 J jnl
Knowl. Based Syst.
Sapa Chanyachatchawan, Hongbin Yan, Songsak Sriboonchitta, Van-Nam Huynh
2017 J jnl
Ann. Oper. Res.
Wentao Guo, Van-Nam Huynh, Songsak Sriboonchitta
2017 J jnl
Ann. Oper. Res.
Hongbin Yan, Tieju Ma, Songsak Sriboonchitta, Van-Nam Huynh
2017 J jnl
Int. J. Knowl. Syst. Sci.
Narongsak Pongsathornwiwat, Van-Nam Huynh, Chawalit Jeenanunta
2017 conf
QRS Companion
Jing Sun, Van-Nam Huynh, Yoshiteru Nakamori, Jianguo Wu, Jing Tian, Jianwen Xiang
2017 conf
ACIIDS (1)
Tai Dinh, Van-Nam Huynh, Bac Le
2017 J jnl
Ann. Oper. Res.
Van-Nam Huynh
2017 book
Vladik Kreinovich, Songsak Sriboonchitta, Van-Nam Huynh
2017 J jnl
Int. J. Approx. Reason.
Van-Doan Nguyen, Van-Nam Huynh
2017 J jnl
Electron. Commer. Res. Appl.
Van-Doan Nguyen, Songsak Sriboonchitta, Van-Nam Huynh
2016 conf
IUKM
Warut Pannakkong, Van Hai Pham, Van-Nam Huynh
2016 conf
SCIS&ISIS
Sapa Chanyachatchawan, Hongbin Yan, Songsak Sriboonchitta, Van-Nam Huynh
2016 conf
FoIKS
Thu-Hien Thi Nguyen, Van-Nam Huynh
2016 B conf
FUZZ-IEEE
Narongsak Pongsathornwiwat, Van-Nam Huynh, Thanaruk Theeramunkong, Chawalit Jeenanunta
2016 ch.
Causal Inference in Econometrics
Warut Pannakkong, Van-Nam Huynh, Songsak Sriboonchitta
2016 book
Causal Inference in Econometrics
Van-Nam Huynh, Vladik Kreinovich, Songsak Sriboonchitta
2016 conf
IUKM
Wei Ou, Anh-Cuong Le, Van-Nam Huynh
2016 ed.
IUKM
Van-Nam Huynh, Masahiro Inuiguchi, Bac Le, Bao Nguyen Le, Thierry Denoeux
2016 conf
CSoNet
Van-Doan Nguyen, Van-Nam Huynh
2016 J jnl
Int. J. Knowl. Syst. Sci.
Fei Meng, Yoshiteru Nakamori, Van-Nam Huynh
2016 conf
SoICT
Nguyen Bui, Bay Vo, Van-Nam Huynh, Chun-Wei Lin, Loan T. T. Nguyen
2016 B conf
ICTAI
Van-Doan Nguyen, Van-Nam Huynh
2016 B conf
ICTAI
Van-Doan Nguyen, Van-Nam Huynh
2016 B conf
MDAI
Wei Ou, Van-Nam Huynh
2016 B conf
MDAI
Sirin Suprasongsin, Pisal Yenradee, Van-Nam Huynh
2015 C conf
ECSQARU
Van-Doan Nguyen, Van-Nam Huynh
2015 J jnl
Int. J. Knowl. Syst. Sci.
Wentao Guo, Van-Nam Huynh, Yoshiteru Nakamori
2015 book
Econometrics of Risk
Van-Nam Huynh, Vladik Kreinovich, Songsak Sriboonchitta, Komsan Suriya
2015 conf
IUKM
Van-Doan Nguyen, Van-Nam Huynh
2015 ed.
IUKM
Van-Nam Huynh, Masahiro Inuiguchi, Thierry Denoeux
2015 J jnl
Data Knowl. Eng.
Van-Nam Huynh, Son Bao Pham
2015 ed.
KSE
Viet-Ha Nguyen, Anh-Cuong Le, Van-Nam Huynh
2015 ch.
Econometrics of Risk
Vu-Linh Nguyen, Van-Nam Huynh
2014 B conf
PRICAI
Van-Doan Nguyen, Van-Nam Huynh
2014 J jnl
Int. J. Approx. Reason.
Cat-Ho Nguyen, Van-Nam Huynh, Witold Pedrycz
2014 conf
IEEM
Wentao Guo, Van-Nam Huynh
2014 conf
KSE
Tran-Thai Dang, Nguyen Thi Xuan Huong, Anh-Cuong Le, Van-Nam Huynh
2014 J jnl
Decis. Sci.
Hongbin Yan, Tieju Ma, Van-Nam Huynh
2014 ed.
KSE (2)
Van-Nam Huynh, Thierry Denoeux, Dang Hung Tran, Anh-Cuong Le, Son Bao Pham
2014 ed.
KSE (1)
Van-Nam Huynh, Thierry Denoeux, Dang Hung Tran, Anh-Cuong Le, Son Bao Pham
2014 ed.
TES
Van-Nam Huynh, Vladik Kreinovich, Songsak Sriboonchitta
2013 conf
IUKM
Hongbin Yan, Tieju Ma, Van-Nam Huynh
2013 ed.
IUKM
Zengchang Qin, Van-Nam Huynh
2013 J jnl
Inf. Sci.
Hongbin Yan, Van-Nam Huynh, Tieju Ma, Yoshiteru Nakamori
2013 conf
KSE (2)
Quang-Hung Le, Duy Cuong Nguyen, Duc-Hong Pham, Anh-Cuong Le, Van-Nam Huynh
2013 conf
RIVF
Quang-Hung Le, Anh-Cuong Le, Van-Nam Huynh
2013 J jnl
Int. J. Approx. Reason.
Van-Nam Huynh, Vladik Kreinovich
2012 J jnl
Ann. Oper. Res.
Hongbin Yan, Van-Nam Huynh, Yoshiteru Nakamori
2012 J jnl
Int. J. Reason. based Intell. Syst.
Van-Nam Huynh, Sadaaki Miyamoto, Yoshiteru Nakamori
2012 J jnl
Ann. Oper. Res.
Van-Nam Huynh, Jonathan Lawry, Yoshiteru Nakamori
2011 conf
IUKM
Hongbin Yan, Tieju Ma, Yoshiteru Nakamori, Van-Nam Huynh
2011 J jnl
IEEE Trans. Engineering Management
Van-Nam Huynh, Yoshiteru Nakamori
2011 J jnl
Expert Syst. Appl.
Hongbin Yan, Van-Nam Huynh, Yoshiteru Nakamori
2011 C conf
KSEM
Van-Nam Huynh, Hongbin Yan, Mina Ryoke, Yoshiteru Nakamori
2011 ed.
IUKM
Yongchuan Tang, Van-Nam Huynh, Jonathan Lawry
2011 J jnl
Expert Syst. Appl.
Hongbin Yan, Van-Nam Huynh, Yoshiteru Nakamori, Tetsuya Murai
2010 C conf
KSEM
Van-Nam Huynh, Yoshiteru Nakamori, Hongbin Yan
2010 J jnl
IEEE Trans. Engineering Management
Van-Nam Huynh, Hongbin Yan, Yoshiteru Nakamori
2010 J jnl
Comput. Speech Lang.
Van-Nam Huynh, Nguyen Thanh Tri, Cuong Anh Le
2010 conf
IUM
Tru Hoang Cao, Van-Nam Huynh
2010 ed.
IUM
Van-Nam Huynh, Yoshiteru Nakamori, Jonathan Lawry, Masahiro Inuiguchi
2010 conf
IUM
Hongbin Yan, Van-Nam Huynh, Yoshiteru Nakamori
2010 J jnl
IEEE Trans. Syst. Man Cybern. Part A
Van-Nam Huynh, Yoshiteru Nakamori
2009 B conf
SMC
Van-Nam Huynh, Hongbin Yan, Yoshiteru Nakamori
2009 B conf
SMC
Akio Hiramatsu, Van-Nam Huynh, Yoshiteru Nakamori
2009 B conf
MDAI
Van-Nam Huynh
2009 J jnl
Int. J. Approx. Reason.
Van-Nam Huynh, Vladik Kreinovich
2009 conf
ISMVL
Van-Nam Huynh, Yoshiteru Nakamori, Chenyi Hu, Vladik Kreinovich
2009 B conf
MDAI
Hongbin Yan, Van-Nam Huynh, Yoshiteru Nakamori
2008 J jnl
J. Adv. Comput. Intell. Intell. Informatics
Akio Hiramatsu, Van-Nam Huynh, Yoshiteru Nakamori
2008 J jnl
IEEE Trans. Fuzzy Syst.
Van-Nam Huynh, Yoshiteru Nakamori, Jonathan Lawry
2008 ch.
Interval / Probabilistic Uncertainty and Non-Classical Logics
Hongbin Yan, Van-Nam Huynh, Yoshiteru Nakamori
2008 ch.
Fuzzy Sets and Their Extensions: Representation, Aggregation and Models
Van-Nam Huynh, Tu Bao Ho, Yoshiteru Nakamori
2008 ch.
Intelligent Decision Making: An AI-Based Approach
Van-Nam Huynh, Yoshiteru Nakamori, Tetsuya Murai
2008 book
Van-Nam Huynh, Yoshiteru Nakamori, Hiroakira Ono, Jonathan Lawry, Vladik Kreinovich, Hung T. Nguyen
2008 J jnl
Inf. Sci.
Hongbin Yan, Van-Nam Huynh, Tetsuya Murai, Yoshiteru Nakamori
2008 ch.
Interval / Probabilistic Uncertainty and Non-Classical Logics
Mina Ryoke, Yoshiteru Nakamori, Van-Nam Huynh
2008 J jnl
Comput. Speech Lang.
Anh-Cuong Le, Akira Shimazu, Van-Nam Huynh, Minh Le Nguyen
2008 B conf
SMC
Van-Nam Huynh, Yoshiteru Nakamori
2007 B conf
MDAI
Akio Hiramatsu, Van-Nam Huynh, Yoshiteru Nakamori
2007 J jnl
Fundam. Informaticae
Van-Nam Huynh, Yoshiteru Nakamori, Tetsuya Murai
2007 J jnl
Data Knowl. Eng.
Cuong Anh Le, Van-Nam Huynh, Akira Shimazu, Yoshiteru Nakamori
2007 J jnl
Fuzzy Optim. Decis. Mak.
Van-Nam Huynh, Yoshiteru Nakamori, Mina Ryoke, Tu Bao Ho
2007 B conf
SMC
Van-Nam Huynh, Yoshiteru Nakamori
2007 ch.
Creative Environments
Wieslaw Traczyk, Andrzej P. Wierzbicki, Van-Nam Huynh
2007 Misc conf
PPAM
Van-Nam Huynh, Vladik Kreinovich, Yoshiteru Nakamori, Hung T. Nguyen
2006 B conf
FUZZ-IEEE
Van-Nam Huynh, Yoshiteru Nakamori, Mina Ryoke, Tu-Bao Ho
2006 J jnl
IEEE Trans. Syst. Man Cybern. Part A
Van-Nam Huynh, Yoshiteru Nakamori, Tu Bao Ho, Tetsuya Murai
2006 conf
RSCTC
Van-Nam Huynh, Yoshiteru Nakamori, Tu Bao Ho
2006 conf
RIVF
Anh-Cuong Le, Van-Nam Huynh, Akira Shimazu, Hieu-Chi Dam
2006 J jnl
Inf. Media Technol.
Anh-Cuong Le, Akira Shimazu, Van-Nam Huynh
2005 J jnl
Environ. Model. Softw.
Sayoko Kawano, Van-Nam Huynh, Mina Ryoke, Yoshiteru Nakamori
2005 J jnl
Inf. Sci.
Van-Nam Huynh, Yoshiteru Nakamori
2005 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Van-Nam Huynh, Yoshiteru Nakamori
2005 conf
MLDM
Cuong Anh Le, Van-Nam Huynh, Akira Shimazu
2005 conf
RSFDGrC (1)
Van-Nam Huynh, Tetsuya Murai, Tu Bao Ho, Yoshiteru Nakamori
2005 conf
RSFDGrC (1)
Cuong Anh Le, Van-Nam Huynh, Hieu-Chi Dam, Akira Shimazu
2005 B conf
PAKDD
Cuong Anh Le, Van-Nam Huynh, Akira Shimazu
2005 Misc conf
GrC
Van-Nam Huynh, Cat Ho Nguyen, Yoshiteru Nakamori
2005 conf
HICSS
Van-Nam Huynh, Yoshiteru Nakamori
2004 B conf
MDAI
Van-Nam Huynh, Yoshiteru Nakamori
2004 J jnl
New Gener. Comput.
Shigemasa Suganuma, Van-Nam Huynh, Yoshiteru Nakamori, Shouyang Wang
2004 conf
FoIKS
Van-Nam Huynh, Yoshiteru Nakamori, Tetsuya Murai, Tu Bao Ho
2004 J jnl
Inf. Sci.
Van-Nam Huynh, Yoshiteru Nakamori, Tu Bao Ho, Germano Resconi
2004 B conf
FUZZ-IEEE
Van-Nam Huynh, Yoshiteru Nakamori
2004 B conf
FUZZ-IEEE
Tetsuya Murai, Yasuo Kudo, Van-Nam Huynh, Akira Tanaka, Mineichi Kudo
2004 B conf
FUZZ-IEEE
Van-Nam Huynh, Yoshiteru Nakamori
2004 conf
ASIAN
Van-Nam Huynh, Yoshiteru Nakamori, Tu Bao Ho
2003 C conf
IFSA
Van-Nam Huynh, Mina Ryoke, Yoshiteru Nakamori, Tu Bao Ho
2002 conf
FoIKS
Van-Nam Huynh, Yoshiteru Nakamori, Tu Bao Ho, Germano Resconi
2002 J jnl
Int. J. Approx. Reason.
Van-Nam Huynh, Tu Bao Ho, Yoshiteru Nakamori
2002 J jnl
Fuzzy Sets Syst.
Nguyen Cat Ho, Van-Nam Huynh
1999 J jnl
Int. J. Uncertain. Fuzziness Knowl. Based Syst.
Cat Ho Nguyen, Dinh-Khang Tran, Van-Nam Huynh, Hai-Chau Nguyen
redb/extractors/decompiler/DecompileAPK.py
← Index redb/extractors/decompiler/DecompileAPK.py python
"""APK Code Analysis Extractor.

Decompiles and disassembles APK DEX bytecode at the method level,
producing per-method content and reference records analogous to
the Binary Ninja code_binja_* tables.

Uses androguard + JADX + apktool to replicate Binary Ninja analysis
depth for Android applications.
"""

import gc
import hashlib
import inspect
import logging
import os
import threading
import time
from datetime import datetime, timezone
from typing import Any, Dict, Optional

from redb.extractors.decompiler.apk.analyzer import APKCodeAnalyzer
from redb.extractors.enum import Tag
from redb.extractors.extractor import Extractor


class DecompileAPK(Extractor):
    """APK code analysis extractor — produces multi-table ClickHouse export.

    Follows the same pattern as DecompileBinja for consistency.
    """

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        known_benign=False,
        known_malicious=False,
        filetype=None,
        decompile_modules=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            known_benign=known_benign,
            known_malicious=known_malicious,
        )
        self.log.debug(inspect.currentframe().f_code.co_name)
        self.analysis_results = None
        self.analyzer = None
        self.filetype = filetype or "apk"
        self.decompile_modules = decompile_modules or {"all"}

        try:
            self.APK_DECOMPILE_TIMEOUT = int(
                os.getenv("APK_DECOMPILE_TIMEOUT", "600")
            )
        except ValueError:
            self.log.warning(
                "Invalid APK_DECOMPILE_TIMEOUT value, using default of 600 seconds"
            )
            self.APK_DECOMPILE_TIMEOUT = 600

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.cleanup_run()

    def calculate_md5(self, input_str):
        """Calculate MD5 hash of a string."""
        return hashlib.md5(input_str.encode("utf-8")).hexdigest()

    def cleanup_run(self):
        """Clean up after analysis."""
        try:
            if self.analyzer:
                self.analyzer.cleanup()
                self.analyzer = None
            gc.collect()
        except Exception as e:
            self.log.error(f"Error in cleanup: {e}")

    def analyze_apk(self) -> Optional[Dict[str, Any]]:
        """Run APK code analysis and return results."""
        self.log.debug("Starting APK code analysis")
        try:
            self.analyzer = APKCodeAnalyzer(
                filepath=self.filepath,
                timeout=self.APK_DECOMPILE_TIMEOUT,
                log=self.log,
                decompile_modules=self.decompile_modules,
            )
            results = self.analyzer.extract()
            return results
        except Exception as e:
            self.log.error(f"Error in APK code analysis: {e}")
            import traceback
            self.log.error(f"Traceback: {traceback.format_exc()}")
            return None
        finally:
            self.cleanup_run()

    def extract(self):
        """Extract and process all analysis results.

        Uses daemon thread with timeout, same pattern as DecompileBinja.
        """
        self.log.debug(inspect.currentframe().f_code.co_name)

        extraction_completed = False
        extraction_result = False
        extraction_error = None

        def do_extraction():
            nonlocal extraction_completed, extraction_result, extraction_error
            try:
                results = self.analyze_apk()
                if not results:
                    extraction_result = False
                else:
                    self.analysis_results = results
                    self.analysis_results["sha256"] = self.sha256
                    self.analysis_results["sha1"] = self.sha1
                    self.analysis_results["md5"] = self.md5
                    extraction_result = True
            except Exception as e:
                extraction_error = e
                extraction_result = False
            finally:
                extraction_completed = True

        extraction_thread = threading.Thread(target=do_extraction)
        extraction_thread.daemon = True
        extraction_thread.start()

        start_time = time.time()
        while (
            not extraction_completed
            and (time.time() - start_time) < self.APK_DECOMPILE_TIMEOUT
        ):
            time.sleep(1)

        if not extraction_completed:
            self.log.error(
                f"APK extraction timed out after {self.APK_DECOMPILE_TIMEOUT} seconds"
            )
            self.cleanup_run()
            return None

        if extraction_error:
            self.log.error(f"Error in APK extraction: {extraction_error}")
            return None

        return self.analysis_results if extraction_result else None

    def prepare_export_data(self, exporter_type: str) -> Any:
        """Prepare data for database export."""
        self.log.debug(inspect.currentframe().f_code.co_name)
        if not self.analysis_results:
            return None

        if exporter_type == "ClickHouseExporter":
            now = datetime.now(timezone.utc)
            export = {"multi_table": True}

            # Table 1: Decompiled method content
            if self.analysis_results.get("decompiled_content"):
                export["decompiled_content"] = {
                    "table": "code_apk_decompiled_methods_content",
                    "data": [
                        [
                            f["decompiled_method_hash"],
                            f["decompiled_method"],
                            f.get("decompiled_method_type", "UNKNOWN"),
                            1 if f.get("decompiled_has_string_encryption") else 0,
                            1 if f.get("decompiled_has_reflection_calls") else 0,
                            1 if f.get("decompiled_excessive_goto_count") else 0,
                            now,
                        ]
                        for f in self.analysis_results["decompiled_content"]
                    ],
                    "column_names": [
                        "decompiled_method_hash",
                        "decompiled_method",
                        "decompiled_method_type",
                        "decompiled_has_string_encryption",
                        "decompiled_has_reflection_calls",
                        "decompiled_excessive_goto_count",
                        "analysis_date",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "String",
                        "Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5)",
                        "UInt8",
                        "UInt8",
                        "UInt8",
                        "DateTime64(3, 'UTC')",
                    ],
                }

            # Table 2: Decompiled method references
            if self.analysis_results.get("decompiled_refs"):
                export["decompiled_refs"] = {
                    "table": "code_apk_decompiled_methods_references",
                    "data": [
                        [
                            self.analysis_results["sha256"],
                            f["decompiled_method_hash"],
                            f.get("smali_method_hash"),
                            f.get("decompiled_class_name", ""),
                            f.get("decompiled_method_name", ""),
                            f.get("decompiled_method_signature", ""),
                            f.get("decompiled_method_prototype", ""),
                            f.get("functions_caller", []),
                            f.get("functions_call", []),
                            now,
                        ]
                        for f in self.analysis_results["decompiled_refs"]
                    ],
                    "column_names": [
                        "sha256",
                        "decompiled_method_hash",
                        "smali_method_hash",
                        "decompiled_class_name",
                        "decompiled_method_name",
                        "decompiled_method_signature",
                        "decompiled_method_prototype",
                        "functions_caller",
                        "functions_call",
                        "analysis_date",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "FixedString(64)",
                        "Nullable(FixedString(64))",
                        "LowCardinality(String)",
                        "LowCardinality(String)",
                        "String",
                        "String",
                        "Array(String)",
                        "Array(String)",
                        "DateTime64(3, 'UTC')",
                    ],
                }

            # Table 3: Smali method content
            if self.analysis_results.get("smali_content"):
                export["smali_content"] = {
                    "table": "code_apk_smali_methods_content",
                    "data": [
                        [
                            f["smali_method_hash"],
                            f["smali_method"],
                            f.get("smali_method_type", "UNKNOWN"),
                            f.get("smali_instructions_count", 0),
                            f.get("smali_register_count", 0),
                            1 if f.get("smali_has_string_encryption") else 0,
                            1 if f.get("smali_has_reflection_calls") else 0,
                            1 if f.get("smali_excessive_goto_count") else 0,
                            f.get("smali_flattened_score", 0.0),
                            f.get("smali_mba_score", 0.0),
                            now,
                        ]
                        for f in self.analysis_results["smali_content"]
                    ],
                    "column_names": [
                        "smali_method_hash",
                        "smali_method",
                        "smali_method_type",
                        "smali_instructions_count",
                        "smali_register_count",
                        "smali_has_string_encryption",
                        "smali_has_reflection_calls",
                        "smali_excessive_goto_count",
                        "smali_flattened_score",
                        "smali_mba_score",
                        "analysis_date",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "String",
                        "Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5)",
                        "UInt32",
                        "UInt16",
                        "UInt8",
                        "UInt8",
                        "UInt8",
                        "Float64",
                        "Float64",
                        "DateTime64(3, 'UTC')",
                    ],
                }

            # Table 4: Smali method references
            if self.analysis_results.get("smali_refs"):
                export["smali_refs"] = {
                    "table": "code_apk_smali_methods_references",
                    "data": [
                        [
                            self.analysis_results["sha256"],
                            f["smali_method_hash"],
                            f.get("decompiled_method_hash"),
                            f.get("smali_class_name", ""),
                            f.get("smali_method_name", ""),
                            f.get("smali_method_signature", ""),
                            now,
                        ]
                        for f in self.analysis_results["smali_refs"]
                    ],
                    "column_names": [
                        "sha256",
                        "smali_method_hash",
                        "decompiled_method_hash",
                        "smali_class_name",
                        "smali_method_name",
                        "smali_method_signature",
                        "analysis_date",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "FixedString(64)",
                        "Nullable(FixedString(64))",
                        "LowCardinality(String)",
                        "LowCardinality(String)",
                        "String",
                        "DateTime64(3, 'UTC')",
                    ],
                }

            # Table 5: Method similarity metrics (content-based fuzzy matching)
            if self.analysis_results.get("similarity_metrics"):
                export["method_similarity_metrics"] = {
                    "table": "code_apk_method_similarity_metrics",
                    "data": [
                        [
                            f["smali_method_hash"],
                            f.get("ssdeep_smali"),
                            f.get("tlsh_smali"),
                            f.get("ssdeep_smali_normalized"),
                            f.get("tlsh_smali_normalized"),
                            f.get("minhash", []),
                            now,
                        ]
                        for f in self.analysis_results["similarity_metrics"]
                    ],
                    "column_names": [
                        "smali_method_hash",
                        "ssdeep_smali",
                        "tlsh_smali",
                        "ssdeep_smali_normalized",
                        "tlsh_smali_normalized",
                        "minhash",
                        "analysis_date",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "Nullable(String)",
                        "Nullable(FixedString(72))",
                        "Nullable(String)",
                        "Nullable(FixedString(72))",
                        "Array(UInt8)",
                        "DateTime64(3, 'UTC')",
                    ],
                }

            # Table 5b: CFG method features (structural/topological)
            if self.analysis_results.get("cfg"):
                export["cfg_methods"] = {
                    "table": "code_apk_cfg_methods",
                    "data": [
                        [
                            cfg["smali_method_hash"],
                            cfg["cfg_topology_hash"],
                            cfg["block_count"],
                            cfg["edge_count"],
                            cfg.get("cfg_instructions_count", 0),
                            cfg.get("call_count", 0),
                            cfg["cyclomatic_complexity"],
                            cfg.get("loop_count", 0),
                            cfg.get("max_depth", 0),
                            cfg.get("max_fan_out", 0),
                            cfg.get("md_index_topdown", 0),
                            cfg.get("md_index_bottomup", 0),
                            cfg.get("prime_product_smali", 0),
                            cfg.get("cfg_feature_tlsh"),
                            cfg.get("wl_minhash", []),
                            cfg.get("bb_features", []),
                            cfg.get("cfg_adjacency", []),
                            now,
                        ]
                        for cfg in self.analysis_results["cfg"]
                        if cfg is not None
                    ],
                    "column_names": [
                        "smali_method_hash",
                        "cfg_topology_hash",
                        "block_count",
                        "edge_count",
                        "cfg_instructions_count",
                        "call_count",
                        "cyclomatic_complexity",
                        "loop_count",
                        "max_depth",
                        "max_fan_out",
                        "md_index_topdown",
                        "md_index_bottomup",
                        "prime_product_smali",
                        "cfg_feature_tlsh",
                        "wl_minhash",
                        "bb_features",
                        "cfg_adjacency",
                        "analysis_date",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "FixedString(16)",
                        "UInt16",
                        "UInt16",
                        "UInt32",
                        "UInt16",
                        "UInt16",
                        "UInt16",
                        "UInt16",
                        "UInt16",
                        "UInt64",
                        "UInt64",
                        "UInt64",
                        "Nullable(FixedString(72))",
                        "Array(UInt8)",
                        "Array(Array(UInt16))",
                        "Array(UInt32)",
                        "DateTime64(3, 'UTC')",
                    ],
                }

            # Table 6: Strings — reuse code_binja_strings_raw for cross-format correlation
            # DEX strings are MUTF-8; string_raw = string since no encoding difference
            if self.analysis_results.get("strings"):
                export["strings_raw"] = {
                    "table": "code_binja_strings_raw",
                    "data": [
                        [
                            self.analysis_results["sha256"],
                            s["string"],
                            s["string"],  # string_raw = string (MUTF-8 decoded to UTF-8)
                            s.get("string_encoding", "UTF8"),
                            s.get("string_offset", 0),
                            s.get("string_length", len(s["string"])),
                            s.get("string_length", len(s["string"])),  # string_raw_length = string_length
                            s.get("string_entropy", 0.0),
                        ]
                        for s in self.analysis_results["strings"]
                    ],
                    "column_names": [
                        "sha256",
                        "string",
                        "string_raw",
                        "string_encoding",
                        "string_offset",
                        "string_length",
                        "string_raw_length",
                        "string_entropy",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "String",
                        "String",
                        "LowCardinality(String)",
                        "UInt64",
                        "UInt32",
                        "UInt32",
                        "Float32",
                    ],
                }

            # Table 7: Analysis errors
            if self.analysis_results.get("analysis_errors"):
                export["analysis_errors"] = {
                    "table": "code_apk_analysis_errors",
                    "data": [
                        [
                            self.analysis_results["sha256"],
                            f.get("class_name"),
                            f.get("method_name"),
                            f.get("error_location", "unknown"),
                            f.get("error_message", ""),
                            f.get("error_type", "unknown"),
                            self.calculate_md5(
                                f"{f.get('error_message', '')}"
                                f"{f.get('class_name', '')}"
                                f"{f.get('method_name', '')}"
                                f"{f.get('error_location', 'unknown')}"
                            ),
                            "new",
                            now,
                        ]
                        for f in self.analysis_results["analysis_errors"]
                    ],
                    "column_names": [
                        "sha256",
                        "class_name",
                        "method_name",
                        "error_location",
                        "error_message",
                        "error_type",
                        "error_hash",
                        "status",
                        "analysis_date",
                    ],
                    "column_type_names": [
                        "FixedString(64)",
                        "Nullable(String)",
                        "Nullable(String)",
                        "LowCardinality(String)",
                        "Nullable(String)",
                        "Nullable(String)",
                        "FixedString(32)",
                        "Enum8('new'=1, 'investigating'=2, 'fixed'=3, 'wontfix'=4)",
                        "DateTime64(3, 'UTC')",
                    ],
                }

            return export

        return None

    def tag(self) -> str:
        """Return the tag for this extractor."""
        return Tag.APK_DECOMPILED.value

    def get_clickhouse_table(self) -> str:
        """Not used directly as we're handling multiple tables."""
        pass