{"id":18396691,"url":"https://github.com/rob--/dynamic-remote-function-calling","last_synced_at":"2025-04-12T15:06:26.455Z","repository":{"id":83674101,"uuid":"124610349","full_name":"Rob--/dynamic-remote-function-calling","owner":"Rob--","description":"Houses two projects that work together to demonstrate dynamically calling a function in a target process","archived":false,"fork":false,"pushed_at":"2018-03-13T17:25:36.000Z","size":11,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-24T10:35:48.147Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","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/Rob--.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,"publiccode":null,"codemeta":null}},"created_at":"2018-03-10T01:15:54.000Z","updated_at":"2024-02-29T23:56:37.000Z","dependencies_parsed_at":"2023-03-12T19:13:35.020Z","dependency_job_id":null,"html_url":"https://github.com/Rob--/dynamic-remote-function-calling","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rob--%2Fdynamic-remote-function-calling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rob--%2Fdynamic-remote-function-calling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rob--%2Fdynamic-remote-function-calling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rob--%2Fdynamic-remote-function-calling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rob--","download_url":"https://codeload.github.com/Rob--/dynamic-remote-function-calling/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239080898,"owners_count":19578230,"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-06T02:14:34.753Z","updated_at":"2025-02-16T02:31:27.866Z","avatar_url":"https://github.com/Rob--.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dynamic-remote-function-calling\n\nThe purpose of this repo is to house two projects that work together to demonstrate dynamically calling a function in a target process given only it's address.\n\n---\n\n#### Target Process\nThis project contains the function that will be called remotely from the \"External Caller\" project. When run, this program will output the relative address of the function that will be called from the base of the process. This offset is then defined inside of \"External Caller\" and is used to calculate the absolute address of the function to call.\n\n#### External Caller\nThis project is the application that will actually generate the shellcode, write it to the target application and execute it.\n\nGiven the function to be called inside of \"Target Process\":\n```cpp\nvoid functionToRemotelyCall(int a, bool b, std::string c);\n```\n\nArguments can be dynamically generated and used to execute the function:\n```cpp\nstd::vector\u003cArg\u003e args = {\n  { T_INT, \u0026a },\n  { T_BOOL, \u0026b },\n  { T_STRING, \u0026c },\n};\n\ncall(pHandle, args, T_VOID, functionAddress);\n```\n\nThe application will calculate the absolute address of the function given it's relative address from the base of the target process.\n\n---\n\n#### Notes\nThis demonstration was made to help [this issue](https://github.com/Rob--/memoryjs/issues/6) from [memoryjs](https://github.com/Rob--/memoryjs).\nBy being able to generate shellcode based on an array of arguments, we can use JavaScript to execute a function.\n\nCurrently strings can be written to the target process but we cannot define the size/length of the string.\n\nCredits to [xetrics](https://github.com/xetrics).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frob--%2Fdynamic-remote-function-calling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frob--%2Fdynamic-remote-function-calling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frob--%2Fdynamic-remote-function-calling/lists"}