{"id":13746426,"url":"https://github.com/alexhude/friend","last_synced_at":"2025-04-04T20:11:38.777Z","repository":{"id":48444918,"uuid":"74572844","full_name":"alexhude/FRIEND","owner":"alexhude","description":"Flexible Register/Instruction Extender aNd Documentation","archived":false,"fork":false,"pushed_at":"2022-09-27T10:47:59.000Z","size":14585,"stargazers_count":554,"open_issues_count":2,"forks_count":70,"subscribers_count":41,"default_branch":"master","last_synced_at":"2025-03-28T19:08:41.858Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexhude.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}},"created_at":"2016-11-23T12:04:15.000Z","updated_at":"2025-03-24T03:17:28.000Z","dependencies_parsed_at":"2023-01-18T20:02:08.965Z","dependency_job_id":null,"html_url":"https://github.com/alexhude/FRIEND","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/alexhude%2FFRIEND","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexhude%2FFRIEND/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexhude%2FFRIEND/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexhude%2FFRIEND/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexhude","download_url":"https://codeload.github.com/alexhude/FRIEND/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242678,"owners_count":20907134,"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-03T06:00:53.432Z","updated_at":"2025-04-04T20:11:38.755Z","avatar_url":"https://github.com/alexhude.png","language":"C++","funding_links":[],"categories":["使用","\u003ca id=\"fcf75a0881617d1f684bc8b359c684d7\"\u003e\u003c/a\u003e效率\u0026\u0026导航\u0026\u0026快速访问\u0026\u0026图形\u0026\u0026图像\u0026\u0026可视化"],"sub_categories":["\u003ca id=\"fcf75a0881617d1f684bc8b359c684d7\"\u003e\u003c/a\u003e效率\u0026\u0026导航\u0026\u0026快速访问\u0026\u0026图形\u0026\u0026图像\u0026\u0026可视化","\u003ca id=\"c5b120e1779b928d860ad64ff8d23264\"\u003e\u003c/a\u003e其他"],"readme":"# FRIEND\n\n**F**lexible **R**egister/**I**nstruction **E**xtender a**N**d **D**ocumentation\n\n## Features\n\nFRIEND is an IDA plugin created to improve disassembly and bring register/instruction documentation right into IDA View.\n\n### 1. Improved processor modules using third party libraries (like Capstone)   \n\n![](./Resources/screenshots/proc_ext.png)\n\n### 2. Hints for instructions and registers in IDA View and Decompiler View   \n\n![](./Resources/screenshots/reg_ins_hints.png)\n\n### 3. Ability to show external reference for highlighted item in a browser    \n\n![](./Resources/screenshots/external_doc.png)\n\n### 4. Function Summary in IDA View and Decompiler View   \n\n![](./Resources/screenshots/summary.png)\n\n### 5. Ability to pick only features you are interested in and save setting in IDB\n\n![](./Resources/screenshots/settings.png)\n\nNote: it may be confusing if there's only one element group, you still need to\nclick on it to enable the features.\n\n## How to build\n\n### Preparing the build environment\n\nTo build the IDA plugin, there are few dependencies to satisfy:\n\n* [CMake](https://cmake.org/download/) 3.3 or higher\n* GCC or Clang on Linux/macOS. On Windows, use the\n  Visual Studio 2015.\n* Git\n* IDA SDK (unpack into ``idasdk``)\n* Hex-Rays SDK (optional, copy to ``hexrays_sdk``)\n\nUnzip the contents of the IDA SDK into `idasdk`, and copy the Hex-Rays SDK to hexrays_sdk (use `-DUSE_HEXRAYS=OFF` with cmake to build without HexRays support). On Linux or MacOS, one can use the following commands:\n\n```sh\n$ unzip /path/to/idasdkXX.zip -d idasdk\n$ mv idasdk/idasdkXX/* idasdk\n$ rm -r idasdk/idasdkXX\n$ cp -r /path/to/ida/plugins/hexrays_sdk hexrays_sdk\n```\n\n### CMake options\n\n`USE_HEXRAYS=OFF` - to build without HexRays decompiler SDK (`ON` by default)  \n`USE_IDA6_SDK=ON` - to build against IDA 6.x SDK (`OFF` by default)\n\n### Linux\n\nUse ``cmake`` to prepare the build environment and run ``make`` to build the plugins:\n\n```sh\n$ mkdir _build\n$ cd _build\n$ cmake [-DUSE_HEXRAYS=OFF] [-DUSE_IDA6_SDK=ON] ..\n$ make\n```\n\n### MacOS\n\nUse ``cmake`` to prepare the build environment and run ``make`` to build the plugins:\n\n```sh\n$ mkdir _build\n$ cd _build\n$ cmake [-DUSE_HEXRAYS=OFF] [-DUSE_IDA6_SDK=ON] ..\n$ make\n```\n\nIf you prefer to have an Xcode project and build everything from there, run the following commands instead:\n\n```sh\n$ mkdir _build\n$ cd _build\n$ cmake -G Xcode [-DUSE_HEXRAYS=OFF] [-DUSE_IDA6_SDK=ON] ..\n$ open FRIEND.xcodeproj # or simply run xcodebuild\n```\n\n### Windows\n\nUse ``cmake`` to prepare the build environment and run ``make`` to build the plugins:\n\n```sh\n$ mkdir _build\n$ cd _build\n$ \"%VS140COMNTOOLS%\\..\\..\\VC\\vcvarsall.bat\" x86\n$ cmake -G \"Visual Studio 14 2015\" [-DUSE_HEXRAYS=OFF] [-DUSE_IDA6_SDK=ON] ..\n$ msbuild FRIEND.sln /p:Configuration=Release\n```\n\nx64 build instructions (tested for IDA Pro 7.0 on Windows 10 x64):\n```sh\nmkdir _build64\ncd _build64\n\"%VS140COMNTOOLS%\\..\\..\\VC\\vcvarsall.bat\" x64\ncmake -G \"Visual Studio 14 2015 Win64\" [-DUSE_HEXRAYS=OFF] [-DUSE_IDA6_SDK=ON] ..\nmsbuild FRIEND.sln /p:Configuration=Release /p:Platform=X64 /m\n```\n\n## Installation\n\nCopy the built binaries into the IDA Pro plugins directory. These are the default paths:\n\nOS      | Plugin path\n--------|-------------------------------------------\nLinux   | `/opt/ida-X.X/plugins`\nmacOS   | `/Applications/IDA Pro X.X/idabin/plugins`\nWindows | `%ProgramFiles(x86)%\\IDA 6.X\\plugins` or `%ProgramFiles%\\IDA 7.X\\plugins`\n\n## Configuration files\n\nThe content of hints is discussed [here](https://github.com/alexhude/FRIEND/issues/1)\n\nFRIEND configuration file has following structure:\n\n```\n\u003c?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?\u003e\n\u003cdocumentation\u003e\n\t\u003cdocument id=\"pdf_id\" name=\"ARM Architecture Reference Manual\" version=\"A.k\"\u003e\n\t\t\u003cpath\u003e/path/to/your/pdf/or/link\u003c/path\u003e\n\t\u003c/document\u003e\n\t\u003celements\u003e\n\t\t\u003cgroup type=\"reg\" name=\"Group Name\"\u003e\n\t\t\t\u003chint page=\"1\" header=\"Element Header\" doc_id=\"pdf_id\" token=\"R0\"\u003einfo\u003c/\u003e\n\t\t\t...\n\t\t\u003c/group\u003e\n\t\t\u003cgroup type=\"ins\" name=\"Group Name\"\u003e\n\t\t\t\u003chint page=\"2\" header=\"Element Header\" doc_id=\"pdf_id\" token=\"MOV\"\u003einfo\u003c/\u003e\n\t\t\t...\n\t\t\u003c/group\u003e\n\t\t...\n\t\u003c/elements\u003e\n\u003c/documentation\u003e\n```\n\nPlease note that you have to put your own \\\u003cpath\\\u003e to pdf file to be able to use external documentation in a browser.\n\nYou can use a local file too.  Assuming your pdf is in `/Users/foo/doc/doc.pdf`, just\nput that after `\u003cpath\u003e`.  Do not add `file://` as it will be prepended later.\n\n## Hint Editor\n\nTo make contribution to this project easier, there is a simple config editor.  \n![](./Resources/screenshots/hint_editor.png)\n\n__NOTE:__ It can only be built on MacOS with Xcode 8 or higher. Other systems are not supported.\n\nUse ``cmake`` to generate Xcode project.\n\n```sh\n$ cd HintEditor/HintEditor/\n$ mkdir _build\n$ cd _build\n$ cmake -G Xcode ..\n$ xcodebuild\n```\n\nLaunch the application bundle with ``open``:\n\n```\n$ open Debug/HintEditor.app\n```\n\n## Dependencies\n\nFRIEND requires:  \n- [IDA SDK](https://www.hex-rays.com/products/ida/support/download.shtml)   \n- [Capstone](https://github.com/aquynh/capstone) (built with Patches/capstone.diff)  \n- [pugixml](https://github.com/zeux/pugixml)\n\nHint Editor requires:  \n- [AEXML](https://github.com/tadija/AEXML) (built with Patches/aexml.diff)  \n\n## Credits\n\n@ **in7egral, mbazaliy** for bug reports and all kind of support    \n@ __qwertyoruiopz, iH8sn0w, Morpheus\\_\\_\\_\\_\\_\\_, xerub, msolnik, marcograss, pr0x13, \\_argp, oleavr, brinlyau__ and other gang for inspiration  \n@ __\\_kamino\\___ for porting project to Windows and Linux  \n@ __williballenthin__ for the idea of function summary\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexhude%2Ffriend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexhude%2Ffriend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexhude%2Ffriend/lists"}