{"id":13843126,"url":"https://github.com/LeadroyaL/dex-finder","last_synced_at":"2025-07-11T17:33:35.178Z","repository":{"id":119220861,"uuid":"194510195","full_name":"LeadroyaL/dex-finder","owner":"LeadroyaL","description":"快速寻找一个类所在 dex 的小工具","archived":false,"fork":false,"pushed_at":"2019-06-30T12:02:39.000Z","size":15,"stargazers_count":175,"open_issues_count":1,"forks_count":29,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-11-12T18:07:43.277Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LeadroyaL.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-06-30T11:51:59.000Z","updated_at":"2024-11-06T20:43:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"2aa12524-a9ee-4617-b535-bc97a87dc71d","html_url":"https://github.com/LeadroyaL/dex-finder","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeadroyaL%2Fdex-finder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeadroyaL%2Fdex-finder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeadroyaL%2Fdex-finder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeadroyaL%2Fdex-finder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LeadroyaL","download_url":"https://codeload.github.com/LeadroyaL/dex-finder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225745450,"owners_count":17517644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T17:01:55.710Z","updated_at":"2024-11-21T14:30:44.341Z","avatar_url":"https://github.com/LeadroyaL.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# dex-finder\n\n## 简介\n\n`dex-finder` 是一个基于 dexlib2 实现的简单脚本，用于确认一个类所在的 dex 的位置，设计时是为了以下两种情况使用的：\n\n1. 现在的 apk 大部分都已经是 multi-dex 格式了，使用 JEB 打开整个 apk 很慢，使用 `dex-finder` 可以快速定位到目标\n\n2. 应用程序使用的类，可能来自动态加载的其他 dex，我们只需要把整个目录都拖出来，逐个文件运行一遍就可以找到它 \n\n站在巨人的肩膀上，作为一个小工具，还是比较好用的。\n\n## 下载地址\n\n[https://github.com/LeadroyaL/dex-finder/releases/](https://github.com/LeadroyaL/dex-finder/releases/)\n\n## 用法\n```\nusage: java -jar [-d] [-r] [-us] [-f file/directory] [-c classname]\n -c,--class \u003carg\u003e   Class you want to find.\n -d,--debug         Enable debug log.\n -f,--file \u003carg\u003e    File or directory to be scanned.\n -h,--help          Show help.\n -r,--recursive     Recursive scan files.\n -us,--use-sig      Use class signature. If enable, use Ljava/lang/String; .\njava -jar dex-finder.jar -f demo.apk -c com.example.Activity\njava -jar dex-finder.jar -f classed.dex -c com.example.Activity\njava -jar dex-finder.jar -f /path/unzip_result/ -c com.example.Activity\n```\n\n`-c` 指定想要查的类（可以同时指定多个）\n\n`-f` 指定搜索的文件或文件夹（可以同时指定多个）\n\n    可以是 dex\n    可以是 apk\n    可以是 apk 直接解压后的文件夹\n\n`-r` 如果是文件夹，进行递归搜索\n\n`-us` 使用类的签名。例如：默认情况输入 java.lang.String，开启 use-sig 后，需要输入 Ljava/lang/String;\n\n`-d` 开启详细日志（其实也没多详细） \n\n## 示例\n\n以微博国际版为例，它有两个 dex 文件，无需解压，直接调用，我们随便挑 3 个类\n\n```\n➜  dex-finder java -jar dex-finder-1.0.0.jar -c com.weico.international.activity.MainFragmentActivity -c de.greenrobot.event.EventBus -c com.weico.international.utility.LogUtil -f /tmp/weico-no-ads/weico.apk -r \n[main] INFO com.leadroyal.dex.CommandParser - parse command success\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/weico-no-ads/weico.apk-\u003eclasses.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/weico-no-ads/weico.apk-\u003eclasses2.dex finished\nThis is report!\n====Known classes====\nLde/greenrobot/event/EventBus; found @ /tmp/weico-no-ads/weico.apk-\u003eclasses2.dex\nLcom/weico/international/activity/MainFragmentActivity; found @ /tmp/weico-no-ads/weico.apk-\u003eclasses2.dex\nLcom/weico/international/utility/LogUtil; found @ /tmp/weico-no-ads/weico.apk-\u003eclasses.dex\n====Unknown classes====\n```\n\n再找一个大型的 APP，例如淘宝的 apk，它会动态加载 `libsgmain.so` 这个 dex 文件\n\n使用指定单独 apk 的方式，有一个找不到的类\n\n```\n➜  dex-finder java -jar dex-finder-1.0.0.jar -c c8.STqg -c com.alibaba.wireless.security.framework.IRouterComponent -c com.alibaba.wireless.security.mainplugin.SecurityGuardMainPlugin -f /tmp/tb.apk -r\n[main] INFO com.leadroyal.dex.CommandParser - parse command success\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses2.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses3.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses4.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses5.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses6.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses7.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses8.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses9.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses10.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses11.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses12.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses13.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tb.apk-\u003eclasses14.dex finished\nThis is report!\n====Known classes====\nLcom/alibaba/wireless/security/framework/IRouterComponent; found @ /tmp/tb.apk-\u003eclasses.dex\nLc8/STqg; found @ /tmp/tb.apk-\u003eclasses.dex\n====Unknown classes====\nLcom/alibaba/wireless/security/mainplugin/SecurityGuardMainPlugin;\n```\n\n解压后，指定目录，全部都找到了\n\n```\n➜  dex-finder java -jar dex-finder-1.0.0.jar -c c8.STqg -c com.alibaba.wireless.security.framework.IRouterComponent -c com.alibaba.wireless.security.mainplugin.SecurityGuardMainPlugin -f /tmp/tt -r\n[main] INFO com.leadroyal.dex.CommandParser - parse command success\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes9.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes8.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes11.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes10.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes12.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes3.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes2.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes13.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes6.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes7.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/classes14.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/lib/armeabi/libsgmisc.so-\u003eclasses.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/lib/armeabi/libsgavmp.so-\u003eclasses.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/lib/armeabi/libservicefakedex.so-\u003eclasses.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/lib/armeabi/libsgnocaptcha.so-\u003eclasses.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/lib/armeabi/libpreverify.so finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/lib/armeabi/libsgsecuritybody.so-\u003eclasses.dex finished\n[main] INFO com.leadroyal.dex.ClassFinder - Check /tmp/tt/lib/armeabi/libsgmain.so-\u003eclasses.dex finished\nThis is report!\n====Known classes====\nLcom/alibaba/wireless/security/mainplugin/SecurityGuardMainPlugin; found @ /tmp/tt/lib/armeabi/libsgmain.so-\u003eclasses.dex\nLc8/STqg; found @ /tmp/tt/classes.dex-\u003e./\nLcom/alibaba/wireless/security/framework/IRouterComponent; found @ /tmp/tt/classes.dex-\u003e./\n====Unknown classes====\n```\n\n\n## 编译\n\n```\ngradle build\n```\n\n会在 `build/libs/` 下获得由 springboot 打包过的可独立运行的文件。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLeadroyaL%2Fdex-finder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLeadroyaL%2Fdex-finder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLeadroyaL%2Fdex-finder/lists"}