{"id":20120673,"url":"https://github.com/ancat/python-pin","last_synced_at":"2025-05-06T14:33:14.204Z","repository":{"id":19910006,"uuid":"23175571","full_name":"ancat/python-pin","owner":"ancat","description":"Python bindings for pin.","archived":false,"fork":false,"pushed_at":"2015-01-17T18:40:18.000Z","size":472,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-08-07T02:37:36.383Z","etag":null,"topics":["c-plus-plus","pintool","python-pin","reverse-engineering"],"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/ancat.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":"2014-08-21T05:35:52.000Z","updated_at":"2022-03-10T17:55:29.000Z","dependencies_parsed_at":"2022-09-12T18:51:34.556Z","dependency_job_id":null,"html_url":"https://github.com/ancat/python-pin","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ancat%2Fpython-pin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ancat%2Fpython-pin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ancat%2Fpython-pin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ancat%2Fpython-pin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ancat","download_url":"https://codeload.github.com/ancat/python-pin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224510999,"owners_count":17323346,"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":["c-plus-plus","pintool","python-pin","reverse-engineering"],"created_at":"2024-11-13T19:22:09.641Z","updated_at":"2024-11-13T19:22:10.339Z","avatar_url":"https://github.com/ancat.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"python-pin\n==========\n\nPython bindings for pin.\n\n# TODO\n\n1. Finish current sub groups\n2. ~~Split into multiple files and master pin's makefile schema~~\n3. Continue expanding Pin Python's functionality\n4. Read Pythons reference counting information and implement into our Pin tool.\n5. Unit tests! Every change has the potential to break other functionality in unexpected ways :{\n\n# Build Instructions\n\nCopy the entire directory into ~/pin/source/tools\n\nType make \n\nWhen make completes run ../../../pin -t obj-intel64/Python_Pin.so -- /bin/ls and ensure the output is correct\n\nEnjoy!\n\nProtip: `while [ 1 == 1 ]; do inotifywait -e close_write *.cpp *.h; make; done` Leave running in another tmux pane. Whenever any file is modified, the pintool is automatically recompiled. Run `touch *.cpp *.h` and everything will be recompiled.\n\n# Using the Extension\nMost of pin's functionality is exposed via the `pin` module, internal to the pintool. Its implementation is very similar to the way gdb handles python extensions.\n\nTo run a specific python script, for example the strace script:\n`../../../pin -t obj-intel64/Python_Pin.so -m examples/strace.py -- /bin/ls`\n\n\n# Current Issues\n\n1. ~~Modifying the Makefile is a huge pain. It needs to be made easier for distribution.~~\n    - ~~This means everything has to be in the single, huge cpp file for now. And it has to be named MyPinTool.cpp.~~\n    \n2. Some Python modules are compiled as shared objects without symbols. These modules can't be loaded from within the python pin tool. (solution is to either not use those modules, or have a custom build of python alongside the pintool)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fancat%2Fpython-pin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fancat%2Fpython-pin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fancat%2Fpython-pin/lists"}