{"id":18760653,"url":"https://github.com/invictus1306/functrace","last_synced_at":"2025-04-13T03:31:12.851Z","repository":{"id":215845601,"uuid":"163432209","full_name":"invictus1306/functrace","owner":"invictus1306","description":"A function tracer","archived":false,"fork":false,"pushed_at":"2019-06-04T19:31:45.000Z","size":8321,"stargazers_count":91,"open_issues_count":0,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-26T21:12:20.949Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/invictus1306.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-12-28T17:01:49.000Z","updated_at":"2025-01-06T01:55:37.000Z","dependencies_parsed_at":"2024-01-21T20:58:12.296Z","dependency_job_id":null,"html_url":"https://github.com/invictus1306/functrace","commit_stats":null,"previous_names":["invictus1306/functrace"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invictus1306%2Ffunctrace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invictus1306%2Ffunctrace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invictus1306%2Ffunctrace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invictus1306%2Ffunctrace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/invictus1306","download_url":"https://codeload.github.com/invictus1306/functrace/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248659623,"owners_count":21141150,"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-11-07T18:13:27.088Z","updated_at":"2025-04-13T03:31:12.419Z","avatar_url":"https://github.com/invictus1306.png","language":"C++","readme":"# functrace - A function tracer\r\n\r\n*functrace* is a tool that helps to analyze a binary file with dynamic instrumentation using *DynamoRIO* (\u003chttp://dynamorio.org/\u003e).\r\n\r\nThese are some implemented features (based on DynamoRIO):\r\n\r\n- [ ] disassemble all the executed code\r\n- [ ] disassemble a specific function (dump if these are addresses)\r\n- [ ] get arguments of a specific function (dump if these are addresses)\r\n- [ ] get return value of a specific function (dump if this is an address)\r\n- [ ] monitors application signals\r\n- [ ] generate a report file\r\n- [ ] *ghidra*(\u003chttps://ghidra-sre.org/\u003e) coverage script (based on the functrace report file)\r\n\r\n## Setup\r\n\r\n```shell\r\n$ wget https://github.com/DynamoRIO/dynamorio/releases/download/release_7_0_0_rc1/DynamoRIO-Linux-7.0.0-RC1.tar.gz\r\n$ tar xvzf DynamoRIO-Linux-7.0.0-RC1.tar.gz\r\n```\r\nOR\r\n```shell\r\n$ wget https://github.com/DynamoRIO/dynamorio/releases/download/cronbuild-7.91.18047/DynamoRIO-x86_64-Linux-7.91.18047-0.tar.gz\r\n$ tar xvzf DynamoRIO-x86_64-Linux-7.91.18047-0.tar.gz\r\n```\r\nYou can also clone and compile directly DynamoRIO\r\n\r\n```shell\r\n$ git clone https://github.com/invictus1306/functrace\r\n$ mkdir -p functrace/build\r\n$ cd functrace/build\r\n$ cmake .. -DDynamoRIO_DIR=/full_DR_path/cmake/\r\n$ make -j4\r\n```\r\n## Simple DEMO\r\n\r\n![functrace](https://github.com/invictus1306/functrace/blob/master/images/functrace.gif)\r\n\r\n## Using functrace\r\n\r\n```shell\r\n$ drrun -c libfunctrace.so -report_file report -- target_program [args]\r\n```\r\n\r\n### Options\r\n\r\nThe following *[functrace]*(https://github.com/invictus1306/functrace) options are supported:\r\n\r\n```latex\r\n-disassembly                    -\u003e disassemble all the functions \r\n-disas_func function_name       -\u003e disassemble only the function function_name\t\r\n-wrap_function function_name    -\u003e wrap the function function_name\t\t\t\t\r\n-wrap_function_args num_args    -\u003e number of arguments of the wrapped function\r\n-cbr                            -\u003e remove the bb from the cache (in case of conditional jump)\r\n-report_file file_name          -\u003e report file name (required)\r\n-verbose                        -\u003e verbose\r\n```\r\n\r\n### Simple usage\r\n\r\n#### Option *-verbose*\r\n```shell\r\n$ drrun -c libfunctrace.so -report_file report -verbose -- target_program [args]\r\n```\r\n\r\n#### Option *-disassemby*\r\n```shell\r\n$ drrun -c libfunctrace.so -report_file report -disassembly -- target_program [args]\r\n```\r\n\r\n#### Option *-disas_func*\r\n```shell\r\n$ drrun -c libfunctrace.so -report_file report -disas_func name_function -- target_program [args]\r\n```\r\n\r\n#### Option *-wrap_function* and *-wrap_function_args*\r\n```shell\r\n$ drrun -c libfunctrace.so -report_file report -wrap_function name_function -wrap_function_args num_args -- target_program [args]\r\n```\r\n\r\n#### Option *-cbr*\r\n```shell\r\n$ drrun -c libfunctrace.so -report_file report -cbr -- target_program [args]\r\n```\r\n\r\n### CVE-2018-4013 - Vulnerability Analysis\r\n\r\nA vulnerability on the [LIVE555 RTSP](http://www.live555.com/) server library. This is the [description](https://www.cvedetails.com/cve/CVE-2018-4013/).\r\n\r\n![vulnanalysis](https://github.com/invictus1306/functrace/blob/master/images/CVE-2018-4013.gif)\r\n\r\n## Working enviroment\r\nTested on Ubuntu 16.04.5 LTS 64 bit\r\n\r\n## Future features\r\n* Ghidra plugin\r\n* Visual setup interface\r\n* Store and compare different coverage analysis\r\n* Run DR directy from ghidra\r\n* Add more functionality to functrace\r\n* Support for Android\r\n","funding_links":[],"categories":["Reverse Engineering"],"sub_categories":["Malware Articles and Sources"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvictus1306%2Ffunctrace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finvictus1306%2Ffunctrace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvictus1306%2Ffunctrace/lists"}