{ "info": { "author": "Zardus", "author_email": "zardus@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# idalink\n\nidalink arose of the need to easily use IDA's API for analysis without wanting\nto be stuck in the IDA interface. It's rather hackish still and and we provide\nno warranty of any kind (express or implied), but we are doing our best to fix\nany issues you find. Pull requests are -of course- also encouraged!\n\nidalink works by spawning an IDA CLI session in the background (in a detached\nscreen session), and connects to it using RPyC.\n\n## Requirements\n\nidalink requires the following:\n\n- Python 2 (ida does not support python 3)\n- IDA Pro >= 7.0\n- libssl0.9.8:i386 (for IDA's Python version)\n\nidalink uses:\n- rpyc in your Python environment outside of IDA\n- rpyc in your IDA Python environment.\n\n## Usage\n\nTo use idalink, put it in a place where you can import it and do, in any python\nsession (ie, outside of IDA):\n\n```python\n#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nfrom idalink import IDALink\n\n# We want debug messages for now\nimport logging\nlogging.basicConfig()\nlogging.getLogger('idalink').setLevel('DEBUG')\n\n# Let's do some testing with idalink!\nwith IDALink(\"idat64\", \"./tests/bash\") as ida:\n # use idc\n s = ida.idc.ScreenEA()\n print(\"Default ScreenEA is {:x}\".format(s))\n\n # use idautils\n print(\"All segments\")\n for s in ida.idautils.Segments():\n print(\" - Segment at {:x} is named {}\".format(s, ida.idc.SegName(s)))\n\n # use idaapi\n print(\"First byte for each function\")\n for i, s in enumerate(ida.idautils.Functions()):\n print(\" - Byte at {:x} is {:02x}\".format(s, ida.idaapi.get_byte(s)))\n\n # access IDA memory in a dict way\n print(\"Accessing memory directly\")\n functions = next(ida.idautils.Functions())\n print(\" - Byte at {:x} is {}\".format(s, ida.memory[s]))\n```\n\nAnd that's that. Basically, you get access to the IDA API from outside of IDA.\nGood stuff.\n\n## Issues\n\n- A random port between 40000 and 49999 is chosen for communication, with no\n error-checking for failed IDA startups or if the port is already in use.\n- IDA-backed memory is not really tested, and uses Heads for getting the\n \"mapped\" list, which is slow and incomplete", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zardus/idalink", "keywords": "", "license": "GNU General Public License v3", "maintainer": "rhelmot", "maintainer_email": "audrey@rhelmot.io", "name": "idalink", "package_url": "https://pypi.org/project/idalink/", "platform": "", "project_url": "https://pypi.org/project/idalink/", "project_urls": { "Homepage": "https://github.com/zardus/idalink" }, "release_url": "https://pypi.org/project/idalink/0.12/", "requires_dist": null, "requires_python": "", "summary": "An interface to the insides of IDA!", "version": "0.12" }, "last_serial": 4387806, "releases": { "0.01": [], "0.10": [ { "comment_text": "", "digests": { "md5": "5d61e6c89c6dc610712b966d5769d7d1", "sha256": "d5d625473a02eba3f23409d729e330683273ef390af711eedb98fceaf5ea6f6b" }, "downloads": -1, "filename": "idalink-0.10.tar.gz", "has_sig": false, "md5_digest": "5d61e6c89c6dc610712b966d5769d7d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50905, "upload_time": "2015-05-27T09:50:43", "url": "https://files.pythonhosted.org/packages/cd/47/738209a18b7e13f3420e61a9f415fc1fefd39bde9432a8f8228b5d1f68d9/idalink-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "4482c5a7dd44167c2451a09f12eb0eac", "sha256": "1f745fe7055ca3560187cbc6c855009a2f4a1ae874c10b4c071b0f4eb162314f" }, "downloads": -1, "filename": "idalink-0.11.tar.gz", "has_sig": false, "md5_digest": "4482c5a7dd44167c2451a09f12eb0eac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6219, "upload_time": "2015-08-11T08:29:13", "url": "https://files.pythonhosted.org/packages/db/31/1c26b8c2293ab16934821d36568b8cf855063f2c8bb22e38343745bd9f50/idalink-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "389422a15caf753aa505fc32fca7b95e", "sha256": "1422b19b6581861c9935742598c0731d7cb4edb7288d5f8de8e1843e282ee6cf" }, "downloads": -1, "filename": "idalink-0.12.tar.gz", "has_sig": false, "md5_digest": "389422a15caf753aa505fc32fca7b95e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8130, "upload_time": "2018-10-17T21:32:01", "url": "https://files.pythonhosted.org/packages/e7/e5/6bb8d736fdc29e7d10b40c5992fae4bfe8db30476ff527d38a87eb12446e/idalink-0.12.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "389422a15caf753aa505fc32fca7b95e", "sha256": "1422b19b6581861c9935742598c0731d7cb4edb7288d5f8de8e1843e282ee6cf" }, "downloads": -1, "filename": "idalink-0.12.tar.gz", "has_sig": false, "md5_digest": "389422a15caf753aa505fc32fca7b95e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8130, "upload_time": "2018-10-17T21:32:01", "url": "https://files.pythonhosted.org/packages/e7/e5/6bb8d736fdc29e7d10b40c5992fae4bfe8db30476ff527d38a87eb12446e/idalink-0.12.tar.gz" } ] }