This commit is contained in:
Giulio De Pasquale 2018-12-13 18:39:52 +00:00
commit 52e9dc828b
1838 changed files with 363873 additions and 0 deletions

View File

@ -0,0 +1,245 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Architecture &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="index.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Architecture</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/Architecture_c++.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="architecture">
<h1>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline"></a></h1>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenclass: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,245 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BinaryView &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="index.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>BinaryView</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/BinaryView_c++.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="binaryview">
<h1>BinaryView<a class="headerlink" href="#binaryview" title="Permalink to this headline"></a></h1>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenclass: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,290 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Console Logging &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="index.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Console Logging</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/ConsoleLogging_c++.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="console-logging">
<h1>Console Logging<a class="headerlink" href="#console-logging" title="Permalink to this headline"></a></h1>
<div class="section" id="bnloglevel">
<h2>BNLogLevel<a class="headerlink" href="#bnloglevel" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenenum: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
<div class="section" id="log">
<h2>Log<a class="headerlink" href="#log" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenfunction: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
<div class="section" id="logdebug">
<h2>LogDebug<a class="headerlink" href="#logdebug" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenfunction: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
<div class="section" id="loginfo">
<h2>LogInfo<a class="headerlink" href="#loginfo" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenfunction: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
<div class="section" id="logwarn">
<h2>LogWarn<a class="headerlink" href="#logwarn" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenfunction: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
<div class="section" id="logerror">
<h2>LogError<a class="headerlink" href="#logerror" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenfunction: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
<div class="section" id="logalert">
<h2>LogAlert<a class="headerlink" href="#logalert" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenfunction: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

245
api-docs/Platform_c++.html Normal file
View File

@ -0,0 +1,245 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Platform &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="index.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Platform</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/Platform_c++.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="platform">
<h1>Platform<a class="headerlink" href="#platform" title="Permalink to this headline"></a></h1>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">doxygenclass: Cannot find file: /var/lib/jenkins/jobs/binaryninja-dev/workspace/os/linux/api/xml/index.xml</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,491 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../index.html"/>
<link rel="up" title="Module code" href="index.html"/>
<script src="../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Module code</a> &raquo;</li>
<li>binaryninja</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="kn">import</span> <span class="nn">atexit</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="kn">from</span> <span class="nn">time</span> <span class="k">import</span> <span class="n">gmtime</span>
<span class="c1"># 2-3 compatibility</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">builtins</span> <span class="c1"># __builtins__ for python2</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">pass</span>
<div class="viewcode-block" id="range"><a class="viewcode-back" href="../index.html#binaryninja.architecture.range">[docs]</a><span class="k">def</span> <span class="nf">range</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; A Python2 and Python3 Compatible Range Generator &quot;&quot;&quot;</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="n">xrange</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
<span class="k">return</span> <span class="n">builtins</span><span class="o">.</span><span class="n">range</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span></div>
<div class="viewcode-block" id="with_metaclass"><a class="viewcode-back" href="../index.html#binaryninja.architecture.with_metaclass">[docs]</a><span class="k">def</span> <span class="nf">with_metaclass</span><span class="p">(</span><span class="n">meta</span><span class="p">,</span> <span class="o">*</span><span class="n">bases</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Create a base class with a metaclass.&quot;&quot;&quot;</span>
<span class="k">class</span> <span class="nc">metaclass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">this_bases</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
<span class="k">return</span> <span class="n">meta</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">__prepare__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">this_bases</span><span class="p">):</span>
<span class="k">return</span> <span class="n">meta</span><span class="o">.</span><span class="n">__prepare__</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">bases</span><span class="p">)</span>
<span class="k">return</span> <span class="nb">type</span><span class="o">.</span><span class="n">__new__</span><span class="p">(</span><span class="n">metaclass</span><span class="p">,</span> <span class="s1">&#39;temporary_class&#39;</span><span class="p">,</span> <span class="p">(),</span> <span class="p">{})</span></div>
<div class="viewcode-block" id="cstr"><a class="viewcode-back" href="../index.html#binaryninja.architecture.cstr">[docs]</a><span class="k">def</span> <span class="nf">cstr</span><span class="p">(</span><span class="n">arg</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="n">arg</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">arg</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">)</span></div>
<div class="viewcode-block" id="pyNativeStr"><a class="viewcode-back" href="../index.html#binaryninja.architecture.pyNativeStr">[docs]</a><span class="k">def</span> <span class="nf">pyNativeStr</span><span class="p">(</span><span class="n">arg</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="k">return</span> <span class="n">arg</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">)</span></div>
<span class="c1"># Binary Ninja components</span>
<span class="kn">import</span> <span class="nn">binaryninja._binaryninjacore</span> <span class="k">as</span> <span class="nn">core</span>
<span class="c1"># __all__ = [</span>
<span class="c1"># &quot;enums&quot;,</span>
<span class="c1"># &quot;databuffer&quot;,</span>
<span class="c1"># &quot;filemetadata&quot;,</span>
<span class="c1"># &quot;fileaccessor&quot;,</span>
<span class="c1"># &quot;binaryview&quot;,</span>
<span class="c1"># &quot;transform&quot;,</span>
<span class="c1"># &quot;architecture&quot;,</span>
<span class="c1"># &quot;basicblock&quot;,</span>
<span class="c1"># &quot;function&quot;,</span>
<span class="c1"># &quot;log&quot;,</span>
<span class="c1"># &quot;lowlevelil&quot;,</span>
<span class="c1"># &quot;mediumlevelil&quot;,</span>
<span class="c1"># &quot;types&quot;,</span>
<span class="c1"># &quot;functionrecognizer&quot;,</span>
<span class="c1"># &quot;update&quot;,</span>
<span class="c1"># &quot;plugin&quot;,</span>
<span class="c1"># &quot;callingconvention&quot;,</span>
<span class="c1"># &quot;platform&quot;,</span>
<span class="c1"># &quot;demangle&quot;,</span>
<span class="c1"># &quot;mainthread&quot;,</span>
<span class="c1"># &quot;interaction&quot;,</span>
<span class="c1"># &quot;lineardisassembly&quot;,</span>
<span class="c1"># &quot;undoaction&quot;,</span>
<span class="c1"># &quot;highlight&quot;,</span>
<span class="c1"># &quot;scriptingprovider&quot;,</span>
<span class="c1"># &quot;pluginmanager&quot;,</span>
<span class="c1"># &quot;setting&quot;,</span>
<span class="c1"># &quot;metadata&quot;,</span>
<span class="c1"># ]</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.databuffer</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.filemetadata</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.fileaccessor</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.binaryview</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.transform</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.architecture</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.basicblock</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.function</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.log</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.lowlevelil</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.mediumlevelil</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.types</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.functionrecognizer</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.update</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.plugin</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.callingconvention</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.platform</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.demangle</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.mainthread</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.interaction</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.lineardisassembly</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.undoaction</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.highlight</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.scriptingprovider</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.downloadprovider</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.pluginmanager</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.setting</span> <span class="k">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">binaryninja.metadata</span> <span class="k">import</span> <span class="o">*</span>
<div class="viewcode-block" id="shutdown"><a class="viewcode-back" href="../index.html#binaryninja.architecture.shutdown">[docs]</a><span class="k">def</span> <span class="nf">shutdown</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``shutdown`` cleanly shuts down the core, stopping all workers and closing all log files.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNShutdown</span><span class="p">()</span></div>
<span class="n">atexit</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">shutdown</span><span class="p">)</span>
<div class="viewcode-block" id="get_unique_identifier"><a class="viewcode-back" href="../index.html#binaryninja.architecture.get_unique_identifier">[docs]</a><span class="k">def</span> <span class="nf">get_unique_identifier</span><span class="p">():</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUniqueIdentifierString</span><span class="p">()</span></div>
<div class="viewcode-block" id="get_install_directory"><a class="viewcode-back" href="../index.html#binaryninja.architecture.get_install_directory">[docs]</a><span class="k">def</span> <span class="nf">get_install_directory</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_install_directory`` returns a string pointing to the installed binary currently running</span>
<span class="sd"> ..warning:: ONLY for use within the Binary Ninja UI, behavior is undefined and unreliable if run headlessly</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetInstallDirectory</span><span class="p">()</span></div>
<span class="n">_plugin_api_name</span> <span class="o">=</span> <span class="s2">&quot;python2&quot;</span>
<div class="viewcode-block" id="PluginManagerLoadPluginCallback"><a class="viewcode-back" href="../index.html#binaryninja.architecture.PluginManagerLoadPluginCallback">[docs]</a><span class="k">class</span> <span class="nc">PluginManagerLoadPluginCallback</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Callback for BNLoadPluginForApi(&quot;python2&quot;, ...), dynamicly loads python plugins.&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cb</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)(</span><span class="bp">self</span><span class="o">.</span><span class="n">_load_plugin</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_load_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">,</span> <span class="n">plugin_path</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">repo</span> <span class="o">=</span> <span class="n">RepositoryManager</span><span class="p">()[</span><span class="n">repo_path</span><span class="p">]</span>
<span class="n">plugin</span> <span class="o">=</span> <span class="n">repo</span><span class="p">[</span><span class="n">plugin_path</span><span class="p">]</span>
<span class="k">if</span> <span class="n">plugin</span><span class="o">.</span><span class="n">api</span> <span class="o">!=</span> <span class="n">_plugin_api_name</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Plugin api name is not &quot;</span> <span class="o">+</span> <span class="n">_plugin_api_name</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">plugin</span><span class="o">.</span><span class="n">installed</span><span class="p">:</span>
<span class="n">plugin</span><span class="o">.</span><span class="n">installed</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">if</span> <span class="n">repo</span><span class="o">.</span><span class="n">full_path</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">repo</span><span class="o">.</span><span class="n">full_path</span><span class="p">)</span>
<span class="nb">__import__</span><span class="p">(</span><span class="n">plugin</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
<span class="n">log_info</span><span class="p">(</span><span class="s2">&quot;Successfully loaded plugin: </span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">: &quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">repo_path</span><span class="p">,</span> <span class="n">plugin_path</span><span class="p">))</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="n">log_error</span><span class="p">(</span><span class="s2">&quot;Failed to find python plugin: </span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">repo_path</span><span class="p">,</span> <span class="n">plugin_path</span><span class="p">))</span>
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">ie</span><span class="p">:</span>
<span class="n">log_error</span><span class="p">(</span><span class="s2">&quot;Failed to import python plugin: </span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">repo_path</span><span class="p">,</span> <span class="n">plugin_path</span><span class="p">,</span> <span class="n">ie</span><span class="p">))</span>
<span class="k">return</span> <span class="kc">False</span></div>
<span class="n">load_plugin</span> <span class="o">=</span> <span class="n">PluginManagerLoadPluginCallback</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterForPluginLoading</span><span class="p">(</span><span class="n">_plugin_api_name</span><span class="p">,</span> <span class="n">load_plugin</span><span class="o">.</span><span class="n">cb</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="k">class</span> <span class="nc">_DestructionCallbackHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNObjectDestructionCallbacks</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destructBinaryView</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destructBinaryView</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">destruct_binary_view</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destructFileMetadata</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destructFileMetadata</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">destruct_file_metadata</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destructFunction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destructFunction</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">destruct_function</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterObjectDestructionCallbacks</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">destruct_binary_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="n">BinaryView</span><span class="o">.</span><span class="n">_unregister</span><span class="p">(</span><span class="n">view</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">destruct_file_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
<span class="n">FileMetadata</span><span class="o">.</span><span class="n">_unregister</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">destruct_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">Function</span><span class="o">.</span><span class="n">_unregister</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">_plugin_init</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_init_plugins</span><span class="p">():</span>
<span class="k">global</span> <span class="n">_plugin_init</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">_plugin_init</span><span class="p">:</span>
<span class="n">_plugin_init</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNInitCorePlugins</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNInitUserPlugins</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNInitRepoPlugins</span><span class="p">()</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsLicenseValidated</span><span class="p">():</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;License is not valid. Please supply a valid license.&quot;</span><span class="p">)</span>
<span class="n">_destruct_callbacks</span> <span class="o">=</span> <span class="n">_DestructionCallbackHandler</span><span class="p">()</span>
<span class="n">bundled_plugin_path</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBundledPluginDirectory</span><span class="p">()</span>
<span class="n">user_plugin_path</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUserPluginDirectory</span><span class="p">()</span>
<span class="n">core_version</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetVersionString</span><span class="p">()</span>
<span class="sd">&#39;&#39;&#39;Core version&#39;&#39;&#39;</span>
<span class="n">core_build_id</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBuildId</span><span class="p">()</span>
<span class="sd">&#39;&#39;&#39;Build ID&#39;&#39;&#39;</span>
<span class="n">core_serial</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSerialNumber</span><span class="p">()</span>
<span class="sd">&#39;&#39;&#39;Serial Number&#39;&#39;&#39;</span>
<span class="n">core_expires</span> <span class="o">=</span> <span class="n">gmtime</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetLicenseExpirationTime</span><span class="p">())</span>
<span class="sd">&#39;&#39;&#39;License Expiration&#39;&#39;&#39;</span>
<span class="n">core_product</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetProduct</span><span class="p">()</span>
<span class="sd">&#39;&#39;&#39;Product string from the license file&#39;&#39;&#39;</span>
<span class="n">core_product_type</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetProductType</span><span class="p">()</span>
<span class="sd">&#39;&#39;&#39;Product type from the license file&#39;&#39;&#39;</span>
<span class="n">core_license_count</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetLicenseCount</span><span class="p">()</span>
<span class="sd">&#39;&#39;&#39;License count from the license file&#39;&#39;&#39;</span>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,633 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.basicblock &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.basicblock</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.basicblock</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">import</span> <span class="nn">binaryninja</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">highlight</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">BranchType</span><span class="p">,</span> <span class="n">HighlightColorStyle</span><span class="p">,</span> <span class="n">HighlightStandardColor</span><span class="p">,</span> <span class="n">InstructionTextTokenType</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<div class="viewcode-block" id="BasicBlockEdge"><a class="viewcode-back" href="../../binaryninja.basicblock.BasicBlockEdge.html#binaryninja.basicblock.BasicBlockEdge">[docs]</a><span class="k">class</span> <span class="nc">BasicBlockEdge</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="BasicBlockEdge.__init__"><a class="viewcode-back" href="../../binaryninja.basicblock.BasicBlockEdge.html#binaryninja.basicblock.BasicBlockEdge.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">branch_type</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">back_edge</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">branch_type</span>
<span class="bp">self</span><span class="o">.</span><span class="n">source</span> <span class="o">=</span> <span class="n">source</span>
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
<span class="bp">self</span><span class="o">.</span><span class="n">back_edge</span> <span class="o">=</span> <span class="n">back_edge</span></div>
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">BasicBlockEdge</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">source</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">back_edge</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">source</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">back_edge</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">source</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">back_edge</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">BranchType</span><span class="o">.</span><span class="n">UnresolvedBranch</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;</span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="n">BranchType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span><span class="o">.</span><span class="n">name</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">arch</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">@</span><span class="si">%#x</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">BranchType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">start</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%#x</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">BranchType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">start</span><span class="p">)</span></div>
<div class="viewcode-block" id="BasicBlock"><a class="viewcode-back" href="../../binaryninja.basicblock.BasicBlock.html#binaryninja.basicblock.BasicBlock">[docs]</a><span class="k">class</span> <span class="nc">BasicBlock</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="BasicBlock.__init__"><a class="viewcode-back" href="../../binaryninja.basicblock.BasicBlock.html#binaryninja.basicblock.BasicBlock.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">view</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNBasicBlock</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_arch</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_func</span> <span class="o">=</span> <span class="kc">None</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlock</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">BasicBlock</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">==</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">BasicBlock</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Internal method used to instantiante child instances&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">BasicBlock</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">name</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">function</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Basic block function (read-only)&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_func</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockFunction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_func</span> <span class="o">=</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_func</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">arch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Basic block architecture (read-only)&quot;&quot;&quot;</span>
<span class="c1"># The arch for a BasicBlock isn&#39;t going to change so just cache</span>
<span class="c1"># it the first time we need it</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_arch</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_arch</span>
<span class="n">arch</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockArchitecture</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">arch</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_arch</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">architecture</span><span class="o">.</span><span class="n">CoreArchitecture</span><span class="o">.</span><span class="n">_from_cache</span><span class="p">(</span><span class="n">arch</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_arch</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Basic block start (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockStart</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Basic block end (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockEnd</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Basic block length (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockLength</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Basic block index in list of blocks for the function (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockIndex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">outgoing_edges</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of basic block outgoing edges (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">edges</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockOutgoingEdges</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">branch_type</span> <span class="o">=</span> <span class="n">BranchType</span><span class="p">(</span><span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="k">if</span> <span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">target</span><span class="p">:</span>
<span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">target</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">target</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">BasicBlockEdge</span><span class="p">(</span><span class="n">branch_type</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">backEdge</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlockEdgeList</span><span class="p">(</span><span class="n">edges</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">incoming_edges</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of basic block incoming edges (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">edges</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockIncomingEdges</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">branch_type</span> <span class="o">=</span> <span class="n">BranchType</span><span class="p">(</span><span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="k">if</span> <span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">target</span><span class="p">:</span>
<span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">target</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">target</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">BasicBlockEdge</span><span class="p">(</span><span class="n">branch_type</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="n">edges</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">backEdge</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlockEdgeList</span><span class="p">(</span><span class="n">edges</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">has_undetermined_outgoing_edges</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether basic block has undetermined outgoing edges (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNBasicBlockHasUndeterminedOutgoingEdges</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">can_exit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether basic block can return or is tagged as &#39;No Return&#39; (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNBasicBlockCanExit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">dominators</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of dominators for this basic block (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">blocks</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockDominators</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">blocks</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlockList</span><span class="p">(</span><span class="n">blocks</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">strict_dominators</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of strict dominators for this basic block (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">blocks</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockStrictDominators</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">blocks</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlockList</span><span class="p">(</span><span class="n">blocks</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">immediate_dominator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Immediate dominator of this basic block (read-only)&quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockImmediateDominator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">dominator_tree_children</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of child blocks in the dominator tree for this basic block (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">blocks</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockDominatorTreeChildren</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">blocks</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlockList</span><span class="p">(</span><span class="n">blocks</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">dominance_frontier</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Dominance frontier for this basic block (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">blocks</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockDominanceFrontier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">blocks</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlockList</span><span class="p">(</span><span class="n">blocks</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">annotations</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of automatic annotations for the start of this block (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">get_block_annotations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">disassembly_text</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``disassembly_text`` property which returns a list of binaryninja.function.DisassemblyTextLine objects for the current basic block.</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; current_basic_block.disassembly_text</span>
<span class="sd"> [&lt;0x100000f30: _main:&gt;, ...]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_disassembly_text</span><span class="p">()</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">highlight</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Gets or sets the highlight color for basic block</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; current_basic_block.highlight = HighlightStandardColor.BlueHighlightColor</span>
<span class="sd"> &gt;&gt;&gt; current_basic_block.highlight</span>
<span class="sd"> &lt;color: blue&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">color</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockHighlight</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">color</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">StandardHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">(</span><span class="n">color</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">color</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">alpha</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">color</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">MixedHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">(</span><span class="n">color</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">color</span><span class="p">,</span> <span class="n">mix_color</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">mixColor</span><span class="p">,</span> <span class="n">mix</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">mix</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">alpha</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">color</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">CustomHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">(</span><span class="n">red</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">r</span><span class="p">,</span> <span class="n">green</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">g</span><span class="p">,</span> <span class="n">blue</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">b</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">color</span><span class="o">.</span><span class="n">alpha</span><span class="p">)</span>
<span class="k">return</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">(</span><span class="n">color</span><span class="o">=</span><span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">NoHighlightColor</span><span class="p">)</span>
<span class="nd">@highlight</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">highlight</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">set_user_highlight</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_il</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the basic block contains IL&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsILBasicBlock</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_low_level_il</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the basic block contains Low Level IL&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsLowLevelILBasicBlock</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_medium_level_il</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the basic block contains Medium Level IL&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsMediumLevelILBasicBlock</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="BasicBlock.get_iterated_dominance_frontier"><a class="viewcode-back" href="../../binaryninja.basicblock-module.html#binaryninja.basicblock.BasicBlock.get_iterated_dominance_frontier">[docs]</a> <span class="k">def</span> <span class="nf">get_iterated_dominance_frontier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">blocks</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">blocks</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="n">block_set</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBasicBlock</span><span class="p">)</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">blocks</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">blocks</span><span class="p">)):</span>
<span class="n">block_set</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">blocks</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">handle</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">out_blocks</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockIteratedDominanceFrontier</span><span class="p">(</span><span class="n">block_set</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">blocks</span><span class="p">),</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">BasicBlock</span><span class="p">(</span><span class="n">blocks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">out_blocks</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBasicBlockList</span><span class="p">(</span><span class="n">out_blocks</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">object</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockLength</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">if</span> <span class="n">arch</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;block: </span><span class="si">%s</span><span class="s2">@</span><span class="si">%#x</span><span class="s2">-</span><span class="si">%#x</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">end</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;block: </span><span class="si">%#x</span><span class="s2">-</span><span class="si">%#x</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">end</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span>
<span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">end</span>
<span class="n">idx</span> <span class="o">=</span> <span class="n">start</span>
<span class="k">while</span> <span class="n">idx</span> <span class="o">&lt;</span> <span class="n">end</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">max_instr_length</span><span class="p">)</span>
<span class="n">inst_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_instruction_info</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">idx</span><span class="p">)</span>
<span class="n">inst_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_instruction_text</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">idx</span><span class="p">)</span>
<span class="k">if</span> <span class="n">inst_info</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">break</span>
<span class="k">yield</span> <span class="n">inst_text</span>
<span class="n">idx</span> <span class="o">+=</span> <span class="n">inst_info</span><span class="o">.</span><span class="n">length</span>
<div class="viewcode-block" id="BasicBlock.mark_recent_use"><a class="viewcode-back" href="../../binaryninja.basicblock-module.html#binaryninja.basicblock.BasicBlock.mark_recent_use">[docs]</a> <span class="k">def</span> <span class="nf">mark_recent_use</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMarkBasicBlockAsRecentlyUsed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BasicBlock.get_disassembly_text"><a class="viewcode-back" href="../../binaryninja.basicblock-module.html#binaryninja.basicblock.BasicBlock.get_disassembly_text">[docs]</a> <span class="k">def</span> <span class="nf">get_disassembly_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_disassembly_text`` returns a list of binaryninja.function.DisassemblyTextLine objects for the current basic block.</span>
<span class="sd"> :param DisassemblySettings settings: (optional) DisassemblySettings object</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; current_basic_block.get_disassembly_text()</span>
<span class="sd"> [&lt;0x100000f30: _main:&gt;, &lt;0x100000f30: push rbp&gt;, ... ]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">settings_obj</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">settings</span><span class="p">:</span>
<span class="n">settings_obj</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">handle</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">lines</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockDisassemblyText</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">settings_obj</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">addr</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">addr</span>
<span class="k">if</span> <span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">instrIndex</span> <span class="o">!=</span> <span class="mh">0xffffffffffffffff</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;il_function&#39;</span><span class="p">):</span>
<span class="n">il_instr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">il_function</span><span class="p">[</span><span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">instrIndex</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">il_instr</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">tokens</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">count</span><span class="p">):</span>
<span class="n">token_type</span> <span class="o">=</span> <span class="n">InstructionTextTokenType</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="n">text</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">text</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
<span class="n">size</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">size</span>
<span class="n">operand</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">operand</span>
<span class="n">context</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">context</span>
<span class="n">confidence</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">confidence</span>
<span class="n">address</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">address</span>
<span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">InstructionTextToken</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">operand</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">confidence</span><span class="p">))</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">DisassemblyTextLine</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="n">tokens</span><span class="p">,</span> <span class="n">il_instr</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDisassemblyTextLines</span><span class="p">(</span><span class="n">lines</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BasicBlock.set_auto_highlight"><a class="viewcode-back" href="../../binaryninja.basicblock-module.html#binaryninja.basicblock.BasicBlock.set_auto_highlight">[docs]</a> <span class="k">def</span> <span class="nf">set_auto_highlight</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``set_auto_highlight`` highlights the current BasicBlock with the supplied color.</span>
<span class="sd"> ..warning:: Use only in analysis plugins. Do not use in regular plugins, as colors won&#39;t be saved to the database.</span>
<span class="sd"> :param HighlightStandardColor or highlight.HighlightColor color: Color value to use for highlighting</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">HighlightStandardColor</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Specified color is not one of HighlightStandardColor, highlight.HighlightColor&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">HighlightStandardColor</span><span class="p">):</span>
<span class="n">color</span> <span class="o">=</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetAutoBasicBlockHighlight</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">color</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">())</span></div>
<div class="viewcode-block" id="BasicBlock.set_user_highlight"><a class="viewcode-back" href="../../binaryninja.basicblock-module.html#binaryninja.basicblock.BasicBlock.set_user_highlight">[docs]</a> <span class="k">def</span> <span class="nf">set_user_highlight</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``set_user_highlight`` highlights the current BasicBlock with the supplied color</span>
<span class="sd"> :param HighlightStandardColor or highlight.HighlightColor color: Color value to use for highlighting</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; current_basic_block.set_user_highlight(highlight.HighlightColor(red=0xff, blue=0xff, green=0))</span>
<span class="sd"> &gt;&gt;&gt; current_basic_block.set_user_highlight(HighlightStandardColor.BlueHighlightColor)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">HighlightStandardColor</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Specified color is not one of HighlightStandardColor, highlight.HighlightColor&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">HighlightStandardColor</span><span class="p">):</span>
<span class="n">color</span> <span class="o">=</span> <span class="n">highlight</span><span class="o">.</span><span class="n">HighlightColor</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetUserBasicBlockHighlight</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">color</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">())</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,663 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.callingconvention &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.callingconvention</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.callingconvention</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">import</span> <span class="nn">binaryninja</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">log</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">VariableSourceType</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<div class="viewcode-block" id="CallingConvention"><a class="viewcode-back" href="../../binaryninja.callingconvention.CallingConvention.html#binaryninja.callingconvention.CallingConvention">[docs]</a><span class="k">class</span> <span class="nc">CallingConvention</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">caller_saved_regs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">int_arg_regs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">float_arg_regs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">arg_regs_share_index</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">stack_reserved_for_arg_regs</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">stack_adjusted_on_return</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">int_return_reg</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">high_int_return_reg</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">float_return_reg</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">global_pointer_reg</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">implicitly_defined_regs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">_registered_calling_conventions</span> <span class="o">=</span> <span class="p">[]</span>
<div class="viewcode-block" id="CallingConvention.__init__"><a class="viewcode-back" href="../../binaryninja.callingconvention.CallingConvention.html#binaryninja.callingconvention.CallingConvention.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">confidence</span><span class="o">=</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">types</span><span class="o">.</span><span class="n">max_confidence</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="n">arch</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Must specify either handle or architecture and name&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arch</span> <span class="o">=</span> <span class="n">arch</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_reg_lists</span> <span class="o">=</span> <span class="p">{}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCustomCallingConvention</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getCallerSavedRegisters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getCallerSavedRegisters</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_caller_saved_regs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIntegerArgumentRegisters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIntegerArgumentRegisters</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_int_arg_regs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getFloatArgumentRegisters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getFloatArgumentRegisters</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_float_arg_regs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">freeRegisterList</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">freeRegisterList</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_free_register_list</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">areArgumentRegistersSharedIndex</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">areArgumentRegistersSharedIndex</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_arg_regs_share_index</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">isStackReservedForArgumentRegisters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">isStackReservedForArgumentRegisters</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_stack_reserved_for_arg_regs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">isStackAdjustedOnReturn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">isStackAdjustedOnReturn</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_stack_adjusted_on_return</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIntegerReturnValueRegister</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIntegerReturnValueRegister</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_int_return_reg</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getHighIntegerReturnValueRegister</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getHighIntegerReturnValueRegister</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_high_int_return_reg</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getFloatReturnValueRegister</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getFloatReturnValueRegister</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_float_return_reg</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getGlobalPointerRegister</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getGlobalPointerRegister</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_global_pointer_reg</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getImplicitlyDefinedRegisters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getImplicitlyDefinedRegisters</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_implicitly_defined_regs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIncomingRegisterValue</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIncomingRegisterValue</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_incoming_reg_value</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIncomingFlagValue</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIncomingFlagValue</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_incoming_flag_value</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIncomingVariableForParameterVariable</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getIncomingVariableForParameterVariable</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_incoming_var_for_parameter_var</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getParameterVariableForIncomingVariable</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getParameterVariableForIncomingVariable</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_parameter_var_for_incoming_var</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateCallingConvention</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">_registered_calling_conventions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arch</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">architecture</span><span class="o">.</span><span class="n">CoreArchitecture</span><span class="o">.</span><span class="n">_from_cache</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetCallingConventionArchitecture</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCallingConventionName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;arg_regs_share_index&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNAreArgumentRegistersSharedIndex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;stack_reserved_for_arg_regs&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsStackReservedForArgumentRegisters</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;stack_adjusted_on_return&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsStackAdjustedOnReturn</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">regs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCallerSavedRegisters</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeRegisterList</span><span class="p">(</span><span class="n">regs</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;caller_saved_regs&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">regs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetIntegerArgumentRegisters</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeRegisterList</span><span class="p">(</span><span class="n">regs</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;int_arg_regs&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">regs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFloatArgumentRegisters</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeRegisterList</span><span class="p">(</span><span class="n">regs</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;float_arg_regs&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span>
<span class="n">reg</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetIntegerReturnValueRegister</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">reg</span> <span class="o">==</span> <span class="mh">0xffffffff</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;int_return_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;int_return_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="n">reg</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetHighIntegerReturnValueRegister</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">reg</span> <span class="o">==</span> <span class="mh">0xffffffff</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;high_int_return_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;high_int_return_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="n">reg</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFloatReturnValueRegister</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">reg</span> <span class="o">==</span> <span class="mh">0xffffffff</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;float_return_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;float_return_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="n">reg</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetGlobalPointerRegister</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">reg</span> <span class="o">==</span> <span class="mh">0xffffffff</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;global_pointer_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;global_pointer_reg&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">regs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetImplicitlyDefinedRegisters</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeRegisterList</span><span class="p">(</span><span class="n">regs</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;implicitly_defined_regs&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">result</span>
<span class="bp">self</span><span class="o">.</span><span class="n">confidence</span> <span class="o">=</span> <span class="n">confidence</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">CallingConvention</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">==</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">CallingConvention</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_caller_saved_regs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">regs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">caller_saved_regs</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)</span>
<span class="n">reg_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)):</span>
<span class="n">reg_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">reg_buf</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_reg_lists</span><span class="p">[</span><span class="n">result</span><span class="o">.</span><span class="n">value</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">reg_buf</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_get_int_arg_regs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">regs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">int_arg_regs</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)</span>
<span class="n">reg_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)):</span>
<span class="n">reg_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">reg_buf</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_reg_lists</span><span class="p">[</span><span class="n">result</span><span class="o">.</span><span class="n">value</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">reg_buf</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_get_float_arg_regs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">regs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">float_arg_regs</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)</span>
<span class="n">reg_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)):</span>
<span class="n">reg_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">reg_buf</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_reg_lists</span><span class="p">[</span><span class="n">result</span><span class="o">.</span><span class="n">value</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">reg_buf</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_free_register_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">regs</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">regs</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="k">if</span> <span class="n">buf</span><span class="o">.</span><span class="n">value</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_reg_lists</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;freeing register list that wasn&#39;t allocated&quot;</span><span class="p">)</span>
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_reg_lists</span><span class="p">[</span><span class="n">buf</span><span class="o">.</span><span class="n">value</span><span class="p">]</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_arg_regs_share_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">arg_regs_share_index</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_stack_reserved_for_arg_regs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">stack_reserved_for_arg_regs</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_stack_adjusted_on_return</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">stack_adjusted_on_return</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_get_int_return_reg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">int_return_reg</span><span class="p">]</span><span class="o">.</span><span class="n">index</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_get_high_int_return_reg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">high_int_return_reg</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="mh">0xffffffff</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">high_int_return_reg</span><span class="p">]</span><span class="o">.</span><span class="n">index</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_get_float_return_reg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">float_return_reg</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="mh">0xffffffff</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">float_int_return_reg</span><span class="p">]</span><span class="o">.</span><span class="n">index</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_get_global_pointer_reg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">global_pointer_reg</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="mh">0xffffffff</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">global_pointer_reg</span><span class="p">]</span><span class="o">.</span><span class="n">index</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_get_implicitly_defined_regs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">regs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">implicitly_defined_regs</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)</span>
<span class="n">reg_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">regs</span><span class="p">)):</span>
<span class="n">reg_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">regs</span><span class="p">[</span><span class="n">regs</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">reg_buf</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_reg_lists</span><span class="p">[</span><span class="n">result</span><span class="o">.</span><span class="n">value</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">reg_buf</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_get_incoming_reg_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">reg</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFunctionData</span><span class="p">(</span><span class="n">func</span><span class="p">)),</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">reg_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="n">api_obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_get_incoming_reg_value</span><span class="p">(</span><span class="n">reg_name</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span><span class="o">.</span><span class="n">_to_api_object</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">api_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">RegisterValue</span><span class="p">()</span><span class="o">.</span><span class="n">_to_api_object</span><span class="p">()</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">api_obj</span><span class="o">.</span><span class="n">state</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">api_obj</span><span class="o">.</span><span class="n">value</span>
<span class="k">def</span> <span class="nf">_get_incoming_flag_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">reg</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFunctionData</span><span class="p">(</span><span class="n">func</span><span class="p">)),</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">reg_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="n">api_obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_get_incoming_flag_value</span><span class="p">(</span><span class="n">reg_name</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span><span class="o">.</span><span class="n">_to_api_object</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">api_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">RegisterValue</span><span class="p">()</span><span class="o">.</span><span class="n">_to_api_object</span><span class="p">()</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">api_obj</span><span class="o">.</span><span class="n">state</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">api_obj</span><span class="o">.</span><span class="n">value</span>
<span class="k">def</span> <span class="nf">_get_incoming_var_for_parameter_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">in_var</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFunctionData</span><span class="p">(</span><span class="n">func</span><span class="p">)),</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">in_var_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">func_obj</span><span class="p">,</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span><span class="p">)</span>
<span class="n">out_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_get_incoming_var_for_parameter_var</span><span class="p">(</span><span class="n">in_var_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">out_var</span><span class="o">.</span><span class="n">source_type</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">out_var</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">out_var</span><span class="o">.</span><span class="n">storage</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span>
<span class="k">def</span> <span class="nf">_get_parameter_var_for_incoming_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">in_var</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFunctionData</span><span class="p">(</span><span class="n">func</span><span class="p">)),</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">in_var_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">func_obj</span><span class="p">,</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span><span class="p">)</span>
<span class="n">out_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_get_parameter_var_for_incoming_var</span><span class="p">(</span><span class="n">in_var_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">out_var</span><span class="o">.</span><span class="n">source_type</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">out_var</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">out_var</span><span class="o">.</span><span class="n">storage</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">type</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">index</span>
<span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">in_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">storage</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;calling convention: </span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<div class="viewcode-block" id="CallingConvention.perform_get_incoming_reg_value"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.perform_get_incoming_reg_value">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_incoming_reg_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reg</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">reg_stack</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_stack_for_reg</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="k">if</span> <span class="n">reg_stack</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="n">reg</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">reg_stacks</span><span class="p">[</span><span class="n">reg_stack</span><span class="p">]</span><span class="o">.</span><span class="n">stack_top_reg</span><span class="p">:</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">RegisterValue</span><span class="o">.</span><span class="n">constant</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">RegisterValue</span><span class="p">()</span></div>
<div class="viewcode-block" id="CallingConvention.perform_get_incoming_flag_value"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.perform_get_incoming_flag_value">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_incoming_flag_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reg</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">RegisterValue</span><span class="p">()</span></div>
<div class="viewcode-block" id="CallingConvention.perform_get_incoming_var_for_parameter_var"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.perform_get_incoming_var_for_parameter_var">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_incoming_var_for_parameter_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">in_var</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">in_buf</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNVariable</span><span class="p">()</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">source_type</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">index</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">storage</span>
<span class="n">out_var</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDefaultIncomingVariableForParameterVariable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">in_buf</span><span class="p">)</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="p">(</span><span class="n">func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">out_var</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">VariableSourceType</span><span class="o">.</span><span class="n">RegisterVariableSourceType</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">out_var</span><span class="o">.</span><span class="n">storage</span><span class="p">)</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">storage</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="CallingConvention.perform_get_parameter_var_for_incoming_var"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.perform_get_parameter_var_for_incoming_var">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_parameter_var_for_incoming_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">in_var</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">in_buf</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNVariable</span><span class="p">()</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">source_type</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">index</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">storage</span>
<span class="n">out_var</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDefaultParameterVariableForIncomingVariable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">in_buf</span><span class="p">)</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">storage</span><span class="p">)</span></div>
<div class="viewcode-block" id="CallingConvention.with_confidence"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.with_confidence">[docs]</a> <span class="k">def</span> <span class="nf">with_confidence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">confidence</span><span class="p">):</span>
<span class="k">return</span> <span class="n">CallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewCallingConventionReference</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">),</span>
<span class="n">confidence</span> <span class="o">=</span> <span class="n">confidence</span><span class="p">)</span></div>
<div class="viewcode-block" id="CallingConvention.get_incoming_reg_value"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.get_incoming_reg_value">[docs]</a> <span class="k">def</span> <span class="nf">get_incoming_reg_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reg</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">reg_num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_index</span><span class="p">(</span><span class="n">reg</span><span class="p">)</span>
<span class="n">func_handle</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">func_handle</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">handle</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">RegisterValue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetIncomingRegisterValue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">reg_num</span><span class="p">,</span> <span class="n">func_handle</span><span class="p">))</span></div>
<div class="viewcode-block" id="CallingConvention.get_incoming_flag_value"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.get_incoming_flag_value">[docs]</a> <span class="k">def</span> <span class="nf">get_incoming_flag_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flag</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">reg_num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_flag_index</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
<span class="n">func_handle</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">func_handle</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">handle</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">RegisterValue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetIncomingFlagValue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">reg_num</span><span class="p">,</span> <span class="n">func_handle</span><span class="p">))</span></div>
<div class="viewcode-block" id="CallingConvention.get_incoming_var_for_parameter_var"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.get_incoming_var_for_parameter_var">[docs]</a> <span class="k">def</span> <span class="nf">get_incoming_var_for_parameter_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">in_var</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">in_buf</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNVariable</span><span class="p">()</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">source_type</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">index</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">storage</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">handle</span>
<span class="n">out_var</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetIncomingVariableForParameterVariable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">in_buf</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="p">(</span><span class="n">func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">out_var</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">VariableSourceType</span><span class="o">.</span><span class="n">RegisterVariableSourceType</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">arch</span><span class="o">.</span><span class="n">get_reg_name</span><span class="p">(</span><span class="n">out_var</span><span class="o">.</span><span class="n">storage</span><span class="p">)</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">storage</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="CallingConvention.get_parameter_var_for_incoming_var"><a class="viewcode-back" href="../../binaryninja.callingconvention-module.html#binaryninja.callingconvention.CallingConvention.get_parameter_var_for_incoming_var">[docs]</a> <span class="k">def</span> <span class="nf">get_parameter_var_for_incoming_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">in_var</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="n">in_buf</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNVariable</span><span class="p">()</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">source_type</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">index</span>
<span class="n">in_buf</span><span class="o">.</span><span class="n">storage</span> <span class="o">=</span> <span class="n">in_var</span><span class="o">.</span><span class="n">storage</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">handle</span>
<span class="n">out_var</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetParameterVariableForIncomingVariable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">in_buf</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">out_var</span><span class="o">.</span><span class="n">storage</span><span class="p">)</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,399 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.databuffer &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.databuffer</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.databuffer</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">pyNativeStr</span>
<div class="viewcode-block" id="DataBuffer"><a class="viewcode-back" href="../../binaryninja.databuffer.DataBuffer.html#binaryninja.databuffer.DataBuffer">[docs]</a><span class="k">class</span> <span class="nc">DataBuffer</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="DataBuffer.__init__"><a class="viewcode-back" href="../../binaryninja.databuffer.DataBuffer.html#binaryninja.databuffer.DataBuffer.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contents</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="c1"># python3 no longer has longs</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">long</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
<span class="n">long</span> <span class="o">=</span> <span class="nb">int</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDataBuffer</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">contents</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">contents</span><span class="p">,</span> <span class="n">long</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateDataBuffer</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">contents</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">contents</span><span class="p">,</span> <span class="n">DataBuffer</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDuplicateDataBuffer</span><span class="p">(</span><span class="n">contents</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateDataBuffer</span><span class="p">(</span><span class="n">contents</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">contents</span><span class="p">))</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDataBuffer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferLength</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="n">source</span> <span class="o">=</span> <span class="nb">bytes</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">i</span><span class="p">:</span>
<span class="n">result</span> <span class="o">+=</span> <span class="n">source</span><span class="p">[</span><span class="n">s</span><span class="p">]</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="nb">slice</span><span class="p">):</span>
<span class="k">if</span> <span class="n">i</span><span class="o">.</span><span class="n">step</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">i</span> <span class="o">=</span> <span class="n">i</span><span class="o">.</span><span class="n">indices</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
<span class="n">start</span> <span class="o">=</span> <span class="n">i</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">stop</span> <span class="o">=</span> <span class="n">i</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">if</span> <span class="n">stop</span> <span class="o">&lt;=</span> <span class="n">start</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">stop</span> <span class="o">-</span> <span class="n">start</span><span class="p">)</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferContentsAt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">start</span><span class="p">),</span> <span class="n">stop</span> <span class="o">-</span> <span class="n">start</span><span class="p">)</span>
<span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">raw</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">bytes</span><span class="p">(</span><span class="bp">self</span><span class="p">)[</span><span class="n">i</span><span class="p">]</span>
<span class="k">elif</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">if</span> <span class="n">i</span> <span class="o">&gt;=</span> <span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">chr</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferByte</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="n">i</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;index out of range&quot;</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">chr</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferByte</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">i</span><span class="p">)))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;index out of range&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="nb">slice</span><span class="p">):</span>
<span class="k">if</span> <span class="n">i</span><span class="o">.</span><span class="n">step</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;step not supported on assignment&quot;</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="n">i</span><span class="o">.</span><span class="n">indices</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
<span class="n">start</span> <span class="o">=</span> <span class="n">i</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">stop</span> <span class="o">=</span> <span class="n">i</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">if</span> <span class="n">stop</span> <span class="o">&lt;</span> <span class="n">start</span><span class="p">:</span>
<span class="n">stop</span> <span class="o">=</span> <span class="n">start</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">!=</span> <span class="p">(</span><span class="n">stop</span> <span class="o">-</span> <span class="n">start</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="nb">bytes</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">start</span><span class="p">]</span> <span class="o">+</span> <span class="n">value</span> <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="n">stop</span><span class="p">:]</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetDataBufferContents</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">value</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferContentsAt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">start</span><span class="p">),</span> <span class="n">buf</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">elif</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">if</span> <span class="n">i</span> <span class="o">&gt;=</span> <span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;expected single byte for assignment&quot;</span><span class="p">)</span>
<span class="n">value</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferContentsAt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="n">i</span><span class="p">)),</span> <span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;index out of range&quot;</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;expected single byte for assignment&quot;</span><span class="p">)</span>
<span class="n">value</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferContentsAt</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">i</span><span class="p">)),</span> <span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;index out of range&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferContents</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
<span class="k">return</span> <span class="n">pyNativeStr</span><span class="p">(</span><span class="n">buf</span><span class="o">.</span><span class="n">raw</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__bytes__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDataBufferContents</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
<span class="k">return</span> <span class="n">buf</span><span class="o">.</span><span class="n">raw</span>
<div class="viewcode-block" id="DataBuffer.escape"><a class="viewcode-back" href="../../binaryninja.databuffer-module.html#binaryninja.databuffer.DataBuffer.escape">[docs]</a> <span class="k">def</span> <span class="nf">escape</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDataBufferToEscapedString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="DataBuffer.unescape"><a class="viewcode-back" href="../../binaryninja.databuffer-module.html#binaryninja.databuffer.DataBuffer.unescape">[docs]</a> <span class="k">def</span> <span class="nf">unescape</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNDecodeEscapedString</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="bp">self</span><span class="p">)))</span></div>
<div class="viewcode-block" id="DataBuffer.base64_encode"><a class="viewcode-back" href="../../binaryninja.databuffer-module.html#binaryninja.databuffer.DataBuffer.base64_encode">[docs]</a> <span class="k">def</span> <span class="nf">base64_encode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDataBufferToBase64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="DataBuffer.base64_decode"><a class="viewcode-back" href="../../binaryninja.databuffer-module.html#binaryninja.databuffer.DataBuffer.base64_decode">[docs]</a> <span class="k">def</span> <span class="nf">base64_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDecodeBase64</span><span class="p">(</span><span class="nb">bytes</span><span class="p">(</span><span class="bp">self</span><span class="p">)))</span></div>
<div class="viewcode-block" id="DataBuffer.zlib_compress"><a class="viewcode-back" href="../../binaryninja.databuffer-module.html#binaryninja.databuffer.DataBuffer.zlib_compress">[docs]</a> <span class="k">def</span> <span class="nf">zlib_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNZlibCompress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">buf</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">buf</span><span class="p">)</span></div>
<div class="viewcode-block" id="DataBuffer.zlib_decompress"><a class="viewcode-back" href="../../binaryninja.databuffer-module.html#binaryninja.databuffer.DataBuffer.zlib_decompress">[docs]</a> <span class="k">def</span> <span class="nf">zlib_decompress</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNZlibDecompress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">buf</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">buf</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="escape_string"><a class="viewcode-back" href="../../binaryninja.databuffer.escape_string.html#binaryninja.databuffer.escape_string">[docs]</a><span class="k">def</span> <span class="nf">escape_string</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="k">return</span> <span class="n">DataBuffer</span><span class="p">(</span><span class="n">text</span><span class="p">)</span><span class="o">.</span><span class="n">escape</span><span class="p">()</span></div>
<div class="viewcode-block" id="unescape_string"><a class="viewcode-back" href="../../binaryninja.databuffer.unescape_string.html#binaryninja.databuffer.unescape_string">[docs]</a><span class="k">def</span> <span class="nf">unescape_string</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="k">return</span> <span class="n">DataBuffer</span><span class="p">(</span><span class="n">text</span><span class="p">)</span><span class="o">.</span><span class="n">unescape</span><span class="p">()</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,329 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.demangle &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.demangle</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.demangle</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">types</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">pyNativeStr</span>
<div class="viewcode-block" id="get_qualified_name"><a class="viewcode-back" href="../../binaryninja.demangle.get_qualified_name.html#binaryninja.demangle.get_qualified_name">[docs]</a><span class="k">def</span> <span class="nf">get_qualified_name</span><span class="p">(</span><span class="n">names</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_qualified_name`` gets a qualified name for the provied name list.</span>
<span class="sd"> :param list(str) names: name list to qualify</span>
<span class="sd"> :return: a qualified name</span>
<span class="sd"> :rtype: str</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = demangle_ms(Architecture[&quot;x86_64&quot;], &quot;?testf@Foobar@@SA?AW4foo@1@W421@@Z&quot;)</span>
<span class="sd"> &gt;&gt;&gt; get_qualified_name(name)</span>
<span class="sd"> &#39;Foobar::testf&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="s2">&quot;::&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">names</span><span class="p">)</span></div>
<div class="viewcode-block" id="demangle_ms"><a class="viewcode-back" href="../../binaryninja.demangle.demangle_ms.html#binaryninja.demangle.demangle_ms">[docs]</a><span class="k">def</span> <span class="nf">demangle_ms</span><span class="p">(</span><span class="n">arch</span><span class="p">,</span> <span class="n">mangled_name</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``demangle_ms`` demangles a mangled Microsoft Visual Studio C++ name to a Type object.</span>
<span class="sd"> :param Architecture arch: Architecture for the symbol. Required for pointer and integer sizes.</span>
<span class="sd"> :param str mangled_name: a mangled Microsoft Visual Studio C++ name</span>
<span class="sd"> :return: returns tuple of (Type, demangled_name) or (None, mangled_name) on error</span>
<span class="sd"> :rtype: Tuple</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; demangle_ms(Architecture[&quot;x86_64&quot;], &quot;?testf@Foobar@@SA?AW4foo@1@W421@@Z&quot;)</span>
<span class="sd"> (&lt;type: public: static enum Foobar::foo __cdecl (enum Foobar::foo)&gt;, [&#39;Foobar&#39;, &#39;testf&#39;])</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">handle</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNType</span><span class="p">)()</span>
<span class="n">outName</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">)()</span>
<span class="n">outSize</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDemangleMS</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">mangled_name</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">handle</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">outName</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">outSize</span><span class="p">)):</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">outSize</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pyNativeStr</span><span class="p">(</span><span class="n">outName</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDemangledName</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">outName</span><span class="p">),</span> <span class="n">outSize</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">handle</span><span class="p">),</span> <span class="n">names</span><span class="p">)</span>
<span class="k">return</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">mangled_name</span><span class="p">)</span></div>
<div class="viewcode-block" id="demangle_gnu3"><a class="viewcode-back" href="../../binaryninja.demangle.demangle_gnu3.html#binaryninja.demangle.demangle_gnu3">[docs]</a><span class="k">def</span> <span class="nf">demangle_gnu3</span><span class="p">(</span><span class="n">arch</span><span class="p">,</span> <span class="n">mangled_name</span><span class="p">):</span>
<span class="n">handle</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNType</span><span class="p">)()</span>
<span class="n">outName</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">)()</span>
<span class="n">outSize</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDemangleGNU3</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">mangled_name</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">handle</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">outName</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">outSize</span><span class="p">)):</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">outSize</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pyNativeStr</span><span class="p">(</span><span class="n">outName</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDemangledName</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">outName</span><span class="p">),</span> <span class="n">outSize</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">handle</span><span class="p">:</span>
<span class="k">return</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">names</span><span class="p">)</span>
<span class="k">return</span> <span class="p">(</span><span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">handle</span><span class="p">),</span> <span class="n">names</span><span class="p">)</span>
<span class="k">return</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">mangled_name</span><span class="p">)</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,513 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.downloadprovider &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.downloadprovider</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.downloadprovider</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2018 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">abc</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="c1"># Binary Ninja Components</span>
<span class="kn">import</span> <span class="nn">binaryninja._binaryninjacore</span> <span class="k">as</span> <span class="nn">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.setting</span> <span class="k">import</span> <span class="n">Setting</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">with_metaclass</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">startup</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">log</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">pyNativeStr</span>
<div class="viewcode-block" id="DownloadInstance"><a class="viewcode-back" href="../../binaryninja.downloadprovider.DownloadInstance.html#binaryninja.downloadprovider.DownloadInstance">[docs]</a><span class="k">class</span> <span class="nc">DownloadInstance</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="DownloadInstance.__init__"><a class="viewcode-back" href="../../binaryninja.downloadprovider.DownloadInstance.html#binaryninja.downloadprovider.DownloadInstance.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">provider</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDownloadInstanceCallbacks</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destroyInstance</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destroyInstance</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_destroy_instance</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">performRequest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">performRequest</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_perform_request</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNInitDownloadInstance</span><span class="p">(</span><span class="n">provider</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDownloadInstance</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_outputCallbacks</span> <span class="o">=</span> <span class="kc">None</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_destroy_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">perform_destroy_instance</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_perform_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_request</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="DownloadInstance.perform_destroy_instance"><a class="viewcode-back" href="../../binaryninja.downloadprovider-module.html#binaryninja.downloadprovider.DownloadInstance.perform_destroy_instance">[docs]</a> <span class="k">def</span> <span class="nf">perform_destroy_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<span class="k">def</span> <span class="nf">perform_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span>
<div class="viewcode-block" id="DownloadInstance.perform_request"><a class="viewcode-back" href="../../binaryninja.downloadprovider-module.html#binaryninja.downloadprovider.DownloadInstance.perform_request">[docs]</a> <span class="k">def</span> <span class="nf">perform_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">callbacks</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPerformDownloadRequest</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">callbacks</span><span class="p">)</span></div></div>
<span class="k">class</span> <span class="nc">_DownloadProviderMetaclass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List all DownloadProvider types (read-only)&quot;&quot;&quot;</span>
<span class="n">startup</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">types</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDownloadProviderList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">xrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">DownloadProvider</span><span class="p">(</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDownloadProviderList</span><span class="p">(</span><span class="n">types</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">startup</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">types</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDownloadProviderList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">xrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">yield</span> <span class="n">DownloadProvider</span><span class="p">(</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDownloadProviderList</span><span class="p">(</span><span class="n">types</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">startup</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">provider</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDownloadProviderByName</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">if</span> <span class="n">provider</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a valid download provider&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">return</span> <span class="n">DownloadProvider</span><span class="p">(</span><span class="n">provider</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">type</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<div class="viewcode-block" id="DownloadProvider"><a class="viewcode-back" href="../../binaryninja.downloadprovider.DownloadProvider.html#binaryninja.downloadprovider.DownloadProvider">[docs]</a><span class="k">class</span> <span class="nc">DownloadProvider</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_DownloadProviderMetaclass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">instance_class</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">_registered_providers</span> <span class="o">=</span> <span class="p">[]</span>
<div class="viewcode-block" id="DownloadProvider.__init__"><a class="viewcode-back" href="../../binaryninja.downloadprovider.DownloadProvider.html#binaryninja.downloadprovider.DownloadProvider.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDownloadProvider</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDownloadProviderName</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="DownloadProvider.register"><a class="viewcode-back" href="../../binaryninja.downloadprovider-module.html#binaryninja.downloadprovider.DownloadProvider.register">[docs]</a> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDownloadProviderCallbacks</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">createInstance</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">createInstance</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRegisterDownloadProvider</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">_registered_providers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">instance_class</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewDownloadInstanceReference</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">handle</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span><span class="o">.</span><span class="n">value</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">None</span>
<div class="viewcode-block" id="DownloadProvider.create_instance"><a class="viewcode-back" href="../../binaryninja.downloadprovider-module.html#binaryninja.downloadprovider.DownloadProvider.create_instance">[docs]</a> <span class="k">def</span> <span class="nf">create_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateDownloadProviderInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">DownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">result</span><span class="p">)</span></div></div>
<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span> <span class="o">&gt;=</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">9</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">urllib.request</span> <span class="k">import</span> <span class="n">urlopen</span><span class="p">,</span> <span class="n">build_opener</span><span class="p">,</span> <span class="n">install_opener</span><span class="p">,</span> <span class="n">ProxyHandler</span>
<span class="kn">from</span> <span class="nn">urllib.error</span> <span class="k">import</span> <span class="n">URLError</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">urllib2</span> <span class="k">import</span> <span class="n">urlopen</span><span class="p">,</span> <span class="n">build_opener</span><span class="p">,</span> <span class="n">install_opener</span><span class="p">,</span> <span class="n">ProxyHandler</span><span class="p">,</span> <span class="n">URLError</span>
<span class="k">class</span> <span class="nc">PythonDownloadInstance</span><span class="p">(</span><span class="n">DownloadInstance</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">provider</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">PythonDownloadInstance</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">provider</span><span class="p">)</span>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<span class="k">def</span> <span class="nf">perform_destroy_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<span class="k">def</span> <span class="nf">perform_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">proxy_setting</span> <span class="o">=</span> <span class="n">Setting</span><span class="p">(</span><span class="s1">&#39;download-client&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">get_string</span><span class="p">(</span><span class="s1">&#39;https-proxy&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">proxy_setting</span><span class="p">:</span>
<span class="n">opener</span> <span class="o">=</span> <span class="n">build_opener</span><span class="p">(</span><span class="n">ProxyHandler</span><span class="p">({</span><span class="s1">&#39;https&#39;</span><span class="p">:</span> <span class="n">proxy_setting</span><span class="p">}))</span>
<span class="n">install_opener</span><span class="p">(</span><span class="n">opener</span><span class="p">)</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">urlopen</span><span class="p">(</span><span class="n">pyNativeStr</span><span class="p">(</span><span class="n">url</span><span class="p">))</span>
<span class="n">total_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;content-length&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
<span class="n">bytes_sent</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">4096</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">data</span><span class="p">:</span>
<span class="k">break</span>
<span class="n">raw_bytes</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="n">bytes_wrote</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNWriteDataForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">raw_bytes</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_bytes</span><span class="p">))</span>
<span class="k">if</span> <span class="n">bytes_wrote</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_bytes</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Bytes written mismatch!&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="n">bytes_sent</span> <span class="o">=</span> <span class="n">bytes_sent</span> <span class="o">+</span> <span class="n">bytes_wrote</span>
<span class="n">continue_download</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNotifyProgressForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">bytes_sent</span><span class="p">,</span> <span class="n">total_size</span><span class="p">)</span>
<span class="k">if</span> <span class="n">continue_download</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Download aborted!&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">bytes_sent</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Received no data!&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="k">except</span> <span class="n">URLError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Unknown Exception!&quot;</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="k">class</span> <span class="nc">PythonDownloadProvider</span><span class="p">(</span><span class="n">DownloadProvider</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;DefaultDownloadProvider&quot;</span>
<span class="n">instance_class</span> <span class="o">=</span> <span class="n">PythonDownloadInstance</span>
<span class="n">PythonDownloadProvider</span><span class="p">()</span><span class="o">.</span><span class="n">register</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">requests</span>
<span class="kn">from</span> <span class="nn">requests</span> <span class="k">import</span> <span class="n">pyopenssl</span>
<div class="viewcode-block" id="PythonDownloadInstance"><a class="viewcode-back" href="../../binaryninja.downloadprovider.PythonDownloadInstance.html#binaryninja.downloadprovider.PythonDownloadInstance">[docs]</a> <span class="k">class</span> <span class="nc">PythonDownloadInstance</span><span class="p">(</span><span class="n">DownloadInstance</span><span class="p">):</span>
<div class="viewcode-block" id="PythonDownloadInstance.__init__"><a class="viewcode-back" href="../../binaryninja.downloadprovider.PythonDownloadInstance.html#binaryninja.downloadprovider.PythonDownloadInstance.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">provider</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">PythonDownloadInstance</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">provider</span><span class="p">)</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonDownloadInstance.perform_destroy_instance"><a class="viewcode-back" href="../../binaryninja.downloadprovider-module.html#binaryninja.downloadprovider.PythonDownloadInstance.perform_destroy_instance">[docs]</a> <span class="k">def</span> <span class="nf">perform_destroy_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonDownloadInstance.perform_request"><a class="viewcode-back" href="../../binaryninja.downloadprovider-module.html#binaryninja.downloadprovider.PythonDownloadInstance.perform_request">[docs]</a> <span class="k">def</span> <span class="nf">perform_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">proxy_setting</span> <span class="o">=</span> <span class="n">Setting</span><span class="p">(</span><span class="s1">&#39;download-client&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">get_string</span><span class="p">(</span><span class="s1">&#39;https-proxy&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">proxy_setting</span><span class="p">:</span>
<span class="n">proxies</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;https&quot;</span><span class="p">:</span> <span class="n">proxy_setting</span><span class="p">}</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">proxies</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pyNativeStr</span><span class="p">(</span><span class="n">url</span><span class="p">),</span> <span class="n">proxies</span><span class="o">=</span><span class="n">proxies</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">r</span><span class="o">.</span><span class="n">ok</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Received error from server&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">content</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;No data received from server!&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="n">raw_bytes</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="n">bytes_wrote</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNWriteDataForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">raw_bytes</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_bytes</span><span class="p">))</span>
<span class="k">if</span> <span class="n">bytes_wrote</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_bytes</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Bytes written mismatch!&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="n">continue_download</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNotifyProgressForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">bytes_wrote</span><span class="p">,</span> <span class="n">bytes_wrote</span><span class="p">)</span>
<span class="k">if</span> <span class="n">continue_download</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Download aborted!&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="k">except</span> <span class="n">requests</span><span class="o">.</span><span class="n">RequestException</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetErrorForDownloadInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Unknown Exception!&quot;</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
<span class="k">return</span> <span class="mi">0</span></div></div>
<div class="viewcode-block" id="PythonDownloadProvider"><a class="viewcode-back" href="../../binaryninja.downloadprovider.PythonDownloadProvider.html#binaryninja.downloadprovider.PythonDownloadProvider">[docs]</a> <span class="k">class</span> <span class="nc">PythonDownloadProvider</span><span class="p">(</span><span class="n">DownloadProvider</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;DefaultDownloadProvider&quot;</span>
<span class="n">instance_class</span> <span class="o">=</span> <span class="n">PythonDownloadInstance</span></div>
<span class="n">PythonDownloadProvider</span><span class="p">()</span><span class="o">.</span><span class="n">register</span><span class="p">()</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s2">&quot;win32&quot;</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="s2">&quot;Provided Python version is too old! Only Python 2.7.10 and above are known to work on Windows!&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="s2">&quot;On Python versions below 2.7.9, the pip requests[security] package is required for network connectivity!&quot;</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="s2">&quot;On an Ubuntu 14.04 install, the following three commands are sufficient to enable networking for the current user:&quot;</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="s2">&quot; sudo apt install python-pip&quot;</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="s2">&quot; python -m pip install pip --upgrade --user&quot;</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="s2">&quot; python -m pip install requests[security] --upgrade --user&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,328 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.fileaccessor &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.fileaccessor</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.fileaccessor</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<div class="viewcode-block" id="FileAccessor"><a class="viewcode-back" href="../../binaryninja.fileaccessor.FileAccessor.html#binaryninja.fileaccessor.FileAccessor">[docs]</a><span class="k">class</span> <span class="nc">FileAccessor</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="FileAccessor.__init__"><a class="viewcode-back" href="../../binaryninja.fileaccessor.FileAccessor.html#binaryninja.fileaccessor.FileAccessor.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNFileAccessor</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getLength</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getLength</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_length</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">read</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">read</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_read</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">write</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">write</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_write</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_length</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">_get_length</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_length</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="k">def</span> <span class="nf">_read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">dest</span><span class="p">,</span> <span class="n">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">length</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">length</span><span class="p">]</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">dest</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="k">def</span> <span class="nf">_write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">offset</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">offset</span><span class="p">,</span> <span class="n">data</span><span class="o">.</span><span class="n">raw</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="CoreFileAccessor"><a class="viewcode-back" href="../../binaryninja.fileaccessor.CoreFileAccessor.html#binaryninja.fileaccessor.CoreFileAccessor">[docs]</a><span class="k">class</span> <span class="nc">CoreFileAccessor</span><span class="p">(</span><span class="n">FileAccessor</span><span class="p">):</span>
<div class="viewcode-block" id="CoreFileAccessor.__init__"><a class="viewcode-back" href="../../binaryninja.fileaccessor.CoreFileAccessor.html#binaryninja.fileaccessor.CoreFileAccessor.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">accessor</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="n">accessor</span><span class="o">.</span><span class="n">context</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getLength</span> <span class="o">=</span> <span class="n">accessor</span><span class="o">.</span><span class="n">getLength</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">read</span> <span class="o">=</span> <span class="n">accessor</span><span class="o">.</span><span class="n">read</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">write</span> <span class="o">=</span> <span class="n">accessor</span><span class="o">.</span><span class="n">write</span></div>
<div class="viewcode-block" id="CoreFileAccessor.get_length"><a class="viewcode-back" href="../../binaryninja.fileaccessor-module.html#binaryninja.fileaccessor.CoreFileAccessor.get_length">[docs]</a> <span class="k">def</span> <span class="nf">get_length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getLength</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span><span class="p">)</span></div>
<div class="viewcode-block" id="CoreFileAccessor.read"><a class="viewcode-back" href="../../binaryninja.fileaccessor-module.html#binaryninja.fileaccessor.CoreFileAccessor.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
<span class="n">length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">return</span> <span class="n">data</span><span class="o">.</span><span class="n">raw</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">length</span><span class="p">]</span></div>
<div class="viewcode-block" id="CoreFileAccessor.write"><a class="viewcode-back" href="../../binaryninja.fileaccessor-module.html#binaryninja.fileaccessor.CoreFileAccessor.write">[docs]</a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">offset</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">value</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">offset</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">))</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,592 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.filemetadata &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.filemetadata</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.filemetadata</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja Components</span>
<span class="kn">import</span> <span class="nn">binaryninja</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">associateddatastore</span> <span class="c1">#required for _FileMetadataAssociatedDataStore</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">log</span>
<div class="viewcode-block" id="NavigationHandler"><a class="viewcode-back" href="../../binaryninja.filemetadata.NavigationHandler.html#binaryninja.filemetadata.NavigationHandler">[docs]</a><span class="k">class</span> <span class="nc">NavigationHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">_register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNavigationHandler</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getCurrentView</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getCurrentView</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_current_view</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getCurrentOffset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getCurrentOffset</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_current_offset</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">navigate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">navigate</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_navigate</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetFileMetadataNavigationHandler</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_current_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_current_view</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">view</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNAllocString</span><span class="p">(</span><span class="n">view</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_current_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_current_offset</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="k">def</span> <span class="nf">_navigate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">offset</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">navigate</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span></div>
<span class="k">class</span> <span class="nc">_FileMetadataAssociatedDataStore</span><span class="p">(</span><span class="n">associateddatastore</span><span class="o">.</span><span class="n">_AssociatedDataStore</span><span class="p">):</span>
<span class="n">_defaults</span> <span class="o">=</span> <span class="p">{}</span>
<div class="viewcode-block" id="FileMetadata"><a class="viewcode-back" href="../../binaryninja.filemetadata.FileMetadata.html#binaryninja.filemetadata.FileMetadata">[docs]</a><span class="k">class</span> <span class="nc">FileMetadata</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``class FileMetadata`` represents the file being analyzed by Binary Ninja. It is responsible for opening,</span>
<span class="sd"> closing, creating the database (.bndb) files, and is used to keep track of undoable actions.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">_associated_data</span> <span class="o">=</span> <span class="p">{}</span>
<div class="viewcode-block" id="FileMetadata.__init__"><a class="viewcode-back" href="../../binaryninja.filemetadata.FileMetadata.html#binaryninja.filemetadata.FileMetadata.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Instantiates a new FileMetadata class.</span>
<span class="sd"> :param filename: The string path to the file to be opened. Defaults to None.</span>
<span class="sd"> :param handle: A handle to the underlying C FileMetadata object. Defaults to None.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNFileMetadata</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateFileMetadata</span><span class="p">()</span>
<span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetFilename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">nav</span> <span class="o">=</span> <span class="kc">None</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">navigation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetFileMetadataNavigationHandler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeFileMetadata</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">FileMetadata</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">==</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">FileMetadata</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_unregister</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
<span class="n">handle</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="k">if</span> <span class="n">handle</span><span class="o">.</span><span class="n">value</span> <span class="ow">in</span> <span class="n">cls</span><span class="o">.</span><span class="n">_associated_data</span><span class="p">:</span>
<span class="k">del</span> <span class="n">cls</span><span class="o">.</span><span class="n">_associated_data</span><span class="p">[</span><span class="n">handle</span><span class="o">.</span><span class="n">value</span><span class="p">]</span>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="FileMetadata.set_default_session_data"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.set_default_session_data">[docs]</a> <span class="k">def</span> <span class="nf">set_default_session_data</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">_FileMetadataAssociatedDataStore</span><span class="o">.</span><span class="n">set_default</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">filename</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;The name of the file (read/write)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFilename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@filename</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">filename</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetFilename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">modified</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean result of whether the file is modified (Inverse of &#39;saved&#39; property) (read/write)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsFileModified</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@modified</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">modified</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMarkFileModified</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMarkFileSaved</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">analysis_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean result of whether the auto-analysis results have changed (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsAnalysisChanged</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">has_database</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the FileMetadata is backed by a database (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsBackedByDatabase</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">view</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCurrentView</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@view</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNavigate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">),</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCurrentOffset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">offset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;The current offset into the file (read/write)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCurrentOffset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@offset</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNavigate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCurrentView</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">),</span> <span class="n">value</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">raw</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Gets the &quot;Raw&quot; BinaryView of the file&quot;&quot;&quot;</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileViewOfType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="s2">&quot;Raw&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">view</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="bp">self</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">view</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">saved</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean result of whether the file has been saved (Inverse of &#39;modified&#39; property) (read/write)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsFileModified</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@saved</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">saved</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMarkFileSaved</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMarkFileModified</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">navigation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">nav</span>
<span class="nd">@navigation</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">navigation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">value</span><span class="o">.</span><span class="n">_register</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">nav</span> <span class="o">=</span> <span class="n">value</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">session_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Dictionary object where plugins can store arbitrary data associated with the file&quot;&quot;&quot;</span>
<span class="n">handle</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="k">if</span> <span class="n">handle</span><span class="o">.</span><span class="n">value</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">FileMetadata</span><span class="o">.</span><span class="n">_associated_data</span><span class="p">:</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">_FileMetadataAssociatedDataStore</span><span class="p">()</span>
<span class="n">FileMetadata</span><span class="o">.</span><span class="n">_associated_data</span><span class="p">[</span><span class="n">handle</span><span class="o">.</span><span class="n">value</span><span class="p">]</span> <span class="o">=</span> <span class="n">obj</span>
<span class="k">return</span> <span class="n">obj</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">FileMetadata</span><span class="o">.</span><span class="n">_associated_data</span><span class="p">[</span><span class="n">handle</span><span class="o">.</span><span class="n">value</span><span class="p">]</span>
<div class="viewcode-block" id="FileMetadata.close"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.close">[docs]</a> <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Closes the underlying file handle. It is recommended that this is done in a</span>
<span class="sd"> `finally` clause to avoid handle leaks.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNCloseFile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="FileMetadata.begin_undo_actions"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.begin_undo_actions">[docs]</a> <span class="k">def</span> <span class="nf">begin_undo_actions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``begin_undo_actions`` start recording actions taken so the can be undone at some point.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.begin_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.convert_to_nop(0x100012f1)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; bv.commit_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.undo()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNBeginUndoActions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="FileMetadata.commit_undo_actions"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.commit_undo_actions">[docs]</a> <span class="k">def</span> <span class="nf">commit_undo_actions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``commit_undo_actions`` commit the actions taken since the last commit to the undo database.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.begin_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.convert_to_nop(0x100012f1)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; bv.commit_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.undo()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNCommitUndoActions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="FileMetadata.undo"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.undo">[docs]</a> <span class="k">def</span> <span class="nf">undo</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``undo`` undo the last commited action in the undo database.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.begin_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.convert_to_nop(0x100012f1)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; bv.commit_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.undo()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.redo()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNUndo</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="FileMetadata.redo"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.redo">[docs]</a> <span class="k">def</span> <span class="nf">redo</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``redo`` redo the last commited action in the undo database.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.begin_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.convert_to_nop(0x100012f1)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; bv.commit_undo_actions()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.undo()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;xor eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.redo()</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f1)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRedo</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="FileMetadata.navigate"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.navigate">[docs]</a> <span class="k">def</span> <span class="nf">navigate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">offset</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNavigate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">view</span><span class="p">),</span> <span class="n">offset</span><span class="p">)</span></div>
<div class="viewcode-block" id="FileMetadata.create_database"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.create_database">[docs]</a> <span class="k">def</span> <span class="nf">create_database</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">progress_func</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">progress_func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateDatabase</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">raw</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateDatabaseWithProgress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">raw</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span>
<span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">cur</span><span class="p">,</span> <span class="n">total</span><span class="p">:</span> <span class="n">progress_func</span><span class="p">(</span><span class="n">cur</span><span class="p">,</span> <span class="n">total</span><span class="p">)))</span></div>
<div class="viewcode-block" id="FileMetadata.open_existing_database"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.open_existing_database">[docs]</a> <span class="k">def</span> <span class="nf">open_existing_database</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">progress_func</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">progress_func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNOpenExistingDatabase</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNOpenExistingDatabaseWithProgress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span>
<span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">cur</span><span class="p">,</span> <span class="n">total</span><span class="p">:</span> <span class="n">progress_func</span><span class="p">(</span><span class="n">cur</span><span class="p">,</span> <span class="n">total</span><span class="p">)))</span>
<span class="k">if</span> <span class="n">view</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="bp">self</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">view</span><span class="p">)</span></div>
<div class="viewcode-block" id="FileMetadata.save_auto_snapshot"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.save_auto_snapshot">[docs]</a> <span class="k">def</span> <span class="nf">save_auto_snapshot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">progress_func</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">progress_func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSaveAutoSnapshot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">raw</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSaveAutoSnapshotWithProgress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">raw</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span>
<span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">cur</span><span class="p">,</span> <span class="n">total</span><span class="p">:</span> <span class="n">progress_func</span><span class="p">(</span><span class="n">cur</span><span class="p">,</span> <span class="n">total</span><span class="p">)))</span></div>
<div class="viewcode-block" id="FileMetadata.get_view_of_type"><a class="viewcode-back" href="../../binaryninja.filemetadata-module.html#binaryninja.filemetadata.FileMetadata.get_view_of_type">[docs]</a> <span class="k">def</span> <span class="nf">get_view_of_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileViewOfType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
<span class="k">if</span> <span class="n">view</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">view_type</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBinaryViewTypeByName</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
<span class="k">if</span> <span class="n">view_type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateBinaryViewOfType</span><span class="p">(</span><span class="n">view_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">raw</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">view</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="bp">self</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">view</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">object</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,321 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.functionrecognizer &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.functionrecognizer</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.functionrecognizer</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">function</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">filemetadata</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">binaryview</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">lowlevelil</span>
<div class="viewcode-block" id="FunctionRecognizer"><a class="viewcode-back" href="../../binaryninja.functionrecognizer.FunctionRecognizer.html#binaryninja.functionrecognizer.FunctionRecognizer">[docs]</a><span class="k">class</span> <span class="nc">FunctionRecognizer</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="n">_instance</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="FunctionRecognizer.__init__"><a class="viewcode-back" href="../../binaryninja.functionrecognizer.FunctionRecognizer.html#binaryninja.functionrecognizer.FunctionRecognizer.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNFunctionRecognizer</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">recognizeLowLevelIL</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">recognizeLowLevelIL</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_recognize_low_level_il</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">recognizeMediumLevelIL</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">recognizeMediumLevelIL</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_recognize_medium_level_il</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="FunctionRecognizer.register_global"><a class="viewcode-back" href="../../binaryninja.functionrecognizer-module.html#binaryninja.functionrecognizer.FunctionRecognizer.register_global">[docs]</a> <span class="k">def</span> <span class="nf">register_global</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">_instance</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_instance</span> <span class="o">=</span> <span class="n">cls</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterGlobalFunctionRecognizer</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">_instance</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="FunctionRecognizer.register_arch"><a class="viewcode-back" href="../../binaryninja.functionrecognizer-module.html#binaryninja.functionrecognizer.FunctionRecognizer.register_arch">[docs]</a> <span class="k">def</span> <span class="nf">register_arch</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">arch</span><span class="p">):</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">_instance</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_instance</span> <span class="o">=</span> <span class="n">cls</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterArchitectureFunctionRecognizer</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">cls</span><span class="o">.</span><span class="n">_instance</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_recognize_low_level_il</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">il</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">il</span> <span class="o">=</span> <span class="n">lowlevelil</span><span class="o">.</span><span class="n">LowLevelILFunction</span><span class="p">(</span><span class="n">func</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewLowLevelILFunctionReference</span><span class="p">(</span><span class="n">il</span><span class="p">))</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">recognize_low_level_il</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">il</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<div class="viewcode-block" id="FunctionRecognizer.recognize_low_level_il"><a class="viewcode-back" href="../../binaryninja.functionrecognizer-module.html#binaryninja.functionrecognizer.FunctionRecognizer.recognize_low_level_il">[docs]</a> <span class="k">def</span> <span class="nf">recognize_low_level_il</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">il</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span></div>
<span class="k">def</span> <span class="nf">_recognize_medium_level_il</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">il</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">il</span> <span class="o">=</span> <span class="n">mediumlevelil</span><span class="o">.</span><span class="n">MediumLevelILFunction</span><span class="p">(</span><span class="n">func</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewMediumLevelILFunctionReference</span><span class="p">(</span><span class="n">il</span><span class="p">))</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">recognize_medium_level_il</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">il</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<div class="viewcode-block" id="FunctionRecognizer.recognize_medium_level_il"><a class="viewcode-back" href="../../binaryninja.functionrecognizer-module.html#binaryninja.functionrecognizer.FunctionRecognizer.recognize_medium_level_il">[docs]</a> <span class="k">def</span> <span class="nf">recognize_medium_level_il</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">il</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,354 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.highlight &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.highlight</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.highlight</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">HighlightColorStyle</span><span class="p">,</span> <span class="n">HighlightStandardColor</span>
<div class="viewcode-block" id="HighlightColor"><a class="viewcode-back" href="../../binaryninja.highlight.HighlightColor.html#binaryninja.highlight.HighlightColor">[docs]</a><span class="k">class</span> <span class="nc">HighlightColor</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="HighlightColor.__init__"><a class="viewcode-back" href="../../binaryninja.highlight.HighlightColor.html#binaryninja.highlight.HighlightColor.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">mix_color</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">mix</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">red</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">green</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">blue</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">alpha</span> <span class="o">=</span> <span class="mi">255</span><span class="p">):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">red</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">green</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">blue</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">CustomHighlightColor</span>
<span class="bp">self</span><span class="o">.</span><span class="n">red</span> <span class="o">=</span> <span class="n">red</span>
<span class="bp">self</span><span class="o">.</span><span class="n">green</span> <span class="o">=</span> <span class="n">green</span>
<span class="bp">self</span><span class="o">.</span><span class="n">blue</span> <span class="o">=</span> <span class="n">blue</span>
<span class="k">elif</span> <span class="p">(</span><span class="n">mix_color</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">mix</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">MixedHighlightColor</span>
<span class="k">if</span> <span class="n">color</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">NoHighlightColor</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="n">color</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mix_color</span> <span class="o">=</span> <span class="n">mix_color</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mix</span> <span class="o">=</span> <span class="n">mix</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">StandardHighlightColor</span>
<span class="k">if</span> <span class="n">color</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">NoHighlightColor</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="n">color</span>
<span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">=</span> <span class="n">alpha</span></div>
<span class="k">def</span> <span class="nf">_standard_color_to_str</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">color</span><span class="p">):</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">NoHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;none&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">BlueHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;blue&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">GreenHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;green&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">CyanHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;cyan&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">RedHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;red&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">MagentaHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;magenta&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">YellowHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;yellow&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">OrangeHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;orange&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">WhiteHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;white&quot;</span>
<span class="k">if</span> <span class="n">color</span> <span class="o">==</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">BlackHighlightColor</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;black&quot;</span>
<span class="k">return</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">color</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">StandardHighlightColor</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">==</span> <span class="mi">255</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;color: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_standard_color_to_str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">color</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;&lt;color: </span><span class="si">%s</span><span class="s2">, alpha </span><span class="si">%d</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_standard_color_to_str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">color</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">alpha</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">MixedHighlightColor</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">==</span> <span class="mi">255</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;color: mix </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2"> factor </span><span class="si">%d</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_standard_color_to_str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">color</span><span class="p">),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_standard_color_to_str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mix_color</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">mix</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;&lt;color: mix </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2"> factor </span><span class="si">%d</span><span class="s2">, alpha </span><span class="si">%d</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_standard_color_to_str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">color</span><span class="p">),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_standard_color_to_str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mix_color</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">mix</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">alpha</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">CustomHighlightColor</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">==</span> <span class="mi">255</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;color: #</span><span class="si">%.2x%.2x%.2x</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">red</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">green</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">blue</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;&lt;color: #</span><span class="si">%.2x%.2x%.2x</span><span class="s2">, alpha </span><span class="si">%d</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">red</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">green</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">blue</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">alpha</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;&lt;color&gt;&quot;</span>
<span class="k">def</span> <span class="nf">_get_core_struct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNHighlightColor</span><span class="p">()</span>
<span class="n">result</span><span class="o">.</span><span class="n">style</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">style</span>
<span class="n">result</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">NoHighlightColor</span>
<span class="n">result</span><span class="o">.</span><span class="n">mix_color</span> <span class="o">=</span> <span class="n">HighlightStandardColor</span><span class="o">.</span><span class="n">NoHighlightColor</span>
<span class="n">result</span><span class="o">.</span><span class="n">mix</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">result</span><span class="o">.</span><span class="n">r</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">result</span><span class="o">.</span><span class="n">g</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">result</span><span class="o">.</span><span class="n">b</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">result</span><span class="o">.</span><span class="n">alpha</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alpha</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">StandardHighlightColor</span><span class="p">:</span>
<span class="n">result</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">color</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">MixedHighlightColor</span><span class="p">:</span>
<span class="n">result</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">color</span>
<span class="n">result</span><span class="o">.</span><span class="n">mixColor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mix_color</span>
<span class="n">result</span><span class="o">.</span><span class="n">mix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mix</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">style</span> <span class="o">==</span> <span class="n">HighlightColorStyle</span><span class="o">.</span><span class="n">CustomHighlightColor</span><span class="p">:</span>
<span class="n">result</span><span class="o">.</span><span class="n">r</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">red</span>
<span class="n">result</span><span class="o">.</span><span class="n">g</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">green</span>
<span class="n">result</span><span class="o">.</span><span class="n">b</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">blue</span>
<span class="k">return</span> <span class="n">result</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,289 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.lineardisassembly &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.lineardisassembly</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.lineardisassembly</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<div class="viewcode-block" id="LinearDisassemblyPosition"><a class="viewcode-back" href="../../binaryninja.lineardisassembly.LinearDisassemblyPosition.html#binaryninja.lineardisassembly.LinearDisassemblyPosition">[docs]</a><span class="k">class</span> <span class="nc">LinearDisassemblyPosition</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``class LinearDisassemblyPosition`` is a helper object containing the position of the current Linear Disassembly.</span>
<span class="sd"> .. note:: This object should not be instantiated directly. Rather call \</span>
<span class="sd"> :py:meth:`get_linear_disassembly_position_at` which instantiates this object.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="LinearDisassemblyPosition.__init__"><a class="viewcode-back" href="../../binaryninja.lineardisassembly.LinearDisassemblyPosition.html#binaryninja.lineardisassembly.LinearDisassemblyPosition.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">function</span> <span class="o">=</span> <span class="n">func</span>
<span class="bp">self</span><span class="o">.</span><span class="n">block</span> <span class="o">=</span> <span class="n">block</span>
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">addr</span></div></div>
<div class="viewcode-block" id="LinearDisassemblyLine"><a class="viewcode-back" href="../../binaryninja.lineardisassembly.LinearDisassemblyLine.html#binaryninja.lineardisassembly.LinearDisassemblyLine">[docs]</a><span class="k">class</span> <span class="nc">LinearDisassemblyLine</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="LinearDisassemblyLine.__init__"><a class="viewcode-back" href="../../binaryninja.lineardisassembly.LinearDisassemblyLine.html#binaryninja.lineardisassembly.LinearDisassemblyLine.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">line_type</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">block</span><span class="p">,</span> <span class="n">line_offset</span><span class="p">,</span> <span class="n">contents</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">line_type</span>
<span class="bp">self</span><span class="o">.</span><span class="n">function</span> <span class="o">=</span> <span class="n">func</span>
<span class="bp">self</span><span class="o">.</span><span class="n">block</span> <span class="o">=</span> <span class="n">block</span>
<span class="bp">self</span><span class="o">.</span><span class="n">line_offset</span> <span class="o">=</span> <span class="n">line_offset</span>
<span class="bp">self</span><span class="o">.</span><span class="n">contents</span> <span class="o">=</span> <span class="n">contents</span></div>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,426 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.log &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.log</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.log</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">LogLevel</span>
<span class="n">_output_to_log</span> <span class="o">=</span> <span class="kc">False</span>
<div class="viewcode-block" id="redirect_output_to_log"><a class="viewcode-back" href="../../binaryninja.log.redirect_output_to_log.html#binaryninja.log.redirect_output_to_log">[docs]</a><span class="k">def</span> <span class="nf">redirect_output_to_log</span><span class="p">():</span>
<span class="k">global</span> <span class="n">_output_to_log</span>
<span class="n">_output_to_log</span> <span class="o">=</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="is_output_redirected_to_log"><a class="viewcode-back" href="../../binaryninja.log.is_output_redirected_to_log.html#binaryninja.log.is_output_redirected_to_log">[docs]</a><span class="k">def</span> <span class="nf">is_output_redirected_to_log</span><span class="p">():</span>
<span class="k">global</span> <span class="n">_output_to_log</span>
<span class="k">return</span> <span class="n">_output_to_log</span></div>
<div class="viewcode-block" id="log"><a class="viewcode-back" href="../../binaryninja.log.log.html#binaryninja.log.log">[docs]</a><span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log`` writes messages to the log console for the given log level.</span>
<span class="sd"> ============ ======== =======================================================================</span>
<span class="sd"> LogLevelName LogLevel Description</span>
<span class="sd"> ============ ======== =======================================================================</span>
<span class="sd"> DebugLog 0 Logs debuging information messages to the console.</span>
<span class="sd"> InfoLog 1 Logs general information messages to the console.</span>
<span class="sd"> WarningLog 2 Logs message to console with **Warning** icon.</span>
<span class="sd"> ErrorLog 3 Logs message to console with **Error** icon, focusing the error console.</span>
<span class="sd"> AlertLog 4 Logs message to pop up window.</span>
<span class="sd"> ============ ======== =======================================================================</span>
<span class="sd"> :param LogLevel level: Log level to use</span>
<span class="sd"> :param str text: message to print</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLog</span><span class="p">(</span><span class="n">level</span><span class="p">,</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_debug"><a class="viewcode-back" href="../../binaryninja.log.log_debug.html#binaryninja.log.log_debug">[docs]</a><span class="k">def</span> <span class="nf">log_debug</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_debug`` Logs debuging information messages to the console.</span>
<span class="sd"> :param str text: message to print</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; log_to_stdout(LogLevel.DebugLog)</span>
<span class="sd"> &gt;&gt;&gt; log_debug(&quot;Hotdogs!&quot;)</span>
<span class="sd"> Hotdogs!</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogDebug</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_info"><a class="viewcode-back" href="../../binaryninja.log.log_info.html#binaryninja.log.log_info">[docs]</a><span class="k">def</span> <span class="nf">log_info</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_info`` Logs general information messages to the console.</span>
<span class="sd"> :param str text: message to print</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; log_info(&quot;Saucisson!&quot;)</span>
<span class="sd"> Saucisson!</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogInfo</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_warn"><a class="viewcode-back" href="../../binaryninja.log.log_warn.html#binaryninja.log.log_warn">[docs]</a><span class="k">def</span> <span class="nf">log_warn</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_warn`` Logs message to console, if run through the GUI it logs with **Warning** icon.</span>
<span class="sd"> :param str text: message to print</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; log_to_stdout(LogLevel.DebugLog)</span>
<span class="sd"> &gt;&gt;&gt; log_info(&quot;Chilidogs!&quot;)</span>
<span class="sd"> Chilidogs!</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogWarn</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_error"><a class="viewcode-back" href="../../binaryninja.log.log_error.html#binaryninja.log.log_error">[docs]</a><span class="k">def</span> <span class="nf">log_error</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_error`` Logs message to console, if run through the GUI it logs with **Error** icon, focusing the error console.</span>
<span class="sd"> :param str text: message to print</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; log_to_stdout(LogLevel.DebugLog)</span>
<span class="sd"> &gt;&gt;&gt; log_error(&quot;Spanferkel!&quot;)</span>
<span class="sd"> Spanferkel!</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogError</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_alert"><a class="viewcode-back" href="../../binaryninja.log.log_alert.html#binaryninja.log.log_alert">[docs]</a><span class="k">def</span> <span class="nf">log_alert</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_alert`` Logs message console and to a pop up window if run through the GUI.</span>
<span class="sd"> :param str text: message to print</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; log_to_stdout(LogLevel.DebugLog)</span>
<span class="sd"> &gt;&gt;&gt; log_alert(&quot;Kielbasa!&quot;)</span>
<span class="sd"> Kielbasa!</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogAlert</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_to_stdout"><a class="viewcode-back" href="../../binaryninja.log.log_to_stdout.html#binaryninja.log.log_to_stdout">[docs]</a><span class="k">def</span> <span class="nf">log_to_stdout</span><span class="p">(</span><span class="n">min_level</span><span class="o">=</span><span class="n">LogLevel</span><span class="o">.</span><span class="n">InfoLog</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_to_stdout`` redirects minimum log level to standard out.</span>
<span class="sd"> :param int min_level: minimum level to log to</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; log_debug(&quot;Hotdogs!&quot;)</span>
<span class="sd"> &gt;&gt;&gt; log_to_stdout(LogLevel.DebugLog)</span>
<span class="sd"> &gt;&gt;&gt; log_debug(&quot;Hotdogs!&quot;)</span>
<span class="sd"> Hotdogs!</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogToStdout</span><span class="p">(</span><span class="n">min_level</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_to_stderr"><a class="viewcode-back" href="../../binaryninja.log.log_to_stderr.html#binaryninja.log.log_to_stderr">[docs]</a><span class="k">def</span> <span class="nf">log_to_stderr</span><span class="p">(</span><span class="n">min_level</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_to_stderr`` redirects minimum log level to standard error.</span>
<span class="sd"> :param int min_level: minimum level to log to</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogToStderr</span><span class="p">(</span><span class="n">min_level</span><span class="p">)</span></div>
<div class="viewcode-block" id="log_to_file"><a class="viewcode-back" href="../../binaryninja.log.log_to_file.html#binaryninja.log.log_to_file">[docs]</a><span class="k">def</span> <span class="nf">log_to_file</span><span class="p">(</span><span class="n">min_level</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">append</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``log_to_file`` redirects minimum log level to a file named ``path``, optionally appending rather than overwritting.</span>
<span class="sd"> :param int min_level: minimum level to log to</span>
<span class="sd"> :param str path: path to log to</span>
<span class="sd"> :param bool append: optional flag for specifying appending. True = append, False = overwrite.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNLogToFile</span><span class="p">(</span><span class="n">min_level</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">path</span><span class="p">),</span> <span class="n">append</span><span class="p">)</span></div>
<div class="viewcode-block" id="close_logs"><a class="viewcode-back" href="../../binaryninja.log.close_logs.html#binaryninja.log.close_logs">[docs]</a><span class="k">def</span> <span class="nf">close_logs</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``close_logs`` close all log files.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNCloseLogs</span><span class="p">()</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,301 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.mainthread &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.mainthread</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.mainthread</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">scriptingprovider</span>
<div class="viewcode-block" id="execute_on_main_thread"><a class="viewcode-back" href="../../binaryninja.mainthread.execute_on_main_thread.html#binaryninja.mainthread.execute_on_main_thread">[docs]</a><span class="k">def</span> <span class="nf">execute_on_main_thread</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
<span class="n">action</span> <span class="o">=</span> <span class="n">scriptingprovider</span><span class="o">.</span><span class="n">_ThreadActionContext</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNExecuteOnMainThread</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">action</span><span class="o">.</span><span class="n">callback</span><span class="p">)</span>
<span class="k">if</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span> <span class="n">scriptingprovider</span><span class="o">.</span><span class="n">MainThreadAction</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="execute_on_main_thread_and_wait"><a class="viewcode-back" href="../../binaryninja.mainthread.execute_on_main_thread_and_wait.html#binaryninja.mainthread.execute_on_main_thread_and_wait">[docs]</a><span class="k">def</span> <span class="nf">execute_on_main_thread_and_wait</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
<span class="n">action</span> <span class="o">=</span> <span class="n">scriptingprovider</span><span class="o">.</span><span class="n">_ThreadActionContext</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNExecuteOnMainThreadAndWait</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">action</span><span class="o">.</span><span class="n">callback</span><span class="p">)</span></div>
<div class="viewcode-block" id="worker_enqueue"><a class="viewcode-back" href="../../binaryninja.mainthread.worker_enqueue.html#binaryninja.mainthread.worker_enqueue">[docs]</a><span class="k">def</span> <span class="nf">worker_enqueue</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
<span class="n">action</span> <span class="o">=</span> <span class="n">scriptingprovider</span><span class="o">.</span><span class="n">_ThreadActionContext</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNWorkerEnqueue</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">action</span><span class="o">.</span><span class="n">callback</span><span class="p">)</span></div>
<div class="viewcode-block" id="worker_priority_enqueue"><a class="viewcode-back" href="../../binaryninja.mainthread.worker_priority_enqueue.html#binaryninja.mainthread.worker_priority_enqueue">[docs]</a><span class="k">def</span> <span class="nf">worker_priority_enqueue</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
<span class="n">action</span> <span class="o">=</span> <span class="n">scriptingprovider</span><span class="o">.</span><span class="n">_ThreadActionContext</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNWorkerPriorityEnqueue</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">action</span><span class="o">.</span><span class="n">callback</span><span class="p">)</span></div>
<div class="viewcode-block" id="worker_interactive_enqueue"><a class="viewcode-back" href="../../binaryninja.mainthread.worker_interactive_enqueue.html#binaryninja.mainthread.worker_interactive_enqueue">[docs]</a><span class="k">def</span> <span class="nf">worker_interactive_enqueue</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
<span class="n">action</span> <span class="o">=</span> <span class="n">scriptingprovider</span><span class="o">.</span><span class="n">_ThreadActionContext</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNWorkerInteractiveEnqueue</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">action</span><span class="o">.</span><span class="n">callback</span><span class="p">)</span></div>
<div class="viewcode-block" id="get_worker_thread_count"><a class="viewcode-back" href="../../binaryninja.mainthread.get_worker_thread_count.html#binaryninja.mainthread.get_worker_thread_count">[docs]</a><span class="k">def</span> <span class="nf">get_worker_thread_count</span><span class="p">():</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetWorkerThreadCount</span><span class="p">()</span></div>
<div class="viewcode-block" id="set_worker_thread_count"><a class="viewcode-back" href="../../binaryninja.mainthread.set_worker_thread_count.html#binaryninja.mainthread.set_worker_thread_count">[docs]</a><span class="k">def</span> <span class="nf">set_worker_thread_count</span><span class="p">(</span><span class="n">count</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetWorkerThreadCount</span><span class="p">(</span><span class="n">count</span><span class="p">)</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,516 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.metadata &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.metadata</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.metadata</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">MetadataType</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">pyNativeStr</span>
<div class="viewcode-block" id="Metadata"><a class="viewcode-back" href="../../binaryninja.metadata.Metadata.html#binaryninja.metadata.Metadata">[docs]</a><span class="k">class</span> <span class="nc">Metadata</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="Metadata.__init__"><a class="viewcode-back" href="../../binaryninja.metadata.Metadata.html#binaryninja.metadata.Metadata.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">signed</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">raw</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
<span class="k">if</span> <span class="n">signed</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataSignedIntegerData</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataUnsignedIntegerData</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataBooleanData</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="k">if</span> <span class="n">raw</span><span class="p">:</span>
<span class="n">buffer</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">))</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataRawData</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataStringData</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataDoubleData</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataOfType</span><span class="p">(</span><span class="n">MetadataType</span><span class="o">.</span><span class="n">ArrayDataType</span><span class="p">)</span>
<span class="k">for</span> <span class="n">elm</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
<span class="n">md</span> <span class="o">=</span> <span class="n">Metadata</span><span class="p">(</span><span class="n">elm</span><span class="p">,</span> <span class="n">signed</span><span class="p">,</span> <span class="n">raw</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMetadataArrayAppend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">md</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateMetadataOfType</span><span class="p">(</span><span class="n">MetadataType</span><span class="o">.</span><span class="n">KeyValueDataType</span><span class="p">)</span>
<span class="k">for</span> <span class="n">elm</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
<span class="n">md</span> <span class="o">=</span> <span class="n">Metadata</span><span class="p">(</span><span class="n">value</span><span class="p">[</span><span class="n">elm</span><span class="p">],</span> <span class="n">signed</span><span class="p">,</span> <span class="n">raw</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMetadataSetValueForKey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">elm</span><span class="p">),</span> <span class="n">md</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;List doesn&#39;t not contain type of: int, bool, str, float, list, dict&quot;</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_integer</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_raw</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_float</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_boolean</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_array</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_dict</span><span class="p">()</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">()</span>
<div class="viewcode-block" id="Metadata.get_dict"><a class="viewcode-back" href="../../binaryninja.metadata-module.html#binaryninja.metadata.Metadata.get_dict">[docs]</a> <span class="k">def</span> <span class="nf">get_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">()</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">:</span>
<span class="n">result</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
<span class="k">return</span> <span class="n">result</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">MetadataType</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_integer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_signed_integer</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_unsigned_integer</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_signed_integer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsSignedInteger</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_unsigned_integer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsUnsignedInteger</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_float</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsDouble</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsBoolean</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_string</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_raw</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsRaw</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_array</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsArray</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataIsKeyValueStore</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<div class="viewcode-block" id="Metadata.remove"><a class="viewcode-back" href="../../binaryninja.metadata-module.html#binaryninja.metadata.Metadata.remove">[docs]</a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key_or_index</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key_or_index</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMetadataRemoveKey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">key_or_index</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key_or_index</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_array</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNMetadataRemoveIndex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">key_or_index</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;remove only valid for dict and array objects&quot;</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_array</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_raw</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataSize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Metadata object doesn&#39;t support len()&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_array</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNMetadataSize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)):</span>
<span class="k">yield</span> <span class="n">Metadata</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetForIndex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">i</span><span class="p">))</span><span class="o">.</span><span class="n">value</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetValueStore</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">size</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="nb">bytes</span><span class="p">):</span>
<span class="k">yield</span> <span class="nb">str</span><span class="p">(</span><span class="n">pyNativeStr</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">result</span><span class="o">.</span><span class="n">contents</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeMetadataValueStore</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Metadata object doesn&#39;t support iteration&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_array</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Metadata object only supports integers for indexing&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">value</span> <span class="o">&gt;=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;Index value out of range&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">Metadata</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetForIndex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span><span class="o">.</span><span class="n">value</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Metadata object only supports strings for indexing&quot;</span><span class="p">)</span>
<span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetForKey</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">Metadata</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">handle</span><span class="p">)</span><span class="o">.</span><span class="n">value</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;Metadata object doesn&#39;t support indexing&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_raw</span><span class="p">:</span>
<span class="n">length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">length</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">native_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetRaw</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
<span class="n">out_list</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">out_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">native_list</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeMetadataRaw</span><span class="p">(</span><span class="n">native_list</span><span class="p">)</span>
<span class="k">return</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">chr</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">out_list</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Metadata object not a string or raw type&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__int__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_signed_integer</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetSignedInteger</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_unsigned_integer</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetUnsignedInteger</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Metadata object not of integer type&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__float__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_float</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Metadata object is not float type&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetDouble</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_boolean</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Metadata object is not boolean type&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMetadataGetBoolean</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_integer</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_raw</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_float</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">bool</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_boolean</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">other</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_array</span> <span class="ow">and</span> <span class="p">((</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_array</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="k">if</span> <span class="n">a</span> <span class="o">!=</span> <span class="n">b</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span> <span class="ow">and</span> <span class="p">((</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_dict</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="k">if</span> <span class="n">a</span> <span class="o">!=</span> <span class="n">b</span> <span class="ow">or</span> <span class="bp">self</span><span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="o">!=</span> <span class="n">other</span><span class="p">[</span><span class="n">b</span><span class="p">]:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_integer</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_integer</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="nb">int</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_raw</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">is_raw</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_float</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_float</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="nb">float</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_boolean</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_boolean</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="nb">bool</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_integer</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="n">other</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_raw</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="n">other</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_float</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="n">other</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="n">other</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_array</span> <span class="ow">and</span> <span class="p">((</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_array</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">areEqual</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="k">if</span> <span class="n">a</span> <span class="o">!=</span> <span class="n">b</span><span class="p">:</span>
<span class="n">areEqual</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">return</span> <span class="ow">not</span> <span class="n">areEqual</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_dict</span> <span class="ow">and</span> <span class="p">((</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_dict</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="nb">dict</span><span class="p">)):</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="k">if</span> <span class="n">a</span> <span class="o">!=</span> <span class="n">b</span> <span class="ow">or</span> <span class="bp">self</span><span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="o">!=</span> <span class="n">other</span><span class="p">[</span><span class="n">b</span><span class="p">]:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_integer</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_integer</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">int</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_raw</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">is_string</span> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">is_raw</span><span class="p">):</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">str</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_float</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_float</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">float</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Metadata</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_boolean</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">is_boolean</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">bool</span><span class="p">(</span><span class="n">other</span><span class="p">)</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,704 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.platform &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.platform</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.platform</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">import</span> <span class="nn">binaryninja</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">types</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">with_metaclass</span>
<span class="k">class</span> <span class="nc">_PlatformMetaClass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">platforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Platform</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewPlatformReference</span><span class="p">(</span><span class="n">platforms</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePlatformList</span><span class="p">(</span><span class="n">platforms</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">os_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">platforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformOSList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">platforms</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePlatformOSList</span><span class="p">(</span><span class="n">platforms</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">platforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">yield</span> <span class="n">Platform</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewPlatformReference</span><span class="p">(</span><span class="n">platforms</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePlatformList</span><span class="p">(</span><span class="n">platforms</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">type</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">platform</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformByName</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">if</span> <span class="n">platform</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a valid platform&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">return</span> <span class="n">Platform</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">platform</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">get_list</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">os</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">arch</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="k">if</span> <span class="n">os</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">platforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">arch</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">platforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformListByOS</span><span class="p">(</span><span class="n">os</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">platforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformListByArchitecture</span><span class="p">(</span><span class="n">os</span><span class="p">,</span> <span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Platform</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewPlatformReference</span><span class="p">(</span><span class="n">platforms</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePlatformList</span><span class="p">(</span><span class="n">platforms</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<div class="viewcode-block" id="Platform"><a class="viewcode-back" href="../../binaryninja.platform.Platform.html#binaryninja.platform.Platform">[docs]</a><span class="k">class</span> <span class="nc">Platform</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_PlatformMetaClass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``class Platform`` contains all information releated to the execution environment of the binary, mainly the</span>
<span class="sd"> calling conventions used.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="Platform.__init__"><a class="viewcode-back" href="../../binaryninja.platform.Platform.html#binaryninja.platform.Platform.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arch</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arch</span> <span class="o">=</span> <span class="n">arch</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreatePlatform</span><span class="p">(</span><span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">arch</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">architecture</span><span class="o">.</span><span class="n">CoreArchitecture</span><span class="o">.</span><span class="n">_from_cache</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformArchitecture</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePlatform</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Platform</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">==</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Platform</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Allow tab completion to discover metaclass list property&quot;&quot;&quot;</span>
<span class="k">pass</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">default_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Default calling convention.</span>
<span class="sd"> :getter: returns a CallingConvention object for the default calling convention.</span>
<span class="sd"> :setter: sets the default calling convention</span>
<span class="sd"> :type: CallingConvention</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformDefaultCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">callingconvention</span><span class="o">.</span><span class="n">CallingConvention</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">result</span><span class="p">)</span>
<span class="nd">@default_calling_convention</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">default_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPlatformDefaultCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">cdecl_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Cdecl calling convention.</span>
<span class="sd"> :getter: returns a CallingConvention object for the cdecl calling convention.</span>
<span class="sd"> :setter sets the cdecl calling convention</span>
<span class="sd"> :type: CallingConvention</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformCdeclCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">callingconvention</span><span class="o">.</span><span class="n">CallingConvention</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">result</span><span class="p">)</span>
<span class="nd">@cdecl_calling_convention</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">cdecl_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPlatformCdeclCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">stdcall_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Stdcall calling convention.</span>
<span class="sd"> :getter: returns a CallingConvention object for the stdcall calling convention.</span>
<span class="sd"> :setter sets the stdcall calling convention</span>
<span class="sd"> :type: CallingConvention</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformStdcallCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">callingconvention</span><span class="o">.</span><span class="n">CallingConvention</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">result</span><span class="p">)</span>
<span class="nd">@stdcall_calling_convention</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">stdcall_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPlatformStdcallCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">fastcall_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Fastcall calling convention.</span>
<span class="sd"> :getter: returns a CallingConvention object for the fastcall calling convention.</span>
<span class="sd"> :setter sets the fastcall calling convention</span>
<span class="sd"> :type: CallingConvention</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformFastcallCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">callingconvention</span><span class="o">.</span><span class="n">CallingConvention</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">result</span><span class="p">)</span>
<span class="nd">@fastcall_calling_convention</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">fastcall_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPlatformFastcallCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">system_call_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> System call convention.</span>
<span class="sd"> :getter: returns a CallingConvention object for the system call convention.</span>
<span class="sd"> :setter sets the system call convention</span>
<span class="sd"> :type: CallingConvention</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformSystemCallConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">callingconvention</span><span class="o">.</span><span class="n">CallingConvention</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">result</span><span class="p">)</span>
<span class="nd">@system_call_convention</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">system_call_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetPlatformSystemCallConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">calling_conventions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> List of platform CallingConvention objects (read-only)</span>
<span class="sd"> :getter: returns the list of supported CallingConvention objects</span>
<span class="sd"> :type: list(CallingConvention)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">cc</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformCallingConventions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">callingconvention</span><span class="o">.</span><span class="n">CallingConvention</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewCallingConventionReference</span><span class="p">(</span><span class="n">cc</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeCallingConventionList</span><span class="p">(</span><span class="n">cc</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">types</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of platform-specific types (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">type_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformTypes</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">type_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">result</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">type_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTypeList</span><span class="p">(</span><span class="n">type_list</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">variables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of platform-specific variable definitions (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">type_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformVariables</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">type_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">result</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">type_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTypeList</span><span class="p">(</span><span class="n">type_list</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">functions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of platform-specific function definitions (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">type_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformFunctions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">type_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">result</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">type_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTypeList</span><span class="p">(</span><span class="n">type_list</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">system_calls</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of system calls for this platform (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">call_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformSystemCalls</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">call_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">t</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">call_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="n">result</span><span class="p">[</span><span class="n">call_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">number</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeSystemCallList</span><span class="p">(</span><span class="n">call_list</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">object</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;platform: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<div class="viewcode-block" id="Platform.register"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.register">[docs]</a> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">os</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register`` registers the platform for given OS name.</span>
<span class="sd"> :param str os: OS name to register</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPlatform</span><span class="p">(</span><span class="n">os</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.register_calling_convention"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.register_calling_convention">[docs]</a> <span class="k">def</span> <span class="nf">register_calling_convention</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cc</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_calling_convention`` register a new calling convention.</span>
<span class="sd"> :param CallingConvention cc: a CallingConvention object to register</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPlatformCallingConvention</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">cc</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.get_related_platform"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_related_platform">[docs]</a> <span class="k">def</span> <span class="nf">get_related_platform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arch</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetRelatedPlatform</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">Platform</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">result</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.add_related_platform"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.add_related_platform">[docs]</a> <span class="k">def</span> <span class="nf">add_related_platform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arch</span><span class="p">,</span> <span class="n">platform</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNAddRelatedPlatform</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">platform</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.get_associated_platform_by_address"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_associated_platform_by_address">[docs]</a> <span class="k">def</span> <span class="nf">get_associated_platform_by_address</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="n">new_addr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">new_addr</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">addr</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAssociatedPlatformByAddress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">new_addr</span><span class="p">)</span>
<span class="k">return</span> <span class="n">Platform</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">result</span><span class="p">),</span> <span class="n">new_addr</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="Platform.get_type_by_name"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_type_by_name">[docs]</a> <span class="k">def</span> <span class="nf">get_type_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">()</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformTypeByName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.get_variable_by_name"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_variable_by_name">[docs]</a> <span class="k">def</span> <span class="nf">get_variable_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">()</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformVariableByName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.get_function_by_name"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_function_by_name">[docs]</a> <span class="k">def</span> <span class="nf">get_function_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">()</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformFunctionByName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.get_system_call_name"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_system_call_name">[docs]</a> <span class="k">def</span> <span class="nf">get_system_call_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">number</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformSystemCallName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.get_system_call_type"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_system_call_type">[docs]</a> <span class="k">def</span> <span class="nf">get_system_call_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">number</span><span class="p">):</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformSystemCallType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.generate_auto_platform_type_id"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.generate_auto_platform_type_id">[docs]</a> <span class="k">def</span> <span class="nf">generate_auto_platform_type_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">()</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGenerateAutoPlatformTypeId</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.generate_auto_platform_type_ref"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.generate_auto_platform_type_ref">[docs]</a> <span class="k">def</span> <span class="nf">generate_auto_platform_type_ref</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_class</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">type_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">generate_auto_platform_type_id</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">NamedTypeReference</span><span class="p">(</span><span class="n">type_class</span><span class="p">,</span> <span class="n">type_id</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.get_auto_platform_type_id_source"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.get_auto_platform_type_id_source">[docs]</a> <span class="k">def</span> <span class="nf">get_auto_platform_type_id_source</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAutoPlatformTypeIdSource</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.parse_types_from_source"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.parse_types_from_source">[docs]</a> <span class="k">def</span> <span class="nf">parse_types_from_source</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">include_dirs</span><span class="o">=</span><span class="p">[],</span> <span class="n">auto_type_source</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``parse_types_from_source`` parses the source string and any needed headers searching for them in</span>
<span class="sd"> the optional list of directories provided in ``include_dirs``.</span>
<span class="sd"> :param str source: source string to be parsed</span>
<span class="sd"> :param str filename: optional source filename</span>
<span class="sd"> :param list(str) include_dirs: optional list of string filename include directories</span>
<span class="sd"> :param str auto_type_source: optional source of types if used for automatically generated types</span>
<span class="sd"> :return: :py:class:`TypeParserResult` (a SyntaxError is thrown on parse error)</span>
<span class="sd"> :rtype: TypeParserResult</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; platform.parse_types_from_source(&#39;int foo;\\nint bar(int x);\\nstruct bas{int x,y;};\\n&#39;)</span>
<span class="sd"> ({types: {&#39;bas&#39;: &lt;type: struct bas&gt;}, variables: {&#39;foo&#39;: &lt;type: int32_t&gt;}, functions:{&#39;bar&#39;:</span>
<span class="sd"> &lt;type: int32_t(int32_t x)&gt;}}, &#39;&#39;)</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">filename</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">filename</span> <span class="o">=</span> <span class="s2">&quot;input&quot;</span>
<span class="n">dir_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">include_dirs</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">include_dirs</span><span class="p">)):</span>
<span class="n">dir_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">include_dirs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">)</span>
<span class="n">parse</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNTypeParserResult</span><span class="p">()</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNParseTypesFromSource</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">source</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">parse</span><span class="p">,</span> <span class="n">errors</span><span class="p">,</span> <span class="n">dir_buf</span><span class="p">,</span>
<span class="nb">len</span><span class="p">(</span><span class="n">include_dirs</span><span class="p">),</span> <span class="n">auto_type_source</span><span class="p">)</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">SyntaxError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="n">type_dict</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">variables</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">functions</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">parse</span><span class="o">.</span><span class="n">typeCount</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">type_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">parse</span><span class="o">.</span><span class="n">variableCount</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">variables</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">parse</span><span class="o">.</span><span class="n">functionCount</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">functions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">functions</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">functions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTypeParserResult</span><span class="p">(</span><span class="n">parse</span><span class="p">)</span>
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">TypeParserResult</span><span class="p">(</span><span class="n">type_dict</span><span class="p">,</span> <span class="n">variables</span><span class="p">,</span> <span class="n">functions</span><span class="p">)</span></div>
<div class="viewcode-block" id="Platform.parse_types_from_source_file"><a class="viewcode-back" href="../../binaryninja.platform-module.html#binaryninja.platform.Platform.parse_types_from_source_file">[docs]</a> <span class="k">def</span> <span class="nf">parse_types_from_source_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">include_dirs</span><span class="o">=</span><span class="p">[],</span> <span class="n">auto_type_source</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``parse_types_from_source_file`` parses the source file ``filename`` and any needed headers searching for them in</span>
<span class="sd"> the optional list of directories provided in ``include_dirs``.</span>
<span class="sd"> :param str filename: filename of file to be parsed</span>
<span class="sd"> :param list(str) include_dirs: optional list of string filename include directories</span>
<span class="sd"> :param str auto_type_source: optional source of types if used for automatically generated types</span>
<span class="sd"> :return: :py:class:`TypeParserResult` (a SyntaxError is thrown on parse error)</span>
<span class="sd"> :rtype: TypeParserResult</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; file = &quot;/Users/binja/tmp.c&quot;</span>
<span class="sd"> &gt;&gt;&gt; open(file).read()</span>
<span class="sd"> &#39;int foo;\\nint bar(int x);\\nstruct bas{int x,y;};\\n&#39;</span>
<span class="sd"> &gt;&gt;&gt; platform.parse_types_from_source_file(file)</span>
<span class="sd"> ({types: {&#39;bas&#39;: &lt;type: struct bas&gt;}, variables: {&#39;foo&#39;: &lt;type: int32_t&gt;}, functions:</span>
<span class="sd"> {&#39;bar&#39;: &lt;type: int32_t(int32_t x)&gt;}}, &#39;&#39;)</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">dir_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">include_dirs</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">include_dirs</span><span class="p">)):</span>
<span class="n">dir_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">include_dirs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">)</span>
<span class="n">parse</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNTypeParserResult</span><span class="p">()</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNParseTypesFromSourceFile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">parse</span><span class="p">,</span> <span class="n">errors</span><span class="p">,</span> <span class="n">dir_buf</span><span class="p">,</span>
<span class="nb">len</span><span class="p">(</span><span class="n">include_dirs</span><span class="p">),</span> <span class="n">auto_type_source</span><span class="p">)</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">SyntaxError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="n">type_dict</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">variables</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">functions</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">parse</span><span class="o">.</span><span class="n">typeCount</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">type_dict</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">parse</span><span class="o">.</span><span class="n">variableCount</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">variables</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">parse</span><span class="o">.</span><span class="n">functionCount</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">QualifiedName</span><span class="o">.</span><span class="n">_from_core_struct</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">functions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">functions</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">parse</span><span class="o">.</span><span class="n">functions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">type</span><span class="p">),</span> <span class="n">platform</span> <span class="o">=</span> <span class="bp">self</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTypeParserResult</span><span class="p">(</span><span class="n">parse</span><span class="p">)</span>
<span class="k">return</span> <span class="n">types</span><span class="o">.</span><span class="n">TypeParserResult</span><span class="p">(</span><span class="n">type_dict</span><span class="p">,</span> <span class="n">variables</span><span class="p">,</span> <span class="n">functions</span><span class="p">)</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,903 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.plugin &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.plugin</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.plugin</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="kn">import</span> <span class="nn">threading</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">import</span> <span class="nn">binaryninja</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">PluginCommandType</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">filemetadata</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">binaryview</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">function</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">with_metaclass</span>
<div class="viewcode-block" id="PluginCommandContext"><a class="viewcode-back" href="../../binaryninja.plugin.PluginCommandContext.html#binaryninja.plugin.PluginCommandContext">[docs]</a><span class="k">class</span> <span class="nc">PluginCommandContext</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="PluginCommandContext.__init__"><a class="viewcode-back" href="../../binaryninja.plugin.PluginCommandContext.html#binaryninja.plugin.PluginCommandContext.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">view</span>
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">length</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">function</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">instruction</span> <span class="o">=</span> <span class="kc">None</span></div></div>
<span class="k">class</span> <span class="nc">_PluginCommandMetaClass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">commands</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAllPluginCommands</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">PluginCommand</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePluginCommandList</span><span class="p">(</span><span class="n">commands</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">commands</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAllPluginCommands</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">yield</span> <span class="n">PluginCommand</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePluginCommandList</span><span class="p">(</span><span class="n">commands</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">type</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<div class="viewcode-block" id="PluginCommand"><a class="viewcode-back" href="../../binaryninja.plugin.PluginCommand.html#binaryninja.plugin.PluginCommand">[docs]</a><span class="k">class</span> <span class="nc">PluginCommand</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_PluginCommandMetaClass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<span class="n">_registered_commands</span> <span class="o">=</span> <span class="p">[]</span>
<div class="viewcode-block" id="PluginCommand.__init__"><a class="viewcode-back" href="../../binaryninja.plugin.PluginCommand.html#binaryninja.plugin.PluginCommand.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginCommand</span><span class="p">()</span>
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">cmd</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNPluginCommand</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmd</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmd</span><span class="o">.</span><span class="n">description</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">PluginCommandType</span><span class="p">(</span><span class="n">cmd</span><span class="o">.</span><span class="n">type</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Allow tab completion to discover metaclass list property&quot;&quot;&quot;</span>
<span class="k">pass</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_default_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_address_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">addr</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_range_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_function_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_low_level_il_function_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetLowLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">lowlevelil</span><span class="o">.</span><span class="n">LowLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewLowLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_low_level_il_instruction_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetLowLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">lowlevelil</span><span class="o">.</span><span class="n">LowLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewLowLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">[</span><span class="n">instr</span><span class="p">])</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_medium_level_il_function_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetMediumLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">mediumlevelil</span><span class="o">.</span><span class="n">MediumLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewMediumLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_medium_level_il_instruction_action</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetMediumLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">mediumlevelil</span><span class="o">.</span><span class="n">MediumLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewMediumLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="n">action</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">[</span><span class="n">instr</span><span class="p">])</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_default_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_address_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">addr</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_range_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_function_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_low_level_il_function_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetLowLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">lowlevelil</span><span class="o">.</span><span class="n">LowLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewLowLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_low_level_il_instruction_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetLowLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">lowlevelil</span><span class="o">.</span><span class="n">LowLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewLowLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">[</span><span class="n">instr</span><span class="p">])</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_medium_level_il_function_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetMediumLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">mediumlevelil</span><span class="o">.</span><span class="n">MediumLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewMediumLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_medium_level_il_instruction_is_valid</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_valid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="n">file_metadata</span> <span class="o">=</span> <span class="n">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFileForView</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">view_obj</span> <span class="o">=</span> <span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span> <span class="o">=</span> <span class="n">file_metadata</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="n">owner</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetMediumLevelILOwnerFunction</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="n">func_obj</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">mediumlevelil</span><span class="o">.</span><span class="n">MediumLevelILFunction</span><span class="p">(</span><span class="n">owner</span><span class="o">.</span><span class="n">arch</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewMediumLevelILFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">),</span> <span class="n">owner</span><span class="p">)</span>
<span class="k">return</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">view_obj</span><span class="p">,</span> <span class="n">func_obj</span><span class="p">[</span><span class="n">instr</span><span class="p">])</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register">[docs]</a> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register`` Register a plugin</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` as an argument</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_default_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_default_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommand</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register_for_address"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register_for_address">[docs]</a> <span class="k">def</span> <span class="nf">register_for_address</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_for_address`` Register a plugin to be called with an address argument</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` and address as arguments</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register_for_address`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_address_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_address_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommandForAddress</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register_for_range"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register_for_range">[docs]</a> <span class="k">def</span> <span class="nf">register_for_range</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_for_range`` Register a plugin to be called with a range argument</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` and ``AddressRange`` as arguments</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register_for_range`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_range_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_range_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommandForRange</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register_for_function"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register_for_function">[docs]</a> <span class="k">def</span> <span class="nf">register_for_function</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_for_function`` Register a plugin to be called with a function argument</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` and a ``Function`` as arguments</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register_for_function`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNFunction</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_function_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNFunction</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_function_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommandForFunction</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register_for_low_level_il_function"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register_for_low_level_il_function">[docs]</a> <span class="k">def</span> <span class="nf">register_for_low_level_il_function</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_for_low_level_il_function`` Register a plugin to be called with a low level IL function argument</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` and a ``LowLevelILFunction`` as arguments</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register_for_low_level_il_function`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">startup</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNLowLevelILFunction</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_low_level_il_function_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNLowLevelILFunction</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_low_level_il_function_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommandForLowLevelILFunction</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register_for_low_level_il_instruction"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register_for_low_level_il_instruction">[docs]</a> <span class="k">def</span> <span class="nf">register_for_low_level_il_instruction</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_for_low_level_il_instruction`` Register a plugin to be called with a low level IL instruction argument</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` and a ``LowLevelILInstruction`` as arguments</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register_for_low_level_il_instruction`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">startup</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNLowLevelILFunction</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_low_level_il_instruction_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNLowLevelILFunction</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_low_level_il_instruction_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommandForLowLevelILInstruction</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register_for_medium_level_il_function"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register_for_medium_level_il_function">[docs]</a> <span class="k">def</span> <span class="nf">register_for_medium_level_il_function</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_for_medium_level_il_function`` Register a plugin to be called with a medium level IL function argument</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` and a ``MediumLevelILFunction`` as arguments</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register_for_medium_level_il_function`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">startup</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNMediumLevelILFunction</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_medium_level_il_function_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNMediumLevelILFunction</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_medium_level_il_function_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommandForMediumLevelILFunction</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.register_for_medium_level_il_instruction"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.register_for_medium_level_il_instruction">[docs]</a> <span class="k">def</span> <span class="nf">register_for_medium_level_il_instruction</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">is_valid</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_for_medium_level_il_instruction`` Register a plugin to be called with a medium level IL instruction argument</span>
<span class="sd"> :param str name: name of the plugin</span>
<span class="sd"> :param str description: description of the plugin</span>
<span class="sd"> :param action: function to call with the ``BinaryView`` and a ``MediumLevelILInstruction`` as arguments</span>
<span class="sd"> :param is_valid: optional argument of a function passed a ``BinaryView`` to determine whether the plugin should be enabled for that view</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> .. warning:: Calling ``register_for_medium_level_il_instruction`` with the same function name will replace the existing function but will leak the memory of the original plugin.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">startup</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">action_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNMediumLevelILFunction</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_medium_level_il_instruction_action</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">action</span><span class="p">))</span>
<span class="n">is_valid_obj</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNBinaryView</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNMediumLevelILFunction</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">:</span> <span class="n">cls</span><span class="o">.</span><span class="n">_medium_level_il_instruction_is_valid</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">instr</span><span class="p">,</span> <span class="n">is_valid</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_commands</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPluginCommandForMediumLevelILInstruction</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">action_obj</span><span class="p">,</span> <span class="n">is_valid_obj</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="PluginCommand.get_valid_list"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.get_valid_list">[docs]</a> <span class="k">def</span> <span class="nf">get_valid_list</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Dict of registered plugins&quot;&quot;&quot;</span>
<span class="n">commands</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">list</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">commands</span><span class="p">:</span>
<span class="k">if</span> <span class="n">cmd</span><span class="o">.</span><span class="n">is_valid</span><span class="p">(</span><span class="n">context</span><span class="p">):</span>
<span class="n">result</span><span class="p">[</span><span class="n">cmd</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">cmd</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="PluginCommand.is_valid"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.is_valid">[docs]</a> <span class="k">def</span> <span class="nf">is_valid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">DefaultPluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">defaultIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">defaultIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">AddressPluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">addressIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">addressIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">RangePluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">length</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">rangeIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">rangeIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">length</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">FunctionPluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">functionIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">functionIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">LowLevelILFunctionPluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">lowLevelILFunctionIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">lowLevelILFunctionIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">LowLevelILInstructionPluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">instruction</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="p">,</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">lowlevelil</span><span class="o">.</span><span class="n">LowLevelILInstruction</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">lowLevelILInstructionIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">lowLevelILInstructionIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span>
<span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">instr_index</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">MediumLevelILFunctionPluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">mediumLevelILFunctionIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">mediumLevelILFunctionIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">MediumLevelILInstructionPluginCommand</span><span class="p">:</span>
<span class="k">if</span> <span class="n">context</span><span class="o">.</span><span class="n">instruction</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="p">,</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">mediumlevelil</span><span class="o">.</span><span class="n">MediumLevelILInstruction</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">mediumLevelILInstructionIsValid</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">mediumLevelILInstructionIsValid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span>
<span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">instr_index</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">False</span></div>
<div class="viewcode-block" id="PluginCommand.execute"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.PluginCommand.execute">[docs]</a> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_valid</span><span class="p">(</span><span class="n">context</span><span class="p">):</span>
<span class="k">return</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">DefaultPluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">defaultCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">AddressPluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">addressCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">RangePluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">rangeCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">length</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">FunctionPluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">functionCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">LowLevelILFunctionPluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">lowLevelILFunctionCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">LowLevelILInstructionPluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">lowLevelILInstructionCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span>
<span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">instr_index</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">MediumLevelILFunctionPluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">mediumLevelILFunctionCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">PluginCommandType</span><span class="o">.</span><span class="n">MediumLevelILInstructionPluginCommand</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">mediumLevelILInstructionCommand</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command</span><span class="o">.</span><span class="n">context</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span>
<span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">context</span><span class="o">.</span><span class="n">instruction</span><span class="o">.</span><span class="n">instr_index</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;PluginCommand: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span></div>
<div class="viewcode-block" id="MainThreadAction"><a class="viewcode-back" href="../../binaryninja.plugin.MainThreadAction.html#binaryninja.plugin.MainThreadAction">[docs]</a><span class="k">class</span> <span class="nc">MainThreadAction</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="MainThreadAction.__init__"><a class="viewcode-back" href="../../binaryninja.plugin.MainThreadAction.html#binaryninja.plugin.MainThreadAction.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeMainThreadAction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<div class="viewcode-block" id="MainThreadAction.execute"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.MainThreadAction.execute">[docs]</a> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNExecuteMainThreadAction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">done</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsMainThreadActionDone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<div class="viewcode-block" id="MainThreadAction.wait"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.MainThreadAction.wait">[docs]</a> <span class="k">def</span> <span class="nf">wait</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNWaitForMainThreadAction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="MainThreadActionHandler"><a class="viewcode-back" href="../../binaryninja.plugin.MainThreadActionHandler.html#binaryninja.plugin.MainThreadActionHandler">[docs]</a><span class="k">class</span> <span class="nc">MainThreadActionHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="n">_main_thread</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="MainThreadActionHandler.__init__"><a class="viewcode-back" href="../../binaryninja.plugin.MainThreadActionHandler.html#binaryninja.plugin.MainThreadActionHandler.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNMainThreadCallbacks</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">addAction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">addAction</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_add_action</span><span class="p">)</span></div>
<div class="viewcode-block" id="MainThreadActionHandler.register"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.MainThreadActionHandler.register">[docs]</a> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">_main_thread</span> <span class="o">=</span> <span class="bp">self</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterMainThread</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_add_action</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">add_action</span><span class="p">(</span><span class="n">MainThreadAction</span><span class="p">(</span><span class="n">action</span><span class="p">))</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<div class="viewcode-block" id="MainThreadActionHandler.add_action"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.MainThreadActionHandler.add_action">[docs]</a> <span class="k">def</span> <span class="nf">add_action</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">action</span><span class="p">):</span>
<span class="k">pass</span></div></div>
<span class="k">class</span> <span class="nc">_BackgroundTaskMetaclass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List all running background tasks (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">tasks</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetRunningBackgroundTasks</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">BackgroundTask</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewBackgroundTaskReference</span><span class="p">(</span><span class="n">tasks</span><span class="p">[</span><span class="n">i</span><span class="p">])))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBackgroundTaskList</span><span class="p">(</span><span class="n">tasks</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">tasks</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetRunningBackgroundTasks</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">yield</span> <span class="n">BackgroundTask</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewBackgroundTaskReference</span><span class="p">(</span><span class="n">tasks</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBackgroundTaskList</span><span class="p">(</span><span class="n">tasks</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<div class="viewcode-block" id="BackgroundTask"><a class="viewcode-back" href="../../binaryninja.plugin.BackgroundTask.html#binaryninja.plugin.BackgroundTask">[docs]</a><span class="k">class</span> <span class="nc">BackgroundTask</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_BackgroundTaskMetaclass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<div class="viewcode-block" id="BackgroundTask.__init__"><a class="viewcode-back" href="../../binaryninja.plugin.BackgroundTask.html#binaryninja.plugin.BackgroundTask.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">initial_progress_text</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">can_cancel</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNBeginBackgroundTask</span><span class="p">(</span><span class="n">initial_progress_text</span><span class="p">,</span> <span class="n">can_cancel</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBackgroundTask</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Allow tab completion to discover metaclass list property&quot;&quot;&quot;</span>
<span class="k">pass</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">progress</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Text description of the progress of the background task (displayed in status bar of the UI)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBackgroundTaskProgressText</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@progress</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">progress</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetBackgroundTaskProgressText</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">can_cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the task can be cancelled (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCanCancelBackgroundTask</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">finished</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the task has finished&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsBackgroundTaskFinished</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@finished</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">finished</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">finish</span><span class="p">()</span>
<div class="viewcode-block" id="BackgroundTask.finish"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.BackgroundTask.finish">[docs]</a> <span class="k">def</span> <span class="nf">finish</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFinishBackgroundTask</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">cancelled</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the task has been cancelled&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsBackgroundTaskCancelled</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@cancelled</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">cancelled</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cancel</span><span class="p">()</span>
<div class="viewcode-block" id="BackgroundTask.cancel"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.BackgroundTask.cancel">[docs]</a> <span class="k">def</span> <span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNCancelBackgroundTask</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="BackgroundTaskThread"><a class="viewcode-back" href="../../binaryninja.plugin.BackgroundTaskThread.html#binaryninja.plugin.BackgroundTaskThread">[docs]</a><span class="k">class</span> <span class="nc">BackgroundTaskThread</span><span class="p">(</span><span class="n">BackgroundTask</span><span class="p">):</span>
<div class="viewcode-block" id="BackgroundTaskThread.__init__"><a class="viewcode-back" href="../../binaryninja.plugin.BackgroundTaskThread.html#binaryninja.plugin.BackgroundTaskThread.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">initial_progress_text</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">can_cancel</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
<span class="k">class</span> <span class="nc">_Thread</span><span class="p">(</span><span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">task</span><span class="p">):</span>
<span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span> <span class="o">=</span> <span class="n">task</span>
<span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span><span class="o">.</span><span class="n">finish</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">task</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">BackgroundTask</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">initial_progress_text</span><span class="p">,</span> <span class="n">can_cancel</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">thread</span> <span class="o">=</span> <span class="n">_Thread</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="BackgroundTaskThread.run"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.BackgroundTaskThread.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BackgroundTaskThread.start"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.BackgroundTaskThread.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span></div>
<div class="viewcode-block" id="BackgroundTaskThread.join"><a class="viewcode-back" href="../../binaryninja.plugin-module.html#binaryninja.plugin.BackgroundTaskThread.join">[docs]</a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">join</span><span class="p">()</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,640 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.pluginmanager &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.pluginmanager</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.pluginmanager</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<div class="viewcode-block" id="RepoPlugin"><a class="viewcode-back" href="../../binaryninja.pluginmanager.RepoPlugin.html#binaryninja.pluginmanager.RepoPlugin">[docs]</a><span class="k">class</span> <span class="nc">RepoPlugin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``RepoPlugin` is mostly read-only, however you can install/uninstall enable/disable plugins. RepoPlugins are</span>
<span class="sd"> created by parsing the plugins.json in a plugin repository.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">PluginType</span><span class="p">,</span> <span class="n">PluginUpdateStatus</span>
<div class="viewcode-block" id="RepoPlugin.__init__"><a class="viewcode-back" href="../../binaryninja.pluginmanager.RepoPlugin.html#binaryninja.pluginmanager.RepoPlugin.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;RepoPlugin temporarily disabled!&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepoPlugin</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePlugin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;</span><span class="si">{}</span><span class="s2"> </span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">&gt;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="s2">&quot;installed&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">installed</span> <span class="k">else</span> <span class="s2">&quot;not-installed&quot;</span><span class="p">,</span> <span class="s2">&quot;enabled&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">enabled</span> <span class="k">else</span> <span class="s2">&quot;disabled&quot;</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">path</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Relative path from the base of the repository to the actual plugin&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetPath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">installed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean True if the plugin is installed, False otherwise&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginIsInstalled</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@installed</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">installed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
<span class="k">if</span> <span class="n">state</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginInstall</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginUninstall</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">enabled</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean True if the plugin is currently enabled, False otherwise&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginIsEnabled</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@enabled</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">enabled</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
<span class="k">if</span> <span class="n">state</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginEnable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginDisable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">api</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;string indicating the api used by the plugin&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetApi</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">description</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String short description of the plugin&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetDescription</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">license</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String short license description (ie MIT, BSD, GPLv2, etc)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetLicense</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">license_text</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String complete license text for the given plugin&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetLicenseText</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">long_description</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String long description of the plugin&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetLongdescription</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">minimum_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String minimum version the plugin was tested on&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetMinimimVersions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String name of the plugin&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">plugin_types</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of PluginType enumeration objects indicating the plugin type(s)&quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">plugintypes</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetPluginTypes</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">PluginType</span><span class="p">(</span><span class="n">plugintypes</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreePluginTypes</span><span class="p">(</span><span class="n">plugintypes</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">url</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String url of the plugin&#39;s git repository&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetUrl</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String version of the plugin&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetVersion</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">update_status</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;PluginUpdateStatus enumeration indicating if the plugin is up to date or not&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">PluginUpdateStatus</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNPluginGetPluginUpdateStatus</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span></div>
<div class="viewcode-block" id="Repository"><a class="viewcode-back" href="../../binaryninja.pluginmanager.Repository.html#binaryninja.pluginmanager.Repository">[docs]</a><span class="k">class</span> <span class="nc">Repository</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``Repository`` is a read-only class. Use RepositoryManager to Enable/Disable/Install/Uninstall plugins.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="Repository.__init__"><a class="viewcode-back" href="../../binaryninja.pluginmanager.Repository.html#binaryninja.pluginmanager.Repository.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Repository temporarily disabled!&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepository</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeRepository</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;</span><span class="si">{}</span><span class="s2"> - </span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">&gt;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">remote_reference</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_reference</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin_path</span><span class="p">):</span>
<span class="k">for</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">:</span>
<span class="k">if</span> <span class="n">plugin_path</span> <span class="o">==</span> <span class="n">plugin</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
<span class="k">return</span> <span class="n">plugin</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">()</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">url</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String url of the git repository where the plugin repository&#39;s are stored&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryGetUrl</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">path</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String local path to store the given plugin repository&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryGetRepoPath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">full_path</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String full path the repository&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryGetPluginsPath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">local_reference</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String for the local git reference (ie &#39;master&#39;)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryGetLocalReference</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">remote_reference</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;String for the remote git reference (ie &#39;origin&#39;)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryGetRemoteReference</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">plugins</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of RepoPlugin objects contained within this repository&quot;&quot;&quot;</span>
<span class="n">pluginlist</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryGetPlugins</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">pluginlist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">RepoPlugin</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">result</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeRepositoryPluginList</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">del</span> <span class="n">result</span>
<span class="k">return</span> <span class="n">pluginlist</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">initialized</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean True when the repository has been initialized&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryIsInitialized</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="RepositoryManager"><a class="viewcode-back" href="../../binaryninja.pluginmanager.RepositoryManager.html#binaryninja.pluginmanager.RepositoryManager">[docs]</a><span class="k">class</span> <span class="nc">RepositoryManager</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``RepositoryManager`` Keeps track of all the repositories and keeps the enabled_plugins.json file coherent with</span>
<span class="sd"> the plugins that are installed/unstalled enabled/disabled</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="RepositoryManager.__init__"><a class="viewcode-back" href="../../binaryninja.pluginmanager.RepositoryManager.html#binaryninja.pluginmanager.RepositoryManager.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;RepositoryManager temporarily disabled!&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetRepositoryManager</span><span class="p">()</span></div>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">):</span>
<span class="k">for</span> <span class="n">repo</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">repositories</span><span class="p">:</span>
<span class="k">if</span> <span class="n">repo_path</span> <span class="o">==</span> <span class="n">repo</span><span class="o">.</span><span class="n">path</span><span class="p">:</span>
<span class="k">return</span> <span class="n">repo</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">()</span>
<div class="viewcode-block" id="RepositoryManager.check_for_updates"><a class="viewcode-back" href="../../binaryninja.pluginmanager-module.html#binaryninja.pluginmanager.RepositoryManager.check_for_updates">[docs]</a> <span class="k">def</span> <span class="nf">check_for_updates</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Check for updates for all managed Repository objects&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerCheckForUpdates</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">repositories</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of Repository objects being managed&quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">repos</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerGetRepositories</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Repository</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">repos</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeRepositoryManagerRepositoriesList</span><span class="p">(</span><span class="n">repos</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">plugins</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of all RepoPlugins in each repository&quot;&quot;&quot;</span>
<span class="n">plgs</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">repo</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">repositories</span><span class="p">:</span>
<span class="n">plgs</span><span class="p">[</span><span class="n">repo</span><span class="o">.</span><span class="n">path</span><span class="p">]</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">plugins</span>
<span class="k">return</span> <span class="n">plgs</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">default_repository</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Gets the default Repository&quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="k">return</span> <span class="n">Repository</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerGetDefaultRepository</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<div class="viewcode-block" id="RepositoryManager.enable_plugin"><a class="viewcode-back" href="../../binaryninja.pluginmanager-module.html#binaryninja.pluginmanager.RepositoryManager.enable_plugin">[docs]</a> <span class="k">def</span> <span class="nf">enable_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">install</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">repo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``enable_plugin`` Enables the installed plugin &#39;plugin&#39;, optionally installing the plugin if `install` is set to</span>
<span class="sd"> True (default), and optionally using the non-default repository.</span>
<span class="sd"> :param str name: Name of the plugin to enable</span>
<span class="sd"> :param Boolean install: Optionally install the repo, defaults to True.</span>
<span class="sd"> :param str repo: Optional, specify a repository other than the default repository.</span>
<span class="sd"> :return: Boolean value True if the plugin was successfully enabled, False otherwise</span>
<span class="sd"> :rtype: Boolean</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; mgr = RepositoryManager()</span>
<span class="sd"> &gt;&gt;&gt; mgr.enable_plugin(&#39;binaryninja-bookmarks&#39;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">install</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">install_plugin</span><span class="p">(</span><span class="n">plugin</span><span class="p">,</span> <span class="n">repo</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">if</span> <span class="n">repo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">repo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_repository</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">path</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">plugin</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span><span class="o">.</span><span class="n">path</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerEnablePlugin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">repopath</span><span class="p">,</span> <span class="n">pluginpath</span><span class="p">)</span></div>
<div class="viewcode-block" id="RepositoryManager.disable_plugin"><a class="viewcode-back" href="../../binaryninja.pluginmanager-module.html#binaryninja.pluginmanager.RepositoryManager.disable_plugin">[docs]</a> <span class="k">def</span> <span class="nf">disable_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">repo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``disable_plugin`` Disable the specified plugin, pluginpath</span>
<span class="sd"> :param Repository or str repo: Repository containing the plugin to disable</span>
<span class="sd"> :param RepoPlugin or str plugin: RepoPlugin to disable</span>
<span class="sd"> :return: Boolean value True if the plugin was successfully disabled, False otherwise</span>
<span class="sd"> :rtype: Boolean</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; mgr = RepositoryManager()</span>
<span class="sd"> &gt;&gt;&gt; mgr.disable_plugin(&#39;binaryninja-bookmarks&#39;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">repo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">repo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_repository</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">path</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">plugin</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span><span class="o">.</span><span class="n">path</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerDisablePlugin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">repopath</span><span class="p">,</span> <span class="n">pluginpath</span><span class="p">)</span></div>
<div class="viewcode-block" id="RepositoryManager.install_plugin"><a class="viewcode-back" href="../../binaryninja.pluginmanager-module.html#binaryninja.pluginmanager.RepositoryManager.install_plugin">[docs]</a> <span class="k">def</span> <span class="nf">install_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">repo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``install_plugin`` install the specified plugin, pluginpath</span>
<span class="sd"> :param Repository or str repo: Repository containing the plugin to install</span>
<span class="sd"> :param RepoPlugin or str plugin: RepoPlugin to install</span>
<span class="sd"> :return: Boolean value True if the plugin was successfully installed, False otherwise</span>
<span class="sd"> :rtype: Boolean</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; mgr = RepositoryManager()</span>
<span class="sd"> &gt;&gt;&gt; mgr.install_plugin(&#39;binaryninja-bookmarks&#39;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">repo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">repo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_repository</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">path</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">plugin</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span><span class="o">.</span><span class="n">path</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerInstallPlugin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">repopath</span><span class="p">,</span> <span class="n">pluginpath</span><span class="p">)</span></div>
<div class="viewcode-block" id="RepositoryManager.uninstall_plugin"><a class="viewcode-back" href="../../binaryninja.pluginmanager-module.html#binaryninja.pluginmanager.RepositoryManager.uninstall_plugin">[docs]</a> <span class="k">def</span> <span class="nf">uninstall_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">repo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``uninstall_plugin`` uninstall the specified plugin, pluginpath</span>
<span class="sd"> :param Repository or str repo: Repository containing the plugin to uninstall</span>
<span class="sd"> :param RepoPlugin or str plugin: RepoPlugin to uninstall</span>
<span class="sd"> :return: Boolean value True if the plugin was successfully uninstalled, False otherwise</span>
<span class="sd"> :rtype: Boolean</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; mgr = RepositoryManager()</span>
<span class="sd"> &gt;&gt;&gt; mgr.uninstall_plugin(&#39;binaryninja-bookmarks&#39;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">repo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">repo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_repository</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">path</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">plugin</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span><span class="o">.</span><span class="n">path</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerUninstallPlugin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">repopath</span><span class="p">,</span> <span class="n">pluginpath</span><span class="p">)</span></div>
<div class="viewcode-block" id="RepositoryManager.update_plugin"><a class="viewcode-back" href="../../binaryninja.pluginmanager-module.html#binaryninja.pluginmanager.RepositoryManager.update_plugin">[docs]</a> <span class="k">def</span> <span class="nf">update_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">repo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``update_plugin`` update the specified plugin, pluginpath</span>
<span class="sd"> :param Repository or str repo: Repository containing the plugin to update</span>
<span class="sd"> :param RepoPlugin or str plugin: RepoPlugin to update</span>
<span class="sd"> :return: Boolean value True if the plugin was successfully updated, False otherwise</span>
<span class="sd"> :rtype: Boolean</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; mgr = RepositoryManager()</span>
<span class="sd"> &gt;&gt;&gt; mgr.update_plugin(&#39;binaryninja-bookmarks&#39;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">repo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">repo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_repository</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">repopath</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">path</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">plugin</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">pluginpath</span> <span class="o">=</span> <span class="n">plugin</span><span class="o">.</span><span class="n">path</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerUpdatePlugin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">repopath</span><span class="p">,</span> <span class="n">pluginpath</span><span class="p">)</span></div>
<div class="viewcode-block" id="RepositoryManager.add_repository"><a class="viewcode-back" href="../../binaryninja.pluginmanager-module.html#binaryninja.pluginmanager.RepositoryManager.add_repository">[docs]</a> <span class="k">def</span> <span class="nf">add_repository</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">repopath</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">localreference</span><span class="o">=</span><span class="s2">&quot;master&quot;</span><span class="p">,</span> <span class="n">remotereference</span><span class="o">=</span><span class="s2">&quot;origin&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``add_repository`` adds a new plugin repository for the manager to track.</span>
<span class="sd"> :param str url: Url to the git repository where the plugins are stored.</span>
<span class="sd"> :param str repopath: path to where the repository will be stored on disk locally</span>
<span class="sd"> :param str localreference: Optional reference to the local tracking branch typically &quot;master&quot;</span>
<span class="sd"> :param str remotereference: Optional reference to the remote tracking branch typically &quot;origin&quot;</span>
<span class="sd"> :return: Boolean value True if the repository was successfully added, False otherwise.</span>
<span class="sd"> :rtype: Boolean</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; mgr = RepositoryManager()</span>
<span class="sd"> &gt;&gt;&gt; mgr.add_repository(url=&quot;https://github.com/vector35/community-plugins.git&quot;,</span>
<span class="sd"> repopath=&quot;myrepo&quot;,</span>
<span class="sd"> localreference=&quot;master&quot;, remotereference=&quot;origin&quot;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">repopath</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span>
<span class="nb">isinstance</span><span class="p">(</span><span class="n">localreference</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">remotereference</span><span class="p">,</span> <span class="nb">str</span><span class="p">)):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Parameter is incorrect type&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRepositoryManagerAddRepository</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">repopath</span><span class="p">,</span> <span class="n">localreference</span><span class="p">,</span> <span class="n">remotereference</span><span class="p">)</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,906 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.scriptingprovider &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.scriptingprovider</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.scriptingprovider</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">code</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="kn">import</span> <span class="nn">threading</span>
<span class="kn">import</span> <span class="nn">abc</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">import</span> <span class="nn">binaryninja</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">ScriptingProviderExecuteResult</span><span class="p">,</span> <span class="n">ScriptingProviderInputReadyState</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">log</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">with_metaclass</span>
<span class="k">class</span> <span class="nc">_ThreadActionContext</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="n">_actions</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">func</span> <span class="o">=</span> <span class="n">func</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span> <span class="o">=</span> <span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">_actions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">callback</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)(</span><span class="k">lambda</span> <span class="n">ctxt</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">execute</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">old_interpreter</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">):</span>
<span class="n">old_interpreter</span> <span class="o">=</span> <span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">()</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">old_interpreter</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">_actions</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<div class="viewcode-block" id="ScriptingOutputListener"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.ScriptingOutputListener.html#binaryninja.scriptingprovider.ScriptingOutputListener">[docs]</a><span class="k">class</span> <span class="nc">ScriptingOutputListener</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">_register</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNScriptingOutputListener</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">output</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_output</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">error</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">error</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_error</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">inputReadyStateChanged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">inputReadyStateChanged</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_input_ready_state_changed</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterScriptingInstanceOutputListener</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_unregister</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNUnregisterScriptingInstanceOutputListener</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify_output</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify_error</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_input_ready_state_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify_input_ready_state_changed</span><span class="p">(</span><span class="n">state</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<div class="viewcode-block" id="ScriptingOutputListener.notify_output"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingOutputListener.notify_output">[docs]</a> <span class="k">def</span> <span class="nf">notify_output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="ScriptingOutputListener.notify_error"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingOutputListener.notify_error">[docs]</a> <span class="k">def</span> <span class="nf">notify_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="ScriptingOutputListener.notify_input_ready_state_changed"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingOutputListener.notify_input_ready_state_changed">[docs]</a> <span class="k">def</span> <span class="nf">notify_input_ready_state_changed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
<span class="k">pass</span></div></div>
<div class="viewcode-block" id="ScriptingInstance"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.ScriptingInstance.html#binaryninja.scriptingprovider.ScriptingInstance">[docs]</a><span class="k">class</span> <span class="nc">ScriptingInstance</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="ScriptingInstance.__init__"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.ScriptingInstance.html#binaryninja.scriptingprovider.ScriptingInstance.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">provider</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNScriptingInstanceCallbacks</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destroyInstance</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">destroyInstance</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_destroy_instance</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">executeScriptInput</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">executeScriptInput</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_execute_script_input</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentBinaryView</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentBinaryView</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_set_current_binary_view</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentFunction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentFunction</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_set_current_function</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentBasicBlock</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentBasicBlock</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_set_current_basic_block</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentAddress</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentAddress</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_set_current_address</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentSelection</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">setCurrentSelection</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_set_current_selection</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNInitScriptingInstance</span><span class="p">(</span><span class="n">provider</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNScriptingInstance</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listeners</span> <span class="o">=</span> <span class="p">[]</span></div>
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeScriptingInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_destroy_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">perform_destroy_instance</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_execute_script_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_execute_script_input</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="n">ScriptingProviderExecuteResult</span><span class="o">.</span><span class="n">InvalidScriptInput</span>
<span class="k">def</span> <span class="nf">_set_current_binary_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">view</span><span class="p">:</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewViewReference</span><span class="p">(</span><span class="n">view</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">view</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">perform_set_current_binary_view</span><span class="p">(</span><span class="n">view</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_set_current_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">func</span><span class="p">:</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="n">Function</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFunctionData</span><span class="p">(</span><span class="n">func</span><span class="p">)),</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">func</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">func</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">perform_set_current_function</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_set_current_basic_block</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">block</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">block</span><span class="p">:</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBasicBlockFunction</span><span class="p">(</span><span class="n">block</span><span class="p">)</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">block</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">basicblock</span><span class="o">.</span><span class="n">BasicBlock</span><span class="p">(</span><span class="n">binaryninja</span><span class="o">.</span><span class="n">binaryview</span><span class="o">.</span><span class="n">BinaryView</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetFunctionData</span><span class="p">(</span><span class="n">func</span><span class="p">)),</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">block</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeFunction</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">perform_set_current_basic_block</span><span class="p">(</span><span class="n">block</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_set_current_address</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">perform_set_current_address</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_set_current_selection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">perform_set_current_selection</span><span class="p">(</span><span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="ScriptingInstance.perform_destroy_instance"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.perform_destroy_instance">[docs]</a> <span class="k">def</span> <span class="nf">perform_destroy_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="ScriptingInstance.perform_execute_script_input"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.perform_execute_script_input">[docs]</a> <span class="k">def</span> <span class="nf">perform_execute_script_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">return</span> <span class="n">ScriptingProviderExecuteResult</span><span class="o">.</span><span class="n">InvalidScriptInput</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="ScriptingInstance.perform_set_current_binary_view"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.perform_set_current_binary_view">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_binary_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="ScriptingInstance.perform_set_current_function"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.perform_set_current_function">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="ScriptingInstance.perform_set_current_basic_block"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.perform_set_current_basic_block">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_basic_block</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="ScriptingInstance.perform_set_current_address"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.perform_set_current_address">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_address</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="ScriptingInstance.perform_set_current_selection"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.perform_set_current_selection">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_selection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">input_ready_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetScriptingInstanceInputReadyState</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="nd">@input_ready_state</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">input_ready_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNotifyInputReadyStateForScriptingInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">value</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<div class="viewcode-block" id="ScriptingInstance.output"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.output">[docs]</a> <span class="k">def</span> <span class="nf">output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNotifyOutputForScriptingInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.error"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.error">[docs]</a> <span class="k">def</span> <span class="nf">error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNNotifyErrorForScriptingInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.execute_script_input"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.execute_script_input">[docs]</a> <span class="k">def</span> <span class="nf">execute_script_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNExecuteScriptInput</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.set_current_binary_view"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.set_current_binary_view">[docs]</a> <span class="k">def</span> <span class="nf">set_current_binary_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="k">if</span> <span class="n">view</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">handle</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetScriptingInstanceCurrentBinaryView</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">view</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.set_current_function"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.set_current_function">[docs]</a> <span class="k">def</span> <span class="nf">set_current_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="k">if</span> <span class="n">func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">func</span><span class="o">.</span><span class="n">handle</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetScriptingInstanceCurrentFunction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.set_current_basic_block"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.set_current_basic_block">[docs]</a> <span class="k">def</span> <span class="nf">set_current_basic_block</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block</span><span class="p">):</span>
<span class="k">if</span> <span class="n">block</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">block</span> <span class="o">=</span> <span class="n">block</span><span class="o">.</span><span class="n">handle</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetScriptingInstanceCurrentBasicBlock</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">block</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.set_current_address"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.set_current_address">[docs]</a> <span class="k">def</span> <span class="nf">set_current_address</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetScriptingInstanceCurrentAddress</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.set_current_selection"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.set_current_selection">[docs]</a> <span class="k">def</span> <span class="nf">set_current_selection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetScriptingInstanceCurrentSelection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.register_output_listener"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.register_output_listener">[docs]</a> <span class="k">def</span> <span class="nf">register_output_listener</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">listener</span><span class="p">):</span>
<span class="n">listener</span><span class="o">.</span><span class="n">_register</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listeners</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">listener</span><span class="p">)</span></div>
<div class="viewcode-block" id="ScriptingInstance.unregister_output_listener"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingInstance.unregister_output_listener">[docs]</a> <span class="k">def</span> <span class="nf">unregister_output_listener</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">listener</span><span class="p">):</span>
<span class="k">if</span> <span class="n">listener</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">listeners</span><span class="p">:</span>
<span class="n">listener</span><span class="o">.</span><span class="n">_unregister</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">listeners</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">listener</span><span class="p">)</span></div></div>
<span class="k">class</span> <span class="nc">_ScriptingProviderMetaclass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List all ScriptingProvider types (read-only)&quot;&quot;&quot;</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">types</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetScriptingProviderList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ScriptingProvider</span><span class="p">(</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeScriptingProviderList</span><span class="p">(</span><span class="n">types</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">types</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetScriptingProviderList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">yield</span> <span class="n">ScriptingProvider</span><span class="p">(</span><span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeScriptingProviderList</span><span class="p">(</span><span class="n">types</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">provider</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetScriptingProviderByName</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">if</span> <span class="n">provider</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a valid scripting provider&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">return</span> <span class="n">ScriptingProvider</span><span class="p">(</span><span class="n">provider</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">type</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<div class="viewcode-block" id="ScriptingProvider"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.ScriptingProvider.html#binaryninja.scriptingprovider.ScriptingProvider">[docs]</a><span class="k">class</span> <span class="nc">ScriptingProvider</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_ScriptingProviderMetaclass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">instance_class</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">_registered_providers</span> <span class="o">=</span> <span class="p">[]</span>
<div class="viewcode-block" id="ScriptingProvider.__init__"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.ScriptingProvider.html#binaryninja.scriptingprovider.ScriptingProvider.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">handle_of_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNScriptingProvider</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__dict__</span><span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetScriptingProviderName</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Allow tab completion to discover metaclass list property&quot;&quot;&quot;</span>
<span class="k">pass</span>
<div class="viewcode-block" id="ScriptingProvider.register"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingProvider.register">[docs]</a> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNScriptingProviderCallbacks</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">createInstance</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">createInstance</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_create_instance</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRegisterScriptingProvider</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">_registered_providers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_create_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">instance_class</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNNewScriptingInstanceReference</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">handle</span><span class="p">),</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span><span class="o">.</span><span class="n">value</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">None</span>
<div class="viewcode-block" id="ScriptingProvider.create_instance"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.ScriptingProvider.create_instance">[docs]</a> <span class="k">def</span> <span class="nf">create_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateScriptingProviderInstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">ScriptingInstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">result</span><span class="p">)</span></div></div>
<span class="k">class</span> <span class="nc">_PythonScriptingInstanceOutput</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">orig</span><span class="p">,</span> <span class="n">is_error</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">orig</span> <span class="o">=</span> <span class="n">orig</span>
<span class="bp">self</span><span class="o">.</span><span class="n">is_error</span> <span class="o">=</span> <span class="n">is_error</span>
<span class="bp">self</span><span class="o">.</span><span class="n">buffer</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">encoding</span> <span class="o">=</span> <span class="s1">&#39;UTF-8&#39;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">mode</span> <span class="o">=</span> <span class="s1">&#39;w&#39;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s1">&#39;PythonScriptingInstanceOutput&#39;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">newlines</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">def</span> <span class="nf">closed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">flush</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">def</span> <span class="nf">isatty</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">next</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s2">&quot;File not open for reading&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s2">&quot;File not open for reading&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">readinto</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s2">&quot;File not open for reading&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">readlines</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="s2">&quot;File not open for reading&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">seek</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">def</span> <span class="nf">sofspace</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="k">def</span> <span class="nf">truncate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">def</span> <span class="nf">tell</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">orig</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">writelines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lines</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lines</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="n">interpreter</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">):</span>
<span class="n">interpreter</span> <span class="o">=</span> <span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span>
<span class="k">if</span> <span class="n">interpreter</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="n">log</span><span class="o">.</span><span class="n">is_output_redirected_to_log</span><span class="p">():</span>
<span class="bp">self</span><span class="o">.</span><span class="n">buffer</span> <span class="o">+=</span> <span class="n">data</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">i</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">buffer</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
<span class="k">break</span>
<span class="n">line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">buffer</span><span class="p">[:</span><span class="n">i</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">buffer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">buffer</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:]</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_error</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_info</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">orig</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_error</span><span class="p">:</span>
<span class="n">interpreter</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">interpreter</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">interpreter</span>
<span class="k">class</span> <span class="nc">_PythonScriptingInstanceInput</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">orig</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">orig</span> <span class="o">=</span> <span class="n">orig</span>
<span class="k">def</span> <span class="nf">isatty</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
<span class="n">interpreter</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">):</span>
<span class="n">interpreter</span> <span class="o">=</span> <span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span>
<span class="k">if</span> <span class="n">interpreter</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">orig</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">interpreter</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">interpreter</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">readline</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">interpreter</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="p">,</span> <span class="s2">&quot;value&quot;</span><span class="p">):</span>
<span class="n">interpreter</span> <span class="o">=</span> <span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span>
<span class="k">if</span> <span class="n">interpreter</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">orig</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">interpreter</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="n">result</span> <span class="o">+=</span> <span class="n">data</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">data</span> <span class="o">==</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">):</span>
<span class="k">break</span>
<span class="k">return</span> <span class="n">result</span>
<div class="viewcode-block" id="PythonScriptingInstance"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.PythonScriptingInstance.html#binaryninja.scriptingprovider.PythonScriptingInstance">[docs]</a><span class="k">class</span> <span class="nc">PythonScriptingInstance</span><span class="p">(</span><span class="n">ScriptingInstance</span><span class="p">):</span>
<span class="n">_interpreter</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">local</span><span class="p">()</span>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread">[docs]</a> <span class="k">class</span> <span class="nc">InterpreterThread</span><span class="p">(</span><span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">InterpreterThread</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">instance</span> <span class="o">=</span> <span class="n">instance</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;__name__&quot;</span><span class="p">:</span> <span class="s2">&quot;__console__&quot;</span><span class="p">,</span> <span class="s2">&quot;__doc__&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="s2">&quot;binaryninja&quot;</span><span class="p">:</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">__name__</span><span class="p">]}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span> <span class="o">=</span> <span class="n">code</span><span class="o">.</span><span class="n">InteractiveConsole</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Event</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">daemon</span> <span class="o">=</span> <span class="kc">True</span>
<span class="c1"># Latest selections from UI</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_view</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_func</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_addr</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_selection_begin</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_selection_end</span> <span class="o">=</span> <span class="mi">0</span>
<span class="c1"># Selections that were current as of last issued command</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_view</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_func</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_addr</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_selection_end</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;get_selected_data&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_selected_data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;write_at_cursor&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">write_at_cursor</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span> <span class="o">=</span> <span class="kc">False</span>
<span class="bp">self</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="s2">&quot;from binaryninja import *&quot;</span><span class="p">)</span>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread.execute"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread.execute">[docs]</a> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">code</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="n">code</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="o">.</span><span class="n">set</span><span class="p">()</span></div>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread.add_input"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread.add_input">[docs]</a> <span class="k">def</span> <span class="nf">add_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input</span> <span class="o">+=</span> <span class="n">data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="o">.</span><span class="n">set</span><span class="p">()</span></div>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread.end"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread.end">[docs]</a> <span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span> <span class="o">=</span> <span class="kc">True</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="o">.</span><span class="n">set</span><span class="p">()</span></div>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread.read"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread.read">[docs]</a> <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
<span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">input</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">size</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">input</span><span class="p">[:</span><span class="n">size</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">input</span><span class="p">[</span><span class="n">size</span><span class="p">:]</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">input</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">input</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">return</span> <span class="n">result</span>
<span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">=</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">ReadyForScriptProgramInput</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span></div>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread.run"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">event</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">exit</span><span class="p">:</span>
<span class="k">break</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">code</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">=</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">NotReadyForInput</span>
<span class="n">code</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">code</span>
<span class="bp">self</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="bp">self</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_view</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_func</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_block</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_block</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_addr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_addr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_selection_begin</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_selection_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_selection_end</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_view&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;bv&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_function&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_func</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_basic_block&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_block</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_address&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_addr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;here&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_addr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_selection&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_selection_end</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_func</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_llil&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_mlil&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_llil&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_func</span><span class="o">.</span><span class="n">low_level_il</span>
<span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_mlil&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_func</span><span class="o">.</span><span class="n">medium_level_il</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">code</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">b</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">))</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;here&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_addr</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">navigate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;here&quot;</span><span class="p">]):</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;Address 0x</span><span class="si">%x</span><span class="s2"> is not valid for the current view</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;here&quot;</span><span class="p">])</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_address&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_addr</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">navigate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">view</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_address&quot;</span><span class="p">]):</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;Address 0x</span><span class="si">%x</span><span class="s2"> is not valid for the current view</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">locals</span><span class="p">[</span><span class="s2">&quot;current_address&quot;</span><span class="p">])</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">update_analysis</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">traceback</span><span class="o">.</span><span class="n">print_exc</span><span class="p">()</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">_interpreter</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">=</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">ReadyForScriptExecution</span></div>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread.get_selected_data"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread.get_selected_data">[docs]</a> <span class="k">def</span> <span class="nf">get_selected_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_selection_end</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span></div>
<div class="viewcode-block" id="PythonScriptingInstance.InterpreterThread.write_at_cursor"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.InterpreterThread.write_at_cursor">[docs]</a> <span class="k">def</span> <span class="nf">write_at_cursor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="n">selected_length</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_selection_end</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span>
<span class="n">data</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="n">selected_length</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">selected_length</span> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span><span class="p">,</span> <span class="n">selected_length</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_view</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">active_selection_begin</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="PythonScriptingInstance.__init__"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.PythonScriptingInstance.html#binaryninja.scriptingprovider.PythonScriptingInstance.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">provider</span><span class="p">):</span>
<span class="nb">super</span><span class="p">(</span><span class="n">PythonScriptingInstance</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">provider</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span> <span class="o">=</span> <span class="n">PythonScriptingInstance</span><span class="o">.</span><span class="n">InterpreterThread</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">queued_input</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">=</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">ReadyForScriptExecution</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonScriptingInstance.perform_destroy_instance"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.perform_destroy_instance">[docs]</a> <span class="k">def</span> <span class="nf">perform_destroy_instance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">end</span><span class="p">()</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonScriptingInstance.perform_execute_script_input"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.perform_execute_script_input">[docs]</a> <span class="k">def</span> <span class="nf">perform_execute_script_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">==</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">NotReadyForInput</span><span class="p">:</span>
<span class="k">return</span> <span class="n">ScriptingProviderExecuteResult</span><span class="o">.</span><span class="n">InvalidScriptInput</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">==</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">ReadyForScriptProgramInput</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="n">ScriptingProviderExecuteResult</span><span class="o">.</span><span class="n">SuccessfulScriptExecution</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">=</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">NotReadyForInput</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">add_input</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="k">return</span> <span class="n">ScriptingProviderExecuteResult</span><span class="o">.</span><span class="n">SuccessfulScriptExecution</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">code</span><span class="o">.</span><span class="n">compile_command</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># Command is not complete, ask for more input</span>
<span class="k">return</span> <span class="n">ScriptingProviderExecuteResult</span><span class="o">.</span><span class="n">IncompleteScriptInput</span>
<span class="bp">self</span><span class="o">.</span><span class="n">input_ready_state</span> <span class="o">=</span> <span class="n">ScriptingProviderInputReadyState</span><span class="o">.</span><span class="n">NotReadyForInput</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
<span class="k">return</span> <span class="n">ScriptingProviderExecuteResult</span><span class="o">.</span><span class="n">SuccessfulScriptExecution</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonScriptingInstance.perform_set_current_binary_view"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.perform_set_current_binary_view">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_binary_view</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">current_view</span> <span class="o">=</span> <span class="n">view</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonScriptingInstance.perform_set_current_function"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.perform_set_current_function">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">current_func</span> <span class="o">=</span> <span class="n">func</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonScriptingInstance.perform_set_current_basic_block"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.perform_set_current_basic_block">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_basic_block</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">current_block</span> <span class="o">=</span> <span class="n">block</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonScriptingInstance.perform_set_current_address"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.perform_set_current_address">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_address</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">current_addr</span> <span class="o">=</span> <span class="n">addr</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="PythonScriptingInstance.perform_set_current_selection"><a class="viewcode-back" href="../../binaryninja.scriptingprovider-module.html#binaryninja.scriptingprovider.PythonScriptingInstance.perform_set_current_selection">[docs]</a> <span class="k">def</span> <span class="nf">perform_set_current_selection</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">current_selection_begin</span> <span class="o">=</span> <span class="n">begin</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interpreter</span><span class="o">.</span><span class="n">current_selection_end</span> <span class="o">=</span> <span class="n">end</span></div></div>
<div class="viewcode-block" id="PythonScriptingProvider"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.PythonScriptingProvider.html#binaryninja.scriptingprovider.PythonScriptingProvider">[docs]</a><span class="k">class</span> <span class="nc">PythonScriptingProvider</span><span class="p">(</span><span class="n">ScriptingProvider</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;Python&quot;</span>
<span class="n">instance_class</span> <span class="o">=</span> <span class="n">PythonScriptingInstance</span></div>
<span class="n">PythonScriptingProvider</span><span class="p">()</span><span class="o">.</span><span class="n">register</span><span class="p">()</span>
<span class="c1"># Wrap stdin/stdout/stderr for Python scripting provider implementation</span>
<span class="n">original_stdin</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span>
<span class="n">original_stdout</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span>
<span class="n">original_stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span>
<div class="viewcode-block" id="redirect_stdio"><a class="viewcode-back" href="../../binaryninja.scriptingprovider.redirect_stdio.html#binaryninja.scriptingprovider.redirect_stdio">[docs]</a><span class="k">def</span> <span class="nf">redirect_stdio</span><span class="p">():</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdin</span> <span class="o">=</span> <span class="n">_PythonScriptingInstanceInput</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="p">)</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="n">_PythonScriptingInstanceOutput</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="n">_PythonScriptingInstanceOutput</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
<span class="n">sys</span><span class="o">.</span><span class="n">excepthook</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">__excepthook__</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,387 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.setting &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.setting</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.setting</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">pyNativeStr</span>
<div class="viewcode-block" id="Setting"><a class="viewcode-back" href="../../binaryninja.setting.Setting.html#binaryninja.downloadprovider.Setting">[docs]</a><span class="k">class</span> <span class="nc">Setting</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="Setting.__init__"><a class="viewcode-back" href="../../binaryninja.setting.Setting.html#binaryninja.downloadprovider.Setting.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin_name</span><span class="o">=</span><span class="s2">&quot;core&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span> <span class="o">=</span> <span class="n">plugin_name</span></div>
<div class="viewcode-block" id="Setting.get_bool"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.get_bool">[docs]</a> <span class="k">def</span> <span class="nf">get_bool</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingGetBool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.get_integer"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.get_integer">[docs]</a> <span class="k">def</span> <span class="nf">get_integer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingGetInteger</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.get_string"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.get_string">[docs]</a> <span class="k">def</span> <span class="nf">get_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingGetString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.get_integer_list"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.get_integer_list">[docs]</a> <span class="k">def</span> <span class="nf">get_integer_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="o">=</span><span class="p">[]):</span>
<span class="n">length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">length</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">default_value</span><span class="p">)</span>
<span class="n">default_list</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_longlong</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">default_value</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">default_value</span><span class="p">)):</span>
<span class="n">default_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">default_value</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingGetIntegerList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_list</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
<span class="n">out_list</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">out_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeSettingIntegerList</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="k">return</span> <span class="n">out_list</span></div>
<div class="viewcode-block" id="Setting.get_string_list"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.get_string_list">[docs]</a> <span class="k">def</span> <span class="nf">get_string_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="o">=</span><span class="p">[]):</span>
<span class="n">length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">length</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">default_value</span><span class="p">)</span>
<span class="n">default_list</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">default_value</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">default_value</span><span class="p">)):</span>
<span class="n">default_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">default_value</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingGetStringList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_list</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
<span class="n">out_list</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">out_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pyNativeStr</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeStringList</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">return</span> <span class="n">out_list</span></div>
<div class="viewcode-block" id="Setting.get_double"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.get_double">[docs]</a> <span class="k">def</span> <span class="nf">get_double</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingGetDouble</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_value</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.is_bool"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.is_bool">[docs]</a> <span class="k">def</span> <span class="nf">is_bool</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingIsBool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.is_integer"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.is_integer">[docs]</a> <span class="k">def</span> <span class="nf">is_integer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingIsInteger</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.is_string"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.is_string">[docs]</a> <span class="k">def</span> <span class="nf">is_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingIsString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.is_string_list"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.is_string_list">[docs]</a> <span class="k">def</span> <span class="nf">is_string_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingIsStringList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.is_integer_list"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.is_integer_list">[docs]</a> <span class="k">def</span> <span class="nf">is_integer_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingIsIntegerList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.is_double"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.is_double">[docs]</a> <span class="k">def</span> <span class="nf">is_double</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingIsDouble</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.is_present"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.is_present">[docs]</a> <span class="k">def</span> <span class="nf">is_present</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingIsPresent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.set_bool"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.set_bool">[docs]</a> <span class="k">def</span> <span class="nf">set_bool</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingSetBool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.set_integer"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.set_integer">[docs]</a> <span class="k">def</span> <span class="nf">set_integer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingSetInteger</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.set_string"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.set_string">[docs]</a> <span class="k">def</span> <span class="nf">set_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingSetString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.set_integer_list"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.set_integer_list">[docs]</a> <span class="k">def</span> <span class="nf">set_integer_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="n">length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">length</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">default_list</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_longlong</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)):</span>
<span class="n">default_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingSetIntegerList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_list</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.set_string_list"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.set_string_list">[docs]</a> <span class="k">def</span> <span class="nf">set_string_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="n">length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">length</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">default_list</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)):</span>
<span class="n">default_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;charmap&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingSetStringList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">default_list</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.set_double"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.set_double">[docs]</a> <span class="k">def</span> <span class="nf">set_double</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSettingSetDouble</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.set"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.set">[docs]</a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_bool</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_integer</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_string</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_integer_list</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">int</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_integer_list</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_string_list</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">set_double</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;value is not one of (int, bool, float, str, [int], [str]) types&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.remove_setting_group"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.remove_setting_group">[docs]</a> <span class="k">def</span> <span class="nf">remove_setting_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSettingRemoveSettingGroup</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div>
<div class="viewcode-block" id="Setting.remove_setting"><a class="viewcode-back" href="../../binaryninja.setting-module.html#binaryninja.downloadprovider.Setting.remove_setting">[docs]</a> <span class="k">def</span> <span class="nf">remove_setting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">setting</span><span class="p">,</span> <span class="n">auto_flush</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSettingRemoveSetting</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugin_name</span><span class="p">,</span> <span class="n">setting</span><span class="p">,</span> <span class="n">auto_flush</span><span class="p">)</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,487 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.transform &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.transform</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.transform</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="kn">import</span> <span class="nn">abc</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">import</span> <span class="nn">binaryninja</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">log</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">databuffer</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">TransformType</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">with_metaclass</span>
<span class="k">class</span> <span class="nc">_TransformMetaClass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">xforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformTypeList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Transform</span><span class="p">(</span><span class="n">xforms</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTransformTypeList</span><span class="p">(</span><span class="n">xforms</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">xforms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformTypeList</span><span class="p">(</span><span class="n">count</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">yield</span> <span class="n">Transform</span><span class="p">(</span><span class="n">xforms</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTransformTypeList</span><span class="p">(</span><span class="n">xforms</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">type</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">xform</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformByName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
<span class="k">if</span> <span class="n">xform</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a valid transform&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
<span class="k">return</span> <span class="n">Transform</span><span class="p">(</span><span class="n">xform</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;transform &#39;name&#39; is not defined&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">long_name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">cls</span><span class="o">.</span><span class="n">long_name</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">name</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">transform_type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;transform &#39;transform_type&#39; is not defined&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">group</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">cls</span><span class="o">.</span><span class="n">group</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="n">xform</span> <span class="o">=</span> <span class="n">cls</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_cb</span> <span class="o">=</span> <span class="n">xform</span><span class="o">.</span><span class="n">_cb</span>
<span class="n">xform</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRegisterTransformType</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">transform_type</span><span class="p">,</span> <span class="n">cls</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">cls</span><span class="o">.</span><span class="n">long_name</span><span class="p">,</span> <span class="n">cls</span><span class="o">.</span><span class="n">group</span><span class="p">,</span> <span class="n">xform</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<div class="viewcode-block" id="TransformParameter"><a class="viewcode-back" href="../../binaryninja.transform.TransformParameter.html#binaryninja.transform.TransformParameter">[docs]</a><span class="k">class</span> <span class="nc">TransformParameter</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="TransformParameter.__init__"><a class="viewcode-back" href="../../binaryninja.transform.TransformParameter.html#binaryninja.transform.TransformParameter.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">long_name</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">fixed_length</span> <span class="o">=</span> <span class="mi">0</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
<span class="k">if</span> <span class="n">long_name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">long_name</span> <span class="o">=</span> <span class="n">name</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">long_name</span> <span class="o">=</span> <span class="n">long_name</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fixed_length</span> <span class="o">=</span> <span class="n">fixed_length</span></div></div>
<div class="viewcode-block" id="Transform"><a class="viewcode-back" href="../../binaryninja.transform.Transform.html#binaryninja.transform.Transform">[docs]</a><span class="k">class</span> <span class="nc">Transform</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_TransformMetaClass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<span class="n">transform_type</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">long_name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">group</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">parameters</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">_registered_cb</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="Transform.__init__"><a class="viewcode-back" href="../../binaryninja.transform.Transform.html#binaryninja.transform.Transform.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
<span class="k">if</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCustomTransform</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getParameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">getParameters</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_parameters</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">freeParameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">freeParameters</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_free_parameters</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">decode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">decode</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_decode</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">encode</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">encode</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_encode</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_param_lists</span> <span class="o">=</span> <span class="p">{}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">transform_type</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TransformType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">name</span>
<span class="bp">self</span><span class="o">.</span><span class="n">long_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">long_name</span>
<span class="bp">self</span><span class="o">.</span><span class="n">group</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">group</span>
<span class="bp">self</span><span class="o">.</span><span class="n">parameters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">parameters</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TransformType</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">long_name</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformLongName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">group</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformGroup</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">params</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTransformParameterList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">parameters</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">TransformParameter</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">params</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">longName</span><span class="p">,</span> <span class="n">params</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">fixedLength</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeTransformParameterList</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;transform: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Transform</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">==</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Transform</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">handle</span><span class="o">.</span><span class="n">contents</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">)</span>
<span class="n">param_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNTransformParameterInfo</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">)):</span>
<span class="n">param_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span>
<span class="n">param_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">longName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">long_name</span>
<span class="n">param_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">fixedLength</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">fixed_length</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">param_buf</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_pending_param_lists</span><span class="p">[</span><span class="n">result</span><span class="o">.</span><span class="n">value</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="n">param_buf</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="n">count</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">def</span> <span class="nf">_free_parameters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">buf</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
<span class="k">if</span> <span class="n">buf</span><span class="o">.</span><span class="n">value</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_param_lists</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;freeing parameter list that wasn&#39;t allocated&quot;</span><span class="p">)</span>
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pending_param_lists</span><span class="p">[</span><span class="n">buf</span><span class="o">.</span><span class="n">value</span><span class="p">]</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">def</span> <span class="nf">_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">input_buf</span><span class="p">,</span> <span class="n">output_buf</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">input_obj</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDuplicateDataBuffer</span><span class="p">(</span><span class="n">input_buf</span><span class="p">))</span>
<span class="n">param_map</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDuplicateDataBuffer</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
<span class="n">param_map</span><span class="p">[</span><span class="n">params</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_decode</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">input_obj</span><span class="p">),</span> <span class="n">param_map</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="n">result</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetDataBufferContents</span><span class="p">(</span><span class="n">output_buf</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">))</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">input_buf</span><span class="p">,</span> <span class="n">output_buf</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">input_obj</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDuplicateDataBuffer</span><span class="p">(</span><span class="n">input_buf</span><span class="p">))</span>
<span class="n">param_map</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDuplicateDataBuffer</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
<span class="n">param_map</span><span class="p">[</span><span class="n">params</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_encode</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">input_obj</span><span class="p">),</span> <span class="n">param_map</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="n">result</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetDataBufferContents</span><span class="p">(</span><span class="n">output_buf</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">))</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Allow tab completion to discover metaclass list property&quot;&quot;&quot;</span>
<span class="k">pass</span>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="Transform.perform_decode"><a class="viewcode-back" href="../../binaryninja.transform-module.html#binaryninja.transform.Transform.perform_decode">[docs]</a> <span class="k">def</span> <span class="nf">perform_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="n">TransformType</span><span class="o">.</span><span class="n">InvertingTransform</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_encode</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="Transform.perform_encode"><a class="viewcode-back" href="../../binaryninja.transform-module.html#binaryninja.transform.Transform.perform_encode">[docs]</a> <span class="k">def</span> <span class="nf">perform_encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="Transform.decode"><a class="viewcode-back" href="../../binaryninja.transform-module.html#binaryninja.transform.Transform.decode">[docs]</a> <span class="k">def</span> <span class="nf">decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">input_buf</span><span class="p">,</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{}):</span>
<span class="n">input_buf</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">input_buf</span><span class="p">)</span>
<span class="n">output_buf</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">()</span>
<span class="n">keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">params</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
<span class="n">param_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNTransformParameter</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)):</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="n">i</span><span class="p">]])</span>
<span class="n">param_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">keys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="n">param_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">handle</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDecode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">input_buf</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">output_buf</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">param_buf</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">output_buf</span><span class="p">)</span></div>
<div class="viewcode-block" id="Transform.encode"><a class="viewcode-back" href="../../binaryninja.transform-module.html#binaryninja.transform.Transform.encode">[docs]</a> <span class="k">def</span> <span class="nf">encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">input_buf</span><span class="p">,</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{}):</span>
<span class="n">input_buf</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">input_buf</span><span class="p">)</span>
<span class="n">output_buf</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">()</span>
<span class="n">keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">params</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
<span class="n">param_buf</span> <span class="o">=</span> <span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNTransformParameter</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">))()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)):</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">databuffer</span><span class="o">.</span><span class="n">DataBuffer</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="n">i</span><span class="p">]])</span>
<span class="n">param_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">keys</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="n">param_buf</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">handle</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNEncode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">input_buf</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">output_buf</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">param_buf</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">output_buf</span><span class="p">)</span></div></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,339 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.undoaction &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.undoaction</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.undoaction</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">json</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">ActionType</span>
<div class="viewcode-block" id="UndoAction"><a class="viewcode-back" href="../../binaryninja.undoaction.UndoAction.html#binaryninja.undoaction.UndoAction">[docs]</a><span class="k">class</span> <span class="nc">UndoAction</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">action_type</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">_registered</span> <span class="o">=</span> <span class="kc">False</span>
<span class="n">_registered_cb</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="UndoAction.__init__"><a class="viewcode-back" href="../../binaryninja.undoaction.UndoAction.html#binaryninja.undoaction.UndoAction.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNUndoAction</span><span class="p">()</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">_registered</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;undo action type not registered&quot;</span><span class="p">)</span>
<span class="n">action_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">action_type</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">action_type</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ActionType</span><span class="p">[</span><span class="n">action_type</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">action_type</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">undo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">undo</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_undo</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">redo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">redo</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_redo</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">serialize</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">serialize</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_serialize</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">view</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="UndoAction.register"><a class="viewcode-back" href="../../binaryninja.undoaction-module.html#binaryninja.undoaction.UndoAction.register">[docs]</a> <span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;undo action &#39;name&#39; not defined&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">action_type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;undo action &#39;action_type&#39; not defined&quot;</span><span class="p">)</span>
<span class="n">cb_type</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNUndoAction</span><span class="p">))</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_cb</span> <span class="o">=</span> <span class="n">cb_type</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">_deserialize</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterUndoActionType</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">cls</span><span class="o">.</span><span class="n">_registered_cb</span><span class="p">)</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered</span> <span class="o">=</span> <span class="kc">True</span></div>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_deserialize</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">action</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">deserialize</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="k">if</span> <span class="n">action</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="n">result</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="n">action</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">context</span>
<span class="n">result</span><span class="o">.</span><span class="n">undo</span> <span class="o">=</span> <span class="n">action</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">undo</span>
<span class="n">result</span><span class="o">.</span><span class="n">redo</span> <span class="o">=</span> <span class="n">action</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">redo</span>
<span class="n">result</span><span class="o">.</span><span class="n">serialize</span> <span class="o">=</span> <span class="n">action</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">serialize</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_undo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">undo</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_redo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">view</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">redo</span><span class="p">()</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">def</span> <span class="nf">_serialize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">serialize</span><span class="p">())</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span>
<span class="k">return</span> <span class="s2">&quot;null&quot;</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,508 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>binaryninja.update &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../../index.html"/>
<link rel="up" title="binaryninja" href="../binaryninja.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">Module code</a> &raquo;</li>
<li><a href="../binaryninja.html">binaryninja</a> &raquo;</li>
<li>binaryninja.update</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Source code for binaryninja.update</h1><div class="highlight"><pre>
<span></span><span class="c1"># Copyright (c) 2015-2017 Vector 35 LLC</span>
<span class="c1">#</span>
<span class="c1"># Permission is hereby granted, free of charge, to any person obtaining a copy</span>
<span class="c1"># of this software and associated documentation files (the &quot;Software&quot;), to</span>
<span class="c1"># deal in the Software without restriction, including without limitation the</span>
<span class="c1"># rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</span>
<span class="c1"># sell copies of the Software, and to permit persons to whom the Software is</span>
<span class="c1"># furnished to do so, subject to the following conditions:</span>
<span class="c1">#</span>
<span class="c1"># The above copyright notice and this permission notice shall be included in</span>
<span class="c1"># all copies or substantial portions of the Software.</span>
<span class="c1">#</span>
<span class="c1"># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
<span class="c1"># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
<span class="c1"># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
<span class="c1"># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
<span class="c1"># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span>
<span class="c1"># FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span>
<span class="c1"># IN THE SOFTWARE.</span>
<span class="kn">import</span> <span class="nn">traceback</span>
<span class="kn">import</span> <span class="nn">ctypes</span>
<span class="c1"># Binary Ninja components</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">_binaryninjacore</span> <span class="k">as</span> <span class="n">core</span>
<span class="kn">from</span> <span class="nn">binaryninja.enums</span> <span class="k">import</span> <span class="n">UpdateResult</span>
<span class="c1"># 2-3 compatibility</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="nb">range</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">with_metaclass</span>
<span class="k">class</span> <span class="nc">_UpdateChannelMetaClass</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">channels</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUpdateChannels</span><span class="p">(</span><span class="n">count</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">UpdateChannel</span><span class="p">(</span><span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">latestVersion</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeUpdateChannelList</span><span class="p">(</span><span class="n">channels</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">active</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetActiveUpdateChannel</span><span class="p">()</span>
<span class="nd">@active</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">active</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSetActiveUpdateChannel</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">channels</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUpdateChannels</span><span class="p">(</span><span class="n">count</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">yield</span> <span class="n">UpdateChannel</span><span class="p">(</span><span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">latestVersion</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeUpdateChannelList</span><span class="p">(</span><span class="n">channels</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">type</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</span><span class="p">()</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">channels</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUpdateChannels</span><span class="p">(</span><span class="n">count</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">UpdateChannel</span><span class="p">(</span><span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="n">channels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">latestVersion</span><span class="p">)</span>
<span class="k">break</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeUpdateChannelList</span><span class="p">(</span><span class="n">channels</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">if</span> <span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; is not a valid channel&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
<span class="k">return</span> <span class="n">result</span>
<div class="viewcode-block" id="UpdateProgressCallback"><a class="viewcode-back" href="../../binaryninja.update.UpdateProgressCallback.html#binaryninja.update.UpdateProgressCallback">[docs]</a><span class="k">class</span> <span class="nc">UpdateProgressCallback</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="UpdateProgressCallback.__init__"><a class="viewcode-back" href="../../binaryninja.update.UpdateProgressCallback.html#binaryninja.update.UpdateProgressCallback.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cb</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_bool</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">)(</span><span class="bp">self</span><span class="o">.</span><span class="n">callback</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">func</span> <span class="o">=</span> <span class="n">func</span></div>
<div class="viewcode-block" id="UpdateProgressCallback.callback"><a class="viewcode-back" href="../../binaryninja.update-module.html#binaryninja.update.UpdateProgressCallback.callback">[docs]</a> <span class="k">def</span> <span class="nf">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctxt</span><span class="p">,</span> <span class="n">progress</span><span class="p">,</span> <span class="n">total</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">progress</span><span class="p">,</span> <span class="n">total</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">log_error</span><span class="p">(</span><span class="n">traceback</span><span class="o">.</span><span class="n">format_exc</span><span class="p">())</span></div></div>
<div class="viewcode-block" id="UpdateChannel"><a class="viewcode-back" href="../../binaryninja.update.UpdateChannel.html#binaryninja.update.UpdateChannel">[docs]</a><span class="k">class</span> <span class="nc">UpdateChannel</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_UpdateChannelMetaClass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<div class="viewcode-block" id="UpdateChannel.__init__"><a class="viewcode-back" href="../../binaryninja.update.UpdateChannel.html#binaryninja.update.UpdateChannel.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">desc</span><span class="p">,</span> <span class="n">ver</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
<span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">desc</span>
<span class="bp">self</span><span class="o">.</span><span class="n">latest_version_num</span> <span class="o">=</span> <span class="n">ver</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">versions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of versions (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">versions</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUpdateChannelVersions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">UpdateVersion</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">versions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">version</span><span class="p">,</span> <span class="n">versions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">notes</span><span class="p">,</span> <span class="n">versions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">time</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeUpdateChannelVersionList</span><span class="p">(</span><span class="n">versions</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">latest_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Latest version (read-only)&quot;&quot;&quot;</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</span><span class="p">()</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">versions</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUpdateChannelVersions</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">versions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">version</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_version_num</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">UpdateVersion</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">versions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">version</span><span class="p">,</span> <span class="n">versions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">notes</span><span class="p">,</span> <span class="n">versions</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">time</span><span class="p">)</span>
<span class="k">break</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeUpdateChannelVersionList</span><span class="p">(</span><span class="n">versions</span><span class="p">,</span> <span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">updates_available</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether updates are available (read-only)&quot;&quot;&quot;</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNAreUpdatesAvailable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">errors</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span>
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">object</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;attribute &#39;</span><span class="si">%s</span><span class="s2">&#39; is read only&quot;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;channel: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<div class="viewcode-block" id="UpdateChannel.update_to_latest"><a class="viewcode-back" href="../../binaryninja.update-module.html#binaryninja.update.UpdateChannel.update_to_latest">[docs]</a> <span class="k">def</span> <span class="nf">update_to_latest</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">progress</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="n">cb</span> <span class="o">=</span> <span class="n">UpdateProgressCallback</span><span class="p">(</span><span class="n">progress</span><span class="p">)</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNUpdateToLatestVersion</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">errors</span><span class="p">,</span> <span class="n">cb</span><span class="o">.</span><span class="n">cb</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="k">return</span> <span class="n">UpdateResult</span><span class="p">(</span><span class="n">result</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="UpdateVersion"><a class="viewcode-back" href="../../binaryninja.update.UpdateVersion.html#binaryninja.update.UpdateVersion">[docs]</a><span class="k">class</span> <span class="nc">UpdateVersion</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="UpdateVersion.__init__"><a class="viewcode-back" href="../../binaryninja.update.UpdateVersion.html#binaryninja.update.UpdateVersion.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">ver</span><span class="p">,</span> <span class="n">notes</span><span class="p">,</span> <span class="n">t</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span>
<span class="bp">self</span><span class="o">.</span><span class="n">version</span> <span class="o">=</span> <span class="n">ver</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notes</span> <span class="o">=</span> <span class="n">notes</span>
<span class="bp">self</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="n">t</span></div>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="s2">&quot;&lt;version: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">version</span>
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">version</span>
<div class="viewcode-block" id="UpdateVersion.update"><a class="viewcode-back" href="../../binaryninja.update-module.html#binaryninja.update.UpdateVersion.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">progress</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="n">cb</span> <span class="o">=</span> <span class="n">UpdateProgressCallback</span><span class="p">(</span><span class="n">progress</span><span class="p">)</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNUpdateToVersion</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">,</span> <span class="n">errors</span><span class="p">,</span> <span class="n">cb</span><span class="o">.</span><span class="n">cb</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="k">return</span> <span class="n">UpdateResult</span><span class="p">(</span><span class="n">result</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="are_auto_updates_enabled"><a class="viewcode-back" href="../../binaryninja.update.are_auto_updates_enabled.html#binaryninja.update.are_auto_updates_enabled">[docs]</a><span class="k">def</span> <span class="nf">are_auto_updates_enabled</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``are_auto_updates_enabled`` queries if auto updates are enabled.</span>
<span class="sd"> :return: boolean True if auto updates are enabled. False if they are disabled.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNAreAutoUpdatesEnabled</span><span class="p">()</span></div>
<div class="viewcode-block" id="set_auto_updates_enabled"><a class="viewcode-back" href="../../binaryninja.update.set_auto_updates_enabled.html#binaryninja.update.set_auto_updates_enabled">[docs]</a><span class="k">def</span> <span class="nf">set_auto_updates_enabled</span><span class="p">(</span><span class="n">enabled</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``set_auto_updates_enabled`` sets auto update enabled status.</span>
<span class="sd"> :param bool enabled: True to enable update, Flase to disable updates.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetAutoUpdatesEnabled</span><span class="p">(</span><span class="n">enabled</span><span class="p">)</span></div>
<div class="viewcode-block" id="get_time_since_last_update_check"><a class="viewcode-back" href="../../binaryninja.update.get_time_since_last_update_check.html#binaryninja.update.get_time_since_last_update_check">[docs]</a><span class="k">def</span> <span class="nf">get_time_since_last_update_check</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_time_since_last_update_check`` returns the time stamp for the last time updates were checked.</span>
<span class="sd"> :return: time stacmp for last update check</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetTimeSinceLastUpdateCheck</span><span class="p">()</span></div>
<div class="viewcode-block" id="is_update_installation_pending"><a class="viewcode-back" href="../../binaryninja.update.is_update_installation_pending.html#binaryninja.update.is_update_installation_pending">[docs]</a><span class="k">def</span> <span class="nf">is_update_installation_pending</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_update_installation_pending`` whether an update has been downloaded and is waiting installation</span>
<span class="sd"> :return: boolean True if an update is pending, false if no update is pending</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsUpdateInstallationPending</span><span class="p">()</span></div>
<div class="viewcode-block" id="install_pending_update"><a class="viewcode-back" href="../../binaryninja.update.install_pending_update.html#binaryninja.update.install_pending_update">[docs]</a><span class="k">def</span> <span class="nf">install_pending_update</span><span class="p">():</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``install_pending_update`` installs any pending updates</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">errors</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_char_p</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNInstallPendingUpdate</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="n">error_str</span> <span class="o">=</span> <span class="n">errors</span><span class="o">.</span><span class="n">value</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeString</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_byte</span><span class="p">)))</span>
<span class="k">raise</span> <span class="ne">IOError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span></div>
<div class="viewcode-block" id="updates_checked"><a class="viewcode-back" href="../../binaryninja.update.updates_checked.html#binaryninja.update.updates_checked">[docs]</a><span class="k">def</span> <span class="nf">updates_checked</span><span class="p">():</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNUpdatesChecked</span><span class="p">()</span></div>
</pre></div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,267 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Overview: module code &mdash; Binary Ninja API 1.1.0 documentation</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/other.css" type="text/css" />
<link rel="top" title="Binary Ninja API 1.1.0 documentation" href="../index.html"/>
<script src="../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../index.html" class="icon icon-home"> Binary Ninja API
</a>
<div class="version">
1.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.architecture-module.html">architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.atexit-module.html">atexit</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.basicblock-module.html">basicblock</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.binaryninja-module.html">binaryninja</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.binaryview-module.html">binaryview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.builtins-module.html">builtins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.callingconvention-module.html">callingconvention</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.databuffer-module.html">databuffer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.demangle-module.html">demangle</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.downloadprovider-module.html">downloadprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.enums-module.html">enums</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.fileaccessor-module.html">fileaccessor</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.filemetadata-module.html">filemetadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.function-module.html">function</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.functionrecognizer-module.html">functionrecognizer</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.highlight-module.html">highlight</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.interaction-module.html">interaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.lineardisassembly-module.html">lineardisassembly</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.log-module.html">log</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.lowlevelil-module.html">lowlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.mainthread-module.html">mainthread</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.mediumlevelil-module.html">mediumlevelil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.metadata-module.html">metadata</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.platform-module.html">platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.plugin-module.html">plugin</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.pluginmanager-module.html">pluginmanager</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.pyopenssl-module.html">pyopenssl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.requests-module.html">requests</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.scriptingprovider-module.html">scriptingprovider</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.setting-module.html">setting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.transform-module.html">transform</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.types-module.html">types</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.undoaction-module.html">undoaction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../binaryninja.update-module.html">update</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">Binary Ninja API</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Docs</a> &raquo;</li>
<li>Overview: module code</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>All modules for which code is available</h1>
<ul><li><a href="binaryninja.html">binaryninja</a></li>
<ul><li><a href="binaryninja/architecture.html">binaryninja.architecture</a></li>
<li><a href="binaryninja/basicblock.html">binaryninja.basicblock</a></li>
<li><a href="binaryninja/binaryview.html">binaryninja.binaryview</a></li>
<li><a href="binaryninja/callingconvention.html">binaryninja.callingconvention</a></li>
<li><a href="binaryninja/databuffer.html">binaryninja.databuffer</a></li>
<li><a href="binaryninja/demangle.html">binaryninja.demangle</a></li>
<li><a href="binaryninja/downloadprovider.html">binaryninja.downloadprovider</a></li>
<li><a href="binaryninja/enums.html">binaryninja.enums</a></li>
<li><a href="binaryninja/fileaccessor.html">binaryninja.fileaccessor</a></li>
<li><a href="binaryninja/filemetadata.html">binaryninja.filemetadata</a></li>
<li><a href="binaryninja/function.html">binaryninja.function</a></li>
<li><a href="binaryninja/functionrecognizer.html">binaryninja.functionrecognizer</a></li>
<li><a href="binaryninja/highlight.html">binaryninja.highlight</a></li>
<li><a href="binaryninja/interaction.html">binaryninja.interaction</a></li>
<li><a href="binaryninja/lineardisassembly.html">binaryninja.lineardisassembly</a></li>
<li><a href="binaryninja/log.html">binaryninja.log</a></li>
<li><a href="binaryninja/lowlevelil.html">binaryninja.lowlevelil</a></li>
<li><a href="binaryninja/mainthread.html">binaryninja.mainthread</a></li>
<li><a href="binaryninja/mediumlevelil.html">binaryninja.mediumlevelil</a></li>
<li><a href="binaryninja/metadata.html">binaryninja.metadata</a></li>
<li><a href="binaryninja/platform.html">binaryninja.platform</a></li>
<li><a href="binaryninja/plugin.html">binaryninja.plugin</a></li>
<li><a href="binaryninja/pluginmanager.html">binaryninja.pluginmanager</a></li>
<li><a href="binaryninja/scriptingprovider.html">binaryninja.scriptingprovider</a></li>
<li><a href="binaryninja/setting.html">binaryninja.setting</a></li>
<li><a href="binaryninja/transform.html">binaryninja.transform</a></li>
<li><a href="binaryninja/types.html">binaryninja.types</a></li>
<li><a href="binaryninja/undoaction.html">binaryninja.undoaction</a></li>
<li><a href="binaryninja/update.html">binaryninja.update</a></li>
</ul></ul>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2016, Vector 35 LLC.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'1.1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>

View File

@ -0,0 +1,5 @@
Architecture
============
.. doxygenclass:: BinaryNinja::Architecture
:members:
:protected-members:

View File

@ -0,0 +1,4 @@
BinaryView
===========
.. doxygenclass:: BinaryNinja::BinaryView
:members:

View File

@ -0,0 +1,29 @@
Console Logging
===============
BNLogLevel
----------
.. doxygenenum:: BNLogLevel
Log
---
.. doxygenfunction:: Log
LogDebug
--------
.. doxygenfunction:: LogDebug
LogInfo
--------
.. doxygenfunction:: LogInfo
LogWarn
--------
.. doxygenfunction:: LogWarn
LogError
--------
.. doxygenfunction:: LogError
LogAlert
--------
.. doxygenfunction:: LogAlert

View File

@ -0,0 +1,3 @@
Platform
=========
.. doxygenclass:: BinaryNinja::Platform

View File

@ -0,0 +1,21 @@
architecture module
=====================
.. autosummary::
:toctree:
binaryninja.architecture.Architecture
binaryninja.architecture.ArchitectureHook
binaryninja.architecture.CoreArchitecture
binaryninja.architecture.ReferenceSource
binaryninja.architecture.range
binaryninja.architecture.with_metaclass
.. toctree::
:maxdepth: 2
.. automodule:: binaryninja.architecture
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,120 @@
binaryninja.architecture.Architecture
=====================================
.. currentmodule:: binaryninja.architecture
.. autoclass:: Architecture
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~Architecture.__init__
~Architecture.always_branch
~Architecture.assemble
~Architecture.convert_to_nop
~Architecture.get_associated_arch_by_address
~Architecture.get_default_flag_condition_low_level_il
~Architecture.get_default_flag_write_low_level_il
~Architecture.get_flag_by_name
~Architecture.get_flag_condition_low_level_il
~Architecture.get_flag_index
~Architecture.get_flag_name
~Architecture.get_flag_role
~Architecture.get_flag_write_low_level_il
~Architecture.get_flag_write_type_by_name
~Architecture.get_flag_write_type_name
~Architecture.get_flags_required_for_flag_condition
~Architecture.get_instruction_info
~Architecture.get_instruction_low_level_il
~Architecture.get_instruction_low_level_il_instruction
~Architecture.get_instruction_text
~Architecture.get_intrinsic_index
~Architecture.get_intrinsic_name
~Architecture.get_low_level_il_from_bytes
~Architecture.get_modified_regs_on_write
~Architecture.get_reg_index
~Architecture.get_reg_name
~Architecture.get_reg_stack_for_reg
~Architecture.get_reg_stack_index
~Architecture.get_reg_stack_name
~Architecture.get_semantic_flag_class_by_name
~Architecture.get_semantic_flag_class_index
~Architecture.get_semantic_flag_class_name
~Architecture.get_semantic_flag_group_by_name
~Architecture.get_semantic_flag_group_index
~Architecture.get_semantic_flag_group_low_level_il
~Architecture.get_semantic_flag_group_name
~Architecture.get_view_type_constant
~Architecture.invert_branch
~Architecture.is_always_branch_patch_available
~Architecture.is_invert_branch_patch_available
~Architecture.is_never_branch_patch_available
~Architecture.is_skip_and_return_value_patch_available
~Architecture.is_skip_and_return_zero_patch_available
~Architecture.is_view_type_constant_defined
~Architecture.perform_always_branch
~Architecture.perform_assemble
~Architecture.perform_convert_to_nop
~Architecture.perform_get_associated_arch_by_address
~Architecture.perform_get_flag_condition_low_level_il
~Architecture.perform_get_flag_role
~Architecture.perform_get_flag_write_low_level_il
~Architecture.perform_get_flags_required_for_flag_condition
~Architecture.perform_get_instruction_info
~Architecture.perform_get_instruction_low_level_il
~Architecture.perform_get_instruction_text
~Architecture.perform_get_semantic_flag_group_low_level_il
~Architecture.perform_invert_branch
~Architecture.perform_is_always_branch_patch_available
~Architecture.perform_is_invert_branch_patch_available
~Architecture.perform_is_never_branch_patch_available
~Architecture.perform_is_skip_and_return_value_patch_available
~Architecture.perform_is_skip_and_return_zero_patch_available
~Architecture.perform_skip_and_return_value
~Architecture.register_calling_convention
~Architecture.set_view_type_constant
~Architecture.skip_and_return_value
.. rubric:: Attributes
.. autosummary::
~Architecture.address_size
~Architecture.calling_conventions
~Architecture.default_int_size
~Architecture.endianness
~Architecture.flag_conditions_for_semantic_flag_group
~Architecture.flag_roles
~Architecture.flag_write_types
~Architecture.flags
~Architecture.flags_required_for_flag_condition
~Architecture.flags_required_for_semantic_flag_group
~Architecture.flags_written_by_flag_write_type
~Architecture.full_width_regs
~Architecture.global_regs
~Architecture.instr_alignment
~Architecture.intrinsics
~Architecture.link_reg
~Architecture.list
~Architecture.max_instr_length
~Architecture.name
~Architecture.next_address
~Architecture.opcode_display_length
~Architecture.reg_stacks
~Architecture.regs
~Architecture.semantic_class_for_flag_write_type
~Architecture.semantic_flag_classes
~Architecture.semantic_flag_groups
~Architecture.stack_pointer
~Architecture.standalone_platform

View File

@ -0,0 +1,121 @@
binaryninja.architecture.ArchitectureHook
=========================================
.. currentmodule:: binaryninja.architecture
.. autoclass:: ArchitectureHook
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ArchitectureHook.__init__
~ArchitectureHook.always_branch
~ArchitectureHook.assemble
~ArchitectureHook.convert_to_nop
~ArchitectureHook.get_associated_arch_by_address
~ArchitectureHook.get_default_flag_condition_low_level_il
~ArchitectureHook.get_default_flag_write_low_level_il
~ArchitectureHook.get_flag_by_name
~ArchitectureHook.get_flag_condition_low_level_il
~ArchitectureHook.get_flag_index
~ArchitectureHook.get_flag_name
~ArchitectureHook.get_flag_role
~ArchitectureHook.get_flag_write_low_level_il
~ArchitectureHook.get_flag_write_type_by_name
~ArchitectureHook.get_flag_write_type_name
~ArchitectureHook.get_flags_required_for_flag_condition
~ArchitectureHook.get_instruction_info
~ArchitectureHook.get_instruction_low_level_il
~ArchitectureHook.get_instruction_low_level_il_instruction
~ArchitectureHook.get_instruction_text
~ArchitectureHook.get_intrinsic_index
~ArchitectureHook.get_intrinsic_name
~ArchitectureHook.get_low_level_il_from_bytes
~ArchitectureHook.get_modified_regs_on_write
~ArchitectureHook.get_reg_index
~ArchitectureHook.get_reg_name
~ArchitectureHook.get_reg_stack_for_reg
~ArchitectureHook.get_reg_stack_index
~ArchitectureHook.get_reg_stack_name
~ArchitectureHook.get_semantic_flag_class_by_name
~ArchitectureHook.get_semantic_flag_class_index
~ArchitectureHook.get_semantic_flag_class_name
~ArchitectureHook.get_semantic_flag_group_by_name
~ArchitectureHook.get_semantic_flag_group_index
~ArchitectureHook.get_semantic_flag_group_low_level_il
~ArchitectureHook.get_semantic_flag_group_name
~ArchitectureHook.get_view_type_constant
~ArchitectureHook.invert_branch
~ArchitectureHook.is_always_branch_patch_available
~ArchitectureHook.is_invert_branch_patch_available
~ArchitectureHook.is_never_branch_patch_available
~ArchitectureHook.is_skip_and_return_value_patch_available
~ArchitectureHook.is_skip_and_return_zero_patch_available
~ArchitectureHook.is_view_type_constant_defined
~ArchitectureHook.perform_always_branch
~ArchitectureHook.perform_assemble
~ArchitectureHook.perform_convert_to_nop
~ArchitectureHook.perform_get_associated_arch_by_address
~ArchitectureHook.perform_get_flag_condition_low_level_il
~ArchitectureHook.perform_get_flag_role
~ArchitectureHook.perform_get_flag_write_low_level_il
~ArchitectureHook.perform_get_flags_required_for_flag_condition
~ArchitectureHook.perform_get_instruction_info
~ArchitectureHook.perform_get_instruction_low_level_il
~ArchitectureHook.perform_get_instruction_text
~ArchitectureHook.perform_get_semantic_flag_group_low_level_il
~ArchitectureHook.perform_invert_branch
~ArchitectureHook.perform_is_always_branch_patch_available
~ArchitectureHook.perform_is_invert_branch_patch_available
~ArchitectureHook.perform_is_never_branch_patch_available
~ArchitectureHook.perform_is_skip_and_return_value_patch_available
~ArchitectureHook.perform_is_skip_and_return_zero_patch_available
~ArchitectureHook.perform_skip_and_return_value
~ArchitectureHook.register
~ArchitectureHook.register_calling_convention
~ArchitectureHook.set_view_type_constant
~ArchitectureHook.skip_and_return_value
.. rubric:: Attributes
.. autosummary::
~ArchitectureHook.address_size
~ArchitectureHook.calling_conventions
~ArchitectureHook.default_int_size
~ArchitectureHook.endianness
~ArchitectureHook.flag_conditions_for_semantic_flag_group
~ArchitectureHook.flag_roles
~ArchitectureHook.flag_write_types
~ArchitectureHook.flags
~ArchitectureHook.flags_required_for_flag_condition
~ArchitectureHook.flags_required_for_semantic_flag_group
~ArchitectureHook.flags_written_by_flag_write_type
~ArchitectureHook.full_width_regs
~ArchitectureHook.global_regs
~ArchitectureHook.instr_alignment
~ArchitectureHook.intrinsics
~ArchitectureHook.link_reg
~ArchitectureHook.list
~ArchitectureHook.max_instr_length
~ArchitectureHook.name
~ArchitectureHook.next_address
~ArchitectureHook.opcode_display_length
~ArchitectureHook.reg_stacks
~ArchitectureHook.regs
~ArchitectureHook.semantic_class_for_flag_write_type
~ArchitectureHook.semantic_flag_classes
~ArchitectureHook.semantic_flag_groups
~ArchitectureHook.stack_pointer
~ArchitectureHook.standalone_platform

View File

@ -0,0 +1,120 @@
binaryninja.architecture.CoreArchitecture
=========================================
.. currentmodule:: binaryninja.architecture
.. autoclass:: CoreArchitecture
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~CoreArchitecture.__init__
~CoreArchitecture.always_branch
~CoreArchitecture.assemble
~CoreArchitecture.convert_to_nop
~CoreArchitecture.get_associated_arch_by_address
~CoreArchitecture.get_default_flag_condition_low_level_il
~CoreArchitecture.get_default_flag_write_low_level_il
~CoreArchitecture.get_flag_by_name
~CoreArchitecture.get_flag_condition_low_level_il
~CoreArchitecture.get_flag_index
~CoreArchitecture.get_flag_name
~CoreArchitecture.get_flag_role
~CoreArchitecture.get_flag_write_low_level_il
~CoreArchitecture.get_flag_write_type_by_name
~CoreArchitecture.get_flag_write_type_name
~CoreArchitecture.get_flags_required_for_flag_condition
~CoreArchitecture.get_instruction_info
~CoreArchitecture.get_instruction_low_level_il
~CoreArchitecture.get_instruction_low_level_il_instruction
~CoreArchitecture.get_instruction_text
~CoreArchitecture.get_intrinsic_index
~CoreArchitecture.get_intrinsic_name
~CoreArchitecture.get_low_level_il_from_bytes
~CoreArchitecture.get_modified_regs_on_write
~CoreArchitecture.get_reg_index
~CoreArchitecture.get_reg_name
~CoreArchitecture.get_reg_stack_for_reg
~CoreArchitecture.get_reg_stack_index
~CoreArchitecture.get_reg_stack_name
~CoreArchitecture.get_semantic_flag_class_by_name
~CoreArchitecture.get_semantic_flag_class_index
~CoreArchitecture.get_semantic_flag_class_name
~CoreArchitecture.get_semantic_flag_group_by_name
~CoreArchitecture.get_semantic_flag_group_index
~CoreArchitecture.get_semantic_flag_group_low_level_il
~CoreArchitecture.get_semantic_flag_group_name
~CoreArchitecture.get_view_type_constant
~CoreArchitecture.invert_branch
~CoreArchitecture.is_always_branch_patch_available
~CoreArchitecture.is_invert_branch_patch_available
~CoreArchitecture.is_never_branch_patch_available
~CoreArchitecture.is_skip_and_return_value_patch_available
~CoreArchitecture.is_skip_and_return_zero_patch_available
~CoreArchitecture.is_view_type_constant_defined
~CoreArchitecture.perform_always_branch
~CoreArchitecture.perform_assemble
~CoreArchitecture.perform_convert_to_nop
~CoreArchitecture.perform_get_associated_arch_by_address
~CoreArchitecture.perform_get_flag_condition_low_level_il
~CoreArchitecture.perform_get_flag_role
~CoreArchitecture.perform_get_flag_write_low_level_il
~CoreArchitecture.perform_get_flags_required_for_flag_condition
~CoreArchitecture.perform_get_instruction_info
~CoreArchitecture.perform_get_instruction_low_level_il
~CoreArchitecture.perform_get_instruction_text
~CoreArchitecture.perform_get_semantic_flag_group_low_level_il
~CoreArchitecture.perform_invert_branch
~CoreArchitecture.perform_is_always_branch_patch_available
~CoreArchitecture.perform_is_invert_branch_patch_available
~CoreArchitecture.perform_is_never_branch_patch_available
~CoreArchitecture.perform_is_skip_and_return_value_patch_available
~CoreArchitecture.perform_is_skip_and_return_zero_patch_available
~CoreArchitecture.perform_skip_and_return_value
~CoreArchitecture.register_calling_convention
~CoreArchitecture.set_view_type_constant
~CoreArchitecture.skip_and_return_value
.. rubric:: Attributes
.. autosummary::
~CoreArchitecture.address_size
~CoreArchitecture.calling_conventions
~CoreArchitecture.default_int_size
~CoreArchitecture.endianness
~CoreArchitecture.flag_conditions_for_semantic_flag_group
~CoreArchitecture.flag_roles
~CoreArchitecture.flag_write_types
~CoreArchitecture.flags
~CoreArchitecture.flags_required_for_flag_condition
~CoreArchitecture.flags_required_for_semantic_flag_group
~CoreArchitecture.flags_written_by_flag_write_type
~CoreArchitecture.full_width_regs
~CoreArchitecture.global_regs
~CoreArchitecture.instr_alignment
~CoreArchitecture.intrinsics
~CoreArchitecture.link_reg
~CoreArchitecture.list
~CoreArchitecture.max_instr_length
~CoreArchitecture.name
~CoreArchitecture.next_address
~CoreArchitecture.opcode_display_length
~CoreArchitecture.reg_stacks
~CoreArchitecture.regs
~CoreArchitecture.semantic_class_for_flag_write_type
~CoreArchitecture.semantic_flag_classes
~CoreArchitecture.semantic_flag_groups
~CoreArchitecture.stack_pointer
~CoreArchitecture.standalone_platform

View File

@ -0,0 +1,22 @@
binaryninja.architecture.ReferenceSource
========================================
.. currentmodule:: binaryninja.architecture
.. autoclass:: ReferenceSource
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ReferenceSource.__init__

View File

@ -0,0 +1,6 @@
binaryninja.architecture.range
==============================
.. currentmodule:: binaryninja.architecture
.. autofunction:: range

View File

@ -0,0 +1,6 @@
binaryninja.architecture.with_metaclass
=======================================
.. currentmodule:: binaryninja.architecture
.. autofunction:: with_metaclass

View File

@ -0,0 +1,16 @@
atexit module
=====================
.. autosummary::
:toctree:
binaryninja.atexit.register
.. toctree::
:maxdepth: 2
.. automodule:: binaryninja.atexit
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,6 @@
binaryninja.atexit.register
===========================
.. currentmodule:: binaryninja.atexit
.. autofunction:: register

View File

@ -0,0 +1,18 @@
basicblock module
=====================
.. autosummary::
:toctree:
binaryninja.basicblock.BasicBlock
binaryninja.basicblock.BasicBlockEdge
binaryninja.basicblock.range
.. toctree::
:maxdepth: 2
.. automodule:: binaryninja.basicblock
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,53 @@
binaryninja.basicblock.BasicBlock
=================================
.. currentmodule:: binaryninja.basicblock
.. autoclass:: BasicBlock
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BasicBlock.__init__
~BasicBlock.get_disassembly_text
~BasicBlock.get_iterated_dominance_frontier
~BasicBlock.mark_recent_use
~BasicBlock.set_auto_highlight
~BasicBlock.set_user_highlight
.. rubric:: Attributes
.. autosummary::
~BasicBlock.annotations
~BasicBlock.arch
~BasicBlock.can_exit
~BasicBlock.disassembly_text
~BasicBlock.dominance_frontier
~BasicBlock.dominator_tree_children
~BasicBlock.dominators
~BasicBlock.end
~BasicBlock.function
~BasicBlock.has_undetermined_outgoing_edges
~BasicBlock.highlight
~BasicBlock.immediate_dominator
~BasicBlock.incoming_edges
~BasicBlock.index
~BasicBlock.is_il
~BasicBlock.is_low_level_il
~BasicBlock.is_medium_level_il
~BasicBlock.length
~BasicBlock.outgoing_edges
~BasicBlock.start
~BasicBlock.strict_dominators

View File

@ -0,0 +1,22 @@
binaryninja.basicblock.BasicBlockEdge
=====================================
.. currentmodule:: binaryninja.basicblock
.. autoclass:: BasicBlockEdge
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BasicBlockEdge.__init__

View File

@ -0,0 +1,6 @@
binaryninja.basicblock.range
============================
.. currentmodule:: binaryninja.basicblock
.. autofunction:: range

View File

@ -0,0 +1,200 @@
binaryninja module
=====================
.. autosummary::
:toctree:
binaryninja.binaryninja.ActiveAnalysisInfo
binaryninja.binaryninja.AddressField
binaryninja.binaryninja.AddressRange
binaryninja.binaryninja.AdvancedFunctionAnalysisDataRequestor
binaryninja.binaryninja.AnalysisCompletionEvent
binaryninja.binaryninja.AnalysisInfo
binaryninja.binaryninja.AnalysisProgress
binaryninja.binaryninja.Architecture
binaryninja.binaryninja.ArchitectureHook
binaryninja.binaryninja.BackgroundTask
binaryninja.binaryninja.BackgroundTaskThread
binaryninja.binaryninja.BasicBlock
binaryninja.binaryninja.BasicBlockEdge
binaryninja.binaryninja.BinaryDataNotification
binaryninja.binaryninja.BinaryDataNotificationCallbacks
binaryninja.binaryninja.BinaryReader
binaryninja.binaryninja.BinaryView
binaryninja.binaryninja.BinaryViewType
binaryninja.binaryninja.BinaryWriter
binaryninja.binaryninja.BoolWithConfidence
binaryninja.binaryninja.CallingConvention
binaryninja.binaryninja.ChoiceField
binaryninja.binaryninja.ConstantReference
binaryninja.binaryninja.CoreArchitecture
binaryninja.binaryninja.CoreFileAccessor
binaryninja.binaryninja.DataBuffer
binaryninja.binaryninja.DataVariable
binaryninja.binaryninja.DirectoryNameField
binaryninja.binaryninja.DisassemblySettings
binaryninja.binaryninja.DisassemblyTextLine
binaryninja.binaryninja.DownloadInstance
binaryninja.binaryninja.DownloadProvider
binaryninja.binaryninja.Enumeration
binaryninja.binaryninja.EnumerationMember
binaryninja.binaryninja.FileAccessor
binaryninja.binaryninja.FileMetadata
binaryninja.binaryninja.Function
binaryninja.binaryninja.FunctionGraph
binaryninja.binaryninja.FunctionGraphBlock
binaryninja.binaryninja.FunctionGraphEdge
binaryninja.binaryninja.FunctionParameter
binaryninja.binaryninja.FunctionRecognizer
binaryninja.binaryninja.HighlightColor
binaryninja.binaryninja.ILFlag
binaryninja.binaryninja.ILIntrinsic
binaryninja.binaryninja.ILRegister
binaryninja.binaryninja.ILRegisterStack
binaryninja.binaryninja.ILSemanticFlagClass
binaryninja.binaryninja.ILSemanticFlagGroup
binaryninja.binaryninja.IndirectBranchInfo
binaryninja.binaryninja.InstructionBranch
binaryninja.binaryninja.InstructionInfo
binaryninja.binaryninja.InstructionTextToken
binaryninja.binaryninja.IntegerField
binaryninja.binaryninja.InteractionHandler
binaryninja.binaryninja.IntrinsicInfo
binaryninja.binaryninja.IntrinsicInput
binaryninja.binaryninja.LabelField
binaryninja.binaryninja.LinearDisassemblyLine
binaryninja.binaryninja.LinearDisassemblyPosition
binaryninja.binaryninja.LookupTableEntry
binaryninja.binaryninja.LowLevelILBasicBlock
binaryninja.binaryninja.LowLevelILExpr
binaryninja.binaryninja.LowLevelILFunction
binaryninja.binaryninja.LowLevelILInstruction
binaryninja.binaryninja.LowLevelILLabel
binaryninja.binaryninja.LowLevelILOperationAndSize
binaryninja.binaryninja.MainThreadAction
binaryninja.binaryninja.MainThreadActionHandler
binaryninja.binaryninja.MediumLevelILBasicBlock
binaryninja.binaryninja.MediumLevelILExpr
binaryninja.binaryninja.MediumLevelILFunction
binaryninja.binaryninja.MediumLevelILInstruction
binaryninja.binaryninja.MediumLevelILLabel
binaryninja.binaryninja.MediumLevelILOperationAndSize
binaryninja.binaryninja.Metadata
binaryninja.binaryninja.MultilineTextField
binaryninja.binaryninja.NamedTypeReference
binaryninja.binaryninja.NavigationHandler
binaryninja.binaryninja.OpenFileNameField
binaryninja.binaryninja.ParameterVariables
binaryninja.binaryninja.Platform
binaryninja.binaryninja.PluginCommand
binaryninja.binaryninja.PluginCommandContext
binaryninja.binaryninja.PluginManagerLoadPluginCallback
binaryninja.binaryninja.PossibleValueSet
binaryninja.binaryninja.PythonDownloadInstance
binaryninja.binaryninja.PythonDownloadProvider
binaryninja.binaryninja.PythonScriptingInstance
binaryninja.binaryninja.PythonScriptingProvider
binaryninja.binaryninja.QualifiedName
binaryninja.binaryninja.ReferenceSource
binaryninja.binaryninja.ReferenceTypeWithConfidence
binaryninja.binaryninja.RegisterInfo
binaryninja.binaryninja.RegisterSet
binaryninja.binaryninja.RegisterStackAdjustmentWithConfidence
binaryninja.binaryninja.RegisterStackInfo
binaryninja.binaryninja.RegisterValue
binaryninja.binaryninja.RepoPlugin
binaryninja.binaryninja.Repository
binaryninja.binaryninja.RepositoryManager
binaryninja.binaryninja.SSAFlag
binaryninja.binaryninja.SSARegister
binaryninja.binaryninja.SSARegisterOrFlag
binaryninja.binaryninja.SSARegisterStack
binaryninja.binaryninja.SSAVariable
binaryninja.binaryninja.SaveFileNameField
binaryninja.binaryninja.ScriptingInstance
binaryninja.binaryninja.ScriptingOutputListener
binaryninja.binaryninja.ScriptingProvider
binaryninja.binaryninja.Section
binaryninja.binaryninja.Segment
binaryninja.binaryninja.SeparatorField
binaryninja.binaryninja.Setting
binaryninja.binaryninja.SizeWithConfidence
binaryninja.binaryninja.StackVariableReference
binaryninja.binaryninja.StringReference
binaryninja.binaryninja.Structure
binaryninja.binaryninja.StructureMember
binaryninja.binaryninja.Symbol
binaryninja.binaryninja.TextLineField
binaryninja.binaryninja.Transform
binaryninja.binaryninja.TransformParameter
binaryninja.binaryninja.Type
binaryninja.binaryninja.TypeParserResult
binaryninja.binaryninja.UndoAction
binaryninja.binaryninja.UpdateChannel
binaryninja.binaryninja.UpdateProgressCallback
binaryninja.binaryninja.UpdateVersion
binaryninja.binaryninja.ValueRange
binaryninja.binaryninja.Variable
binaryninja.binaryninja.LLIL_GET_TEMP_REG_INDEX
binaryninja.binaryninja.LLIL_REG_IS_TEMP
binaryninja.binaryninja.LLIL_TEMP
binaryninja.binaryninja.are_auto_updates_enabled
binaryninja.binaryninja.close_logs
binaryninja.binaryninja.cstr
binaryninja.binaryninja.demangle_gnu3
binaryninja.binaryninja.demangle_ms
binaryninja.binaryninja.escape_string
binaryninja.binaryninja.execute_on_main_thread
binaryninja.binaryninja.execute_on_main_thread_and_wait
binaryninja.binaryninja.get_address_input
binaryninja.binaryninja.get_choice_input
binaryninja.binaryninja.get_directory_name_input
binaryninja.binaryninja.get_form_input
binaryninja.binaryninja.get_install_directory
binaryninja.binaryninja.get_int_input
binaryninja.binaryninja.get_open_filename_input
binaryninja.binaryninja.get_qualified_name
binaryninja.binaryninja.get_save_filename_input
binaryninja.binaryninja.get_text_line_input
binaryninja.binaryninja.get_time_since_last_update_check
binaryninja.binaryninja.get_unique_identifier
binaryninja.binaryninja.get_worker_thread_count
binaryninja.binaryninja.install_pending_update
binaryninja.binaryninja.is_output_redirected_to_log
binaryninja.binaryninja.is_update_installation_pending
binaryninja.binaryninja.log_alert
binaryninja.binaryninja.log_debug
binaryninja.binaryninja.log_error
binaryninja.binaryninja.log_info
binaryninja.binaryninja.log_to_file
binaryninja.binaryninja.log_to_stderr
binaryninja.binaryninja.log_to_stdout
binaryninja.binaryninja.log_warn
binaryninja.binaryninja.markdown_to_html
binaryninja.binaryninja.preprocess_source
binaryninja.binaryninja.pyNativeStr
binaryninja.binaryninja.range
binaryninja.binaryninja.redirect_output_to_log
binaryninja.binaryninja.redirect_stdio
binaryninja.binaryninja.set_auto_updates_enabled
binaryninja.binaryninja.set_worker_thread_count
binaryninja.binaryninja.show_html_report
binaryninja.binaryninja.show_markdown_report
binaryninja.binaryninja.show_message_box
binaryninja.binaryninja.show_plain_text_report
binaryninja.binaryninja.shutdown
binaryninja.binaryninja.unescape_string
binaryninja.binaryninja.updates_checked
binaryninja.binaryninja.with_metaclass
binaryninja.binaryninja.worker_enqueue
binaryninja.binaryninja.worker_interactive_enqueue
binaryninja.binaryninja.worker_priority_enqueue
.. toctree::
:maxdepth: 2
.. automodule:: binaryninja.binaryninja
:members:
:undoc-members:
:show-inheritance:

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.ActiveAnalysisInfo
==========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ActiveAnalysisInfo
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ActiveAnalysisInfo.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.AddressField
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: AddressField
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~AddressField.__init__

View File

@ -0,0 +1,28 @@
binaryninja.binaryninja.AddressRange
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: AddressRange
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~AddressRange.__init__
.. rubric:: Attributes
.. autosummary::
~AddressRange.length

View File

@ -0,0 +1,29 @@
binaryninja.binaryninja.AdvancedFunctionAnalysisDataRequestor
=============================================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: AdvancedFunctionAnalysisDataRequestor
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~AdvancedFunctionAnalysisDataRequestor.__init__
~AdvancedFunctionAnalysisDataRequestor.close
.. rubric:: Attributes
.. autosummary::
~AdvancedFunctionAnalysisDataRequestor.function

View File

@ -0,0 +1,23 @@
binaryninja.binaryninja.AnalysisCompletionEvent
===============================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: AnalysisCompletionEvent
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~AnalysisCompletionEvent.__init__
~AnalysisCompletionEvent.cancel

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.AnalysisInfo
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: AnalysisInfo
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~AnalysisInfo.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.AnalysisProgress
========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: AnalysisProgress
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~AnalysisProgress.__init__

View File

@ -0,0 +1,120 @@
binaryninja.binaryninja.Architecture
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: Architecture
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~Architecture.__init__
~Architecture.always_branch
~Architecture.assemble
~Architecture.convert_to_nop
~Architecture.get_associated_arch_by_address
~Architecture.get_default_flag_condition_low_level_il
~Architecture.get_default_flag_write_low_level_il
~Architecture.get_flag_by_name
~Architecture.get_flag_condition_low_level_il
~Architecture.get_flag_index
~Architecture.get_flag_name
~Architecture.get_flag_role
~Architecture.get_flag_write_low_level_il
~Architecture.get_flag_write_type_by_name
~Architecture.get_flag_write_type_name
~Architecture.get_flags_required_for_flag_condition
~Architecture.get_instruction_info
~Architecture.get_instruction_low_level_il
~Architecture.get_instruction_low_level_il_instruction
~Architecture.get_instruction_text
~Architecture.get_intrinsic_index
~Architecture.get_intrinsic_name
~Architecture.get_low_level_il_from_bytes
~Architecture.get_modified_regs_on_write
~Architecture.get_reg_index
~Architecture.get_reg_name
~Architecture.get_reg_stack_for_reg
~Architecture.get_reg_stack_index
~Architecture.get_reg_stack_name
~Architecture.get_semantic_flag_class_by_name
~Architecture.get_semantic_flag_class_index
~Architecture.get_semantic_flag_class_name
~Architecture.get_semantic_flag_group_by_name
~Architecture.get_semantic_flag_group_index
~Architecture.get_semantic_flag_group_low_level_il
~Architecture.get_semantic_flag_group_name
~Architecture.get_view_type_constant
~Architecture.invert_branch
~Architecture.is_always_branch_patch_available
~Architecture.is_invert_branch_patch_available
~Architecture.is_never_branch_patch_available
~Architecture.is_skip_and_return_value_patch_available
~Architecture.is_skip_and_return_zero_patch_available
~Architecture.is_view_type_constant_defined
~Architecture.perform_always_branch
~Architecture.perform_assemble
~Architecture.perform_convert_to_nop
~Architecture.perform_get_associated_arch_by_address
~Architecture.perform_get_flag_condition_low_level_il
~Architecture.perform_get_flag_role
~Architecture.perform_get_flag_write_low_level_il
~Architecture.perform_get_flags_required_for_flag_condition
~Architecture.perform_get_instruction_info
~Architecture.perform_get_instruction_low_level_il
~Architecture.perform_get_instruction_text
~Architecture.perform_get_semantic_flag_group_low_level_il
~Architecture.perform_invert_branch
~Architecture.perform_is_always_branch_patch_available
~Architecture.perform_is_invert_branch_patch_available
~Architecture.perform_is_never_branch_patch_available
~Architecture.perform_is_skip_and_return_value_patch_available
~Architecture.perform_is_skip_and_return_zero_patch_available
~Architecture.perform_skip_and_return_value
~Architecture.register_calling_convention
~Architecture.set_view_type_constant
~Architecture.skip_and_return_value
.. rubric:: Attributes
.. autosummary::
~Architecture.address_size
~Architecture.calling_conventions
~Architecture.default_int_size
~Architecture.endianness
~Architecture.flag_conditions_for_semantic_flag_group
~Architecture.flag_roles
~Architecture.flag_write_types
~Architecture.flags
~Architecture.flags_required_for_flag_condition
~Architecture.flags_required_for_semantic_flag_group
~Architecture.flags_written_by_flag_write_type
~Architecture.full_width_regs
~Architecture.global_regs
~Architecture.instr_alignment
~Architecture.intrinsics
~Architecture.link_reg
~Architecture.list
~Architecture.max_instr_length
~Architecture.name
~Architecture.next_address
~Architecture.opcode_display_length
~Architecture.reg_stacks
~Architecture.regs
~Architecture.semantic_class_for_flag_write_type
~Architecture.semantic_flag_classes
~Architecture.semantic_flag_groups
~Architecture.stack_pointer
~Architecture.standalone_platform

View File

@ -0,0 +1,121 @@
binaryninja.binaryninja.ArchitectureHook
========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ArchitectureHook
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ArchitectureHook.__init__
~ArchitectureHook.always_branch
~ArchitectureHook.assemble
~ArchitectureHook.convert_to_nop
~ArchitectureHook.get_associated_arch_by_address
~ArchitectureHook.get_default_flag_condition_low_level_il
~ArchitectureHook.get_default_flag_write_low_level_il
~ArchitectureHook.get_flag_by_name
~ArchitectureHook.get_flag_condition_low_level_il
~ArchitectureHook.get_flag_index
~ArchitectureHook.get_flag_name
~ArchitectureHook.get_flag_role
~ArchitectureHook.get_flag_write_low_level_il
~ArchitectureHook.get_flag_write_type_by_name
~ArchitectureHook.get_flag_write_type_name
~ArchitectureHook.get_flags_required_for_flag_condition
~ArchitectureHook.get_instruction_info
~ArchitectureHook.get_instruction_low_level_il
~ArchitectureHook.get_instruction_low_level_il_instruction
~ArchitectureHook.get_instruction_text
~ArchitectureHook.get_intrinsic_index
~ArchitectureHook.get_intrinsic_name
~ArchitectureHook.get_low_level_il_from_bytes
~ArchitectureHook.get_modified_regs_on_write
~ArchitectureHook.get_reg_index
~ArchitectureHook.get_reg_name
~ArchitectureHook.get_reg_stack_for_reg
~ArchitectureHook.get_reg_stack_index
~ArchitectureHook.get_reg_stack_name
~ArchitectureHook.get_semantic_flag_class_by_name
~ArchitectureHook.get_semantic_flag_class_index
~ArchitectureHook.get_semantic_flag_class_name
~ArchitectureHook.get_semantic_flag_group_by_name
~ArchitectureHook.get_semantic_flag_group_index
~ArchitectureHook.get_semantic_flag_group_low_level_il
~ArchitectureHook.get_semantic_flag_group_name
~ArchitectureHook.get_view_type_constant
~ArchitectureHook.invert_branch
~ArchitectureHook.is_always_branch_patch_available
~ArchitectureHook.is_invert_branch_patch_available
~ArchitectureHook.is_never_branch_patch_available
~ArchitectureHook.is_skip_and_return_value_patch_available
~ArchitectureHook.is_skip_and_return_zero_patch_available
~ArchitectureHook.is_view_type_constant_defined
~ArchitectureHook.perform_always_branch
~ArchitectureHook.perform_assemble
~ArchitectureHook.perform_convert_to_nop
~ArchitectureHook.perform_get_associated_arch_by_address
~ArchitectureHook.perform_get_flag_condition_low_level_il
~ArchitectureHook.perform_get_flag_role
~ArchitectureHook.perform_get_flag_write_low_level_il
~ArchitectureHook.perform_get_flags_required_for_flag_condition
~ArchitectureHook.perform_get_instruction_info
~ArchitectureHook.perform_get_instruction_low_level_il
~ArchitectureHook.perform_get_instruction_text
~ArchitectureHook.perform_get_semantic_flag_group_low_level_il
~ArchitectureHook.perform_invert_branch
~ArchitectureHook.perform_is_always_branch_patch_available
~ArchitectureHook.perform_is_invert_branch_patch_available
~ArchitectureHook.perform_is_never_branch_patch_available
~ArchitectureHook.perform_is_skip_and_return_value_patch_available
~ArchitectureHook.perform_is_skip_and_return_zero_patch_available
~ArchitectureHook.perform_skip_and_return_value
~ArchitectureHook.register
~ArchitectureHook.register_calling_convention
~ArchitectureHook.set_view_type_constant
~ArchitectureHook.skip_and_return_value
.. rubric:: Attributes
.. autosummary::
~ArchitectureHook.address_size
~ArchitectureHook.calling_conventions
~ArchitectureHook.default_int_size
~ArchitectureHook.endianness
~ArchitectureHook.flag_conditions_for_semantic_flag_group
~ArchitectureHook.flag_roles
~ArchitectureHook.flag_write_types
~ArchitectureHook.flags
~ArchitectureHook.flags_required_for_flag_condition
~ArchitectureHook.flags_required_for_semantic_flag_group
~ArchitectureHook.flags_written_by_flag_write_type
~ArchitectureHook.full_width_regs
~ArchitectureHook.global_regs
~ArchitectureHook.instr_alignment
~ArchitectureHook.intrinsics
~ArchitectureHook.link_reg
~ArchitectureHook.list
~ArchitectureHook.max_instr_length
~ArchitectureHook.name
~ArchitectureHook.next_address
~ArchitectureHook.opcode_display_length
~ArchitectureHook.reg_stacks
~ArchitectureHook.regs
~ArchitectureHook.semantic_class_for_flag_write_type
~ArchitectureHook.semantic_flag_classes
~ArchitectureHook.semantic_flag_groups
~ArchitectureHook.stack_pointer
~ArchitectureHook.standalone_platform

View File

@ -0,0 +1,34 @@
binaryninja.binaryninja.BackgroundTask
======================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BackgroundTask
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BackgroundTask.__init__
~BackgroundTask.cancel
~BackgroundTask.finish
.. rubric:: Attributes
.. autosummary::
~BackgroundTask.can_cancel
~BackgroundTask.cancelled
~BackgroundTask.finished
~BackgroundTask.list
~BackgroundTask.progress

View File

@ -0,0 +1,37 @@
binaryninja.binaryninja.BackgroundTaskThread
============================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BackgroundTaskThread
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BackgroundTaskThread.__init__
~BackgroundTaskThread.cancel
~BackgroundTaskThread.finish
~BackgroundTaskThread.join
~BackgroundTaskThread.run
~BackgroundTaskThread.start
.. rubric:: Attributes
.. autosummary::
~BackgroundTaskThread.can_cancel
~BackgroundTaskThread.cancelled
~BackgroundTaskThread.finished
~BackgroundTaskThread.list
~BackgroundTaskThread.progress

View File

@ -0,0 +1,53 @@
binaryninja.binaryninja.BasicBlock
==================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BasicBlock
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BasicBlock.__init__
~BasicBlock.get_disassembly_text
~BasicBlock.get_iterated_dominance_frontier
~BasicBlock.mark_recent_use
~BasicBlock.set_auto_highlight
~BasicBlock.set_user_highlight
.. rubric:: Attributes
.. autosummary::
~BasicBlock.annotations
~BasicBlock.arch
~BasicBlock.can_exit
~BasicBlock.disassembly_text
~BasicBlock.dominance_frontier
~BasicBlock.dominator_tree_children
~BasicBlock.dominators
~BasicBlock.end
~BasicBlock.function
~BasicBlock.has_undetermined_outgoing_edges
~BasicBlock.highlight
~BasicBlock.immediate_dominator
~BasicBlock.incoming_edges
~BasicBlock.index
~BasicBlock.is_il
~BasicBlock.is_low_level_il
~BasicBlock.is_medium_level_il
~BasicBlock.length
~BasicBlock.outgoing_edges
~BasicBlock.start
~BasicBlock.strict_dominators

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.BasicBlockEdge
======================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BasicBlockEdge
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BasicBlockEdge.__init__

View File

@ -0,0 +1,36 @@
binaryninja.binaryninja.BinaryDataNotification
==============================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BinaryDataNotification
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BinaryDataNotification.__init__
~BinaryDataNotification.data_inserted
~BinaryDataNotification.data_removed
~BinaryDataNotification.data_var_added
~BinaryDataNotification.data_var_removed
~BinaryDataNotification.data_var_updated
~BinaryDataNotification.data_written
~BinaryDataNotification.function_added
~BinaryDataNotification.function_removed
~BinaryDataNotification.function_update_requested
~BinaryDataNotification.function_updated
~BinaryDataNotification.string_found
~BinaryDataNotification.string_removed
~BinaryDataNotification.type_defined
~BinaryDataNotification.type_undefined

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.BinaryDataNotificationCallbacks
=======================================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BinaryDataNotificationCallbacks
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BinaryDataNotificationCallbacks.__init__

View File

@ -0,0 +1,43 @@
binaryninja.binaryninja.BinaryReader
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BinaryReader
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BinaryReader.__init__
~BinaryReader.read
~BinaryReader.read16
~BinaryReader.read16be
~BinaryReader.read16le
~BinaryReader.read32
~BinaryReader.read32be
~BinaryReader.read32le
~BinaryReader.read64
~BinaryReader.read64be
~BinaryReader.read64le
~BinaryReader.read8
~BinaryReader.seek
~BinaryReader.seek_relative
.. rubric:: Attributes
.. autosummary::
~BinaryReader.endianness
~BinaryReader.eof
~BinaryReader.offset

View File

@ -0,0 +1,216 @@
binaryninja.binaryninja.BinaryView
==================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BinaryView
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BinaryView.__init__
~BinaryView.abort_analysis
~BinaryView.add_analysis_completion_event
~BinaryView.add_analysis_option
~BinaryView.add_auto_section
~BinaryView.add_auto_segment
~BinaryView.add_entry_point
~BinaryView.add_function
~BinaryView.add_undo_action
~BinaryView.add_user_section
~BinaryView.add_user_segment
~BinaryView.always_branch
~BinaryView.begin_undo_actions
~BinaryView.commit_undo_actions
~BinaryView.convert_to_nop
~BinaryView.create_database
~BinaryView.create_user_function
~BinaryView.define_auto_symbol
~BinaryView.define_auto_symbol_and_var_or_function
~BinaryView.define_data_var
~BinaryView.define_imported_function
~BinaryView.define_type
~BinaryView.define_user_data_var
~BinaryView.define_user_symbol
~BinaryView.define_user_type
~BinaryView.find_next_data
~BinaryView.get_address_for_data_offset
~BinaryView.get_address_input
~BinaryView.get_basic_blocks_at
~BinaryView.get_basic_blocks_starting_at
~BinaryView.get_code_refs
~BinaryView.get_data_var_at
~BinaryView.get_disassembly
~BinaryView.get_function_at
~BinaryView.get_functions_at
~BinaryView.get_functions_containing
~BinaryView.get_instruction_length
~BinaryView.get_linear_disassembly
~BinaryView.get_linear_disassembly_position_at
~BinaryView.get_modification
~BinaryView.get_next_basic_block_start_after
~BinaryView.get_next_data_after
~BinaryView.get_next_data_var_after
~BinaryView.get_next_disassembly
~BinaryView.get_next_function_start_after
~BinaryView.get_next_linear_disassembly_lines
~BinaryView.get_previous_basic_block_end_before
~BinaryView.get_previous_basic_block_start_before
~BinaryView.get_previous_data_before
~BinaryView.get_previous_data_var_before
~BinaryView.get_previous_function_start_before
~BinaryView.get_previous_linear_disassembly_lines
~BinaryView.get_recent_basic_block_at
~BinaryView.get_recent_function_at
~BinaryView.get_section_by_name
~BinaryView.get_sections_at
~BinaryView.get_segment_at
~BinaryView.get_strings
~BinaryView.get_symbol_at
~BinaryView.get_symbol_by_raw_name
~BinaryView.get_symbols
~BinaryView.get_symbols_by_name
~BinaryView.get_symbols_of_type
~BinaryView.get_type_by_id
~BinaryView.get_type_by_name
~BinaryView.get_type_id
~BinaryView.get_type_name_by_id
~BinaryView.get_unique_section_names
~BinaryView.get_view_of_type
~BinaryView.init
~BinaryView.insert
~BinaryView.invert_branch
~BinaryView.is_always_branch_patch_available
~BinaryView.is_invert_branch_patch_available
~BinaryView.is_never_branch_patch_available
~BinaryView.is_offset_code_semantics
~BinaryView.is_offset_executable
~BinaryView.is_offset_readable
~BinaryView.is_offset_writable
~BinaryView.is_offset_writable_semantics
~BinaryView.is_skip_and_return_value_patch_available
~BinaryView.is_skip_and_return_zero_patch_available
~BinaryView.is_type_auto_defined
~BinaryView.is_valid_offset
~BinaryView.navigate
~BinaryView.never_branch
~BinaryView.new
~BinaryView.notify_data_inserted
~BinaryView.notify_data_removed
~BinaryView.notify_data_written
~BinaryView.open
~BinaryView.parse_type_string
~BinaryView.perform_get_address_size
~BinaryView.perform_get_default_endianness
~BinaryView.perform_get_entry_point
~BinaryView.perform_get_length
~BinaryView.perform_get_modification
~BinaryView.perform_get_next_valid_offset
~BinaryView.perform_get_start
~BinaryView.perform_insert
~BinaryView.perform_is_executable
~BinaryView.perform_is_offset_executable
~BinaryView.perform_is_offset_readable
~BinaryView.perform_is_offset_writable
~BinaryView.perform_is_relocatable
~BinaryView.perform_is_valid_offset
~BinaryView.perform_read
~BinaryView.perform_remove
~BinaryView.perform_save
~BinaryView.perform_write
~BinaryView.query_metadata
~BinaryView.read
~BinaryView.reanalyze
~BinaryView.redo
~BinaryView.register
~BinaryView.register_notification
~BinaryView.register_platform_types
~BinaryView.remove
~BinaryView.remove_auto_section
~BinaryView.remove_auto_segment
~BinaryView.remove_function
~BinaryView.remove_metadata
~BinaryView.remove_user_function
~BinaryView.remove_user_section
~BinaryView.remove_user_segment
~BinaryView.rename_type
~BinaryView.save
~BinaryView.save_auto_snapshot
~BinaryView.set_default_session_data
~BinaryView.show_html_report
~BinaryView.show_markdown_report
~BinaryView.show_plain_text_report
~BinaryView.skip_and_return_value
~BinaryView.store_metadata
~BinaryView.undefine_auto_symbol
~BinaryView.undefine_data_var
~BinaryView.undefine_type
~BinaryView.undefine_user_data_var
~BinaryView.undefine_user_symbol
~BinaryView.undefine_user_type
~BinaryView.undo
~BinaryView.unregister_notification
~BinaryView.update_analysis
~BinaryView.update_analysis_and_wait
~BinaryView.write
.. rubric:: Attributes
.. autosummary::
~BinaryView.address_size
~BinaryView.allocated_ranges
~BinaryView.analysis_changed
~BinaryView.analysis_info
~BinaryView.analysis_progress
~BinaryView.arch
~BinaryView.available_view_types
~BinaryView.basic_blocks
~BinaryView.data_vars
~BinaryView.end
~BinaryView.endianness
~BinaryView.entry_function
~BinaryView.entry_point
~BinaryView.executable
~BinaryView.functions
~BinaryView.global_pointer_value
~BinaryView.has_database
~BinaryView.has_functions
~BinaryView.instructions
~BinaryView.linear_disassembly
~BinaryView.llil_basic_blocks
~BinaryView.llil_instructions
~BinaryView.long_name
~BinaryView.max_function_size_for_analysis
~BinaryView.mlil_basic_blocks
~BinaryView.mlil_instructions
~BinaryView.modified
~BinaryView.name
~BinaryView.next_address
~BinaryView.offset
~BinaryView.parameters_for_analysis
~BinaryView.parent_view
~BinaryView.platform
~BinaryView.registered_view_type
~BinaryView.relocatable
~BinaryView.saved
~BinaryView.sections
~BinaryView.segments
~BinaryView.session_data
~BinaryView.start
~BinaryView.strings
~BinaryView.symbols
~BinaryView.types
~BinaryView.view
~BinaryView.view_type

View File

@ -0,0 +1,39 @@
binaryninja.binaryninja.BinaryViewType
======================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BinaryViewType
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BinaryViewType.__init__
~BinaryViewType.create
~BinaryViewType.get_arch
~BinaryViewType.get_platform
~BinaryViewType.get_view_of_file
~BinaryViewType.is_valid_for_data
~BinaryViewType.open
~BinaryViewType.register_arch
~BinaryViewType.register_default_platform
~BinaryViewType.register_platform
.. rubric:: Attributes
.. autosummary::
~BinaryViewType.list
~BinaryViewType.long_name
~BinaryViewType.name

View File

@ -0,0 +1,42 @@
binaryninja.binaryninja.BinaryWriter
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BinaryWriter
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BinaryWriter.__init__
~BinaryWriter.seek
~BinaryWriter.seek_relative
~BinaryWriter.write
~BinaryWriter.write16
~BinaryWriter.write16be
~BinaryWriter.write16le
~BinaryWriter.write32
~BinaryWriter.write32be
~BinaryWriter.write32le
~BinaryWriter.write64
~BinaryWriter.write64be
~BinaryWriter.write64le
~BinaryWriter.write8
.. rubric:: Attributes
.. autosummary::
~BinaryWriter.endianness
~BinaryWriter.offset

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.BoolWithConfidence
==========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: BoolWithConfidence
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~BoolWithConfidence.__init__

View File

@ -0,0 +1,48 @@
binaryninja.binaryninja.CallingConvention
=========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: CallingConvention
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~CallingConvention.__init__
~CallingConvention.get_incoming_flag_value
~CallingConvention.get_incoming_reg_value
~CallingConvention.get_incoming_var_for_parameter_var
~CallingConvention.get_parameter_var_for_incoming_var
~CallingConvention.perform_get_incoming_flag_value
~CallingConvention.perform_get_incoming_reg_value
~CallingConvention.perform_get_incoming_var_for_parameter_var
~CallingConvention.perform_get_parameter_var_for_incoming_var
~CallingConvention.with_confidence
.. rubric:: Attributes
.. autosummary::
~CallingConvention.arg_regs_share_index
~CallingConvention.caller_saved_regs
~CallingConvention.float_arg_regs
~CallingConvention.float_return_reg
~CallingConvention.global_pointer_reg
~CallingConvention.high_int_return_reg
~CallingConvention.implicitly_defined_regs
~CallingConvention.int_arg_regs
~CallingConvention.int_return_reg
~CallingConvention.name
~CallingConvention.stack_adjusted_on_return
~CallingConvention.stack_reserved_for_arg_regs

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.ChoiceField
===================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ChoiceField
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ChoiceField.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.ConstantReference
=========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ConstantReference
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ConstantReference.__init__

View File

@ -0,0 +1,120 @@
binaryninja.binaryninja.CoreArchitecture
========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: CoreArchitecture
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~CoreArchitecture.__init__
~CoreArchitecture.always_branch
~CoreArchitecture.assemble
~CoreArchitecture.convert_to_nop
~CoreArchitecture.get_associated_arch_by_address
~CoreArchitecture.get_default_flag_condition_low_level_il
~CoreArchitecture.get_default_flag_write_low_level_il
~CoreArchitecture.get_flag_by_name
~CoreArchitecture.get_flag_condition_low_level_il
~CoreArchitecture.get_flag_index
~CoreArchitecture.get_flag_name
~CoreArchitecture.get_flag_role
~CoreArchitecture.get_flag_write_low_level_il
~CoreArchitecture.get_flag_write_type_by_name
~CoreArchitecture.get_flag_write_type_name
~CoreArchitecture.get_flags_required_for_flag_condition
~CoreArchitecture.get_instruction_info
~CoreArchitecture.get_instruction_low_level_il
~CoreArchitecture.get_instruction_low_level_il_instruction
~CoreArchitecture.get_instruction_text
~CoreArchitecture.get_intrinsic_index
~CoreArchitecture.get_intrinsic_name
~CoreArchitecture.get_low_level_il_from_bytes
~CoreArchitecture.get_modified_regs_on_write
~CoreArchitecture.get_reg_index
~CoreArchitecture.get_reg_name
~CoreArchitecture.get_reg_stack_for_reg
~CoreArchitecture.get_reg_stack_index
~CoreArchitecture.get_reg_stack_name
~CoreArchitecture.get_semantic_flag_class_by_name
~CoreArchitecture.get_semantic_flag_class_index
~CoreArchitecture.get_semantic_flag_class_name
~CoreArchitecture.get_semantic_flag_group_by_name
~CoreArchitecture.get_semantic_flag_group_index
~CoreArchitecture.get_semantic_flag_group_low_level_il
~CoreArchitecture.get_semantic_flag_group_name
~CoreArchitecture.get_view_type_constant
~CoreArchitecture.invert_branch
~CoreArchitecture.is_always_branch_patch_available
~CoreArchitecture.is_invert_branch_patch_available
~CoreArchitecture.is_never_branch_patch_available
~CoreArchitecture.is_skip_and_return_value_patch_available
~CoreArchitecture.is_skip_and_return_zero_patch_available
~CoreArchitecture.is_view_type_constant_defined
~CoreArchitecture.perform_always_branch
~CoreArchitecture.perform_assemble
~CoreArchitecture.perform_convert_to_nop
~CoreArchitecture.perform_get_associated_arch_by_address
~CoreArchitecture.perform_get_flag_condition_low_level_il
~CoreArchitecture.perform_get_flag_role
~CoreArchitecture.perform_get_flag_write_low_level_il
~CoreArchitecture.perform_get_flags_required_for_flag_condition
~CoreArchitecture.perform_get_instruction_info
~CoreArchitecture.perform_get_instruction_low_level_il
~CoreArchitecture.perform_get_instruction_text
~CoreArchitecture.perform_get_semantic_flag_group_low_level_il
~CoreArchitecture.perform_invert_branch
~CoreArchitecture.perform_is_always_branch_patch_available
~CoreArchitecture.perform_is_invert_branch_patch_available
~CoreArchitecture.perform_is_never_branch_patch_available
~CoreArchitecture.perform_is_skip_and_return_value_patch_available
~CoreArchitecture.perform_is_skip_and_return_zero_patch_available
~CoreArchitecture.perform_skip_and_return_value
~CoreArchitecture.register_calling_convention
~CoreArchitecture.set_view_type_constant
~CoreArchitecture.skip_and_return_value
.. rubric:: Attributes
.. autosummary::
~CoreArchitecture.address_size
~CoreArchitecture.calling_conventions
~CoreArchitecture.default_int_size
~CoreArchitecture.endianness
~CoreArchitecture.flag_conditions_for_semantic_flag_group
~CoreArchitecture.flag_roles
~CoreArchitecture.flag_write_types
~CoreArchitecture.flags
~CoreArchitecture.flags_required_for_flag_condition
~CoreArchitecture.flags_required_for_semantic_flag_group
~CoreArchitecture.flags_written_by_flag_write_type
~CoreArchitecture.full_width_regs
~CoreArchitecture.global_regs
~CoreArchitecture.instr_alignment
~CoreArchitecture.intrinsics
~CoreArchitecture.link_reg
~CoreArchitecture.list
~CoreArchitecture.max_instr_length
~CoreArchitecture.name
~CoreArchitecture.next_address
~CoreArchitecture.opcode_display_length
~CoreArchitecture.reg_stacks
~CoreArchitecture.regs
~CoreArchitecture.semantic_class_for_flag_write_type
~CoreArchitecture.semantic_flag_classes
~CoreArchitecture.semantic_flag_groups
~CoreArchitecture.stack_pointer
~CoreArchitecture.standalone_platform

View File

@ -0,0 +1,25 @@
binaryninja.binaryninja.CoreFileAccessor
========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: CoreFileAccessor
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~CoreFileAccessor.__init__
~CoreFileAccessor.get_length
~CoreFileAccessor.read
~CoreFileAccessor.write

View File

@ -0,0 +1,28 @@
binaryninja.binaryninja.DataBuffer
==================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: DataBuffer
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~DataBuffer.__init__
~DataBuffer.base64_decode
~DataBuffer.base64_encode
~DataBuffer.escape
~DataBuffer.unescape
~DataBuffer.zlib_compress
~DataBuffer.zlib_decompress

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.DataVariable
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: DataVariable
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~DataVariable.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.DirectoryNameField
==========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: DirectoryNameField
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~DirectoryNameField.__init__

View File

@ -0,0 +1,31 @@
binaryninja.binaryninja.DisassemblySettings
===========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: DisassemblySettings
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~DisassemblySettings.__init__
~DisassemblySettings.is_option_set
~DisassemblySettings.set_option
.. rubric:: Attributes
.. autosummary::
~DisassemblySettings.max_symbol_width
~DisassemblySettings.width

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.DisassemblyTextLine
===========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: DisassemblyTextLine
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~DisassemblyTextLine.__init__

View File

@ -0,0 +1,24 @@
binaryninja.binaryninja.DownloadInstance
========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: DownloadInstance
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~DownloadInstance.__init__
~DownloadInstance.perform_destroy_instance
~DownloadInstance.perform_request

View File

@ -0,0 +1,31 @@
binaryninja.binaryninja.DownloadProvider
========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: DownloadProvider
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~DownloadProvider.__init__
~DownloadProvider.create_instance
~DownloadProvider.register
.. rubric:: Attributes
.. autosummary::
~DownloadProvider.instance_class
~DownloadProvider.name

View File

@ -0,0 +1,31 @@
binaryninja.binaryninja.Enumeration
===================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: Enumeration
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~Enumeration.__init__
~Enumeration.append
~Enumeration.remove
~Enumeration.replace
.. rubric:: Attributes
.. autosummary::
~Enumeration.members

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.EnumerationMember
=========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: EnumerationMember
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~EnumerationMember.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.FileAccessor
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: FileAccessor
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~FileAccessor.__init__

View File

@ -0,0 +1,48 @@
binaryninja.binaryninja.FileMetadata
====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: FileMetadata
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~FileMetadata.__init__
~FileMetadata.begin_undo_actions
~FileMetadata.close
~FileMetadata.commit_undo_actions
~FileMetadata.create_database
~FileMetadata.get_view_of_type
~FileMetadata.navigate
~FileMetadata.open_existing_database
~FileMetadata.redo
~FileMetadata.save_auto_snapshot
~FileMetadata.set_default_session_data
~FileMetadata.undo
.. rubric:: Attributes
.. autosummary::
~FileMetadata.analysis_changed
~FileMetadata.filename
~FileMetadata.has_database
~FileMetadata.modified
~FileMetadata.navigation
~FileMetadata.offset
~FileMetadata.raw
~FileMetadata.saved
~FileMetadata.session_data
~FileMetadata.view

View File

@ -0,0 +1,137 @@
binaryninja.binaryninja.Function
================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: Function
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~Function.__init__
~Function.apply_auto_discovered_type
~Function.apply_imported_types
~Function.create_auto_stack_var
~Function.create_auto_var
~Function.create_graph
~Function.create_user_stack_var
~Function.create_user_var
~Function.delete_auto_stack_var
~Function.delete_auto_var
~Function.delete_user_stack_var
~Function.delete_user_var
~Function.get_basic_block_at
~Function.get_block_annotations
~Function.get_call_reg_stack_adjustment
~Function.get_call_reg_stack_adjustment_for_reg_stack
~Function.get_call_stack_adjustment
~Function.get_comment_at
~Function.get_constants_referenced_by
~Function.get_flags_read_by_lifted_il_instruction
~Function.get_flags_written_by_lifted_il_instruction
~Function.get_indirect_branches_at
~Function.get_instr_highlight
~Function.get_int_display_type
~Function.get_lifted_il_at
~Function.get_lifted_il_flag_definitions_for_use
~Function.get_lifted_il_flag_uses_for_definition
~Function.get_low_level_il_at
~Function.get_low_level_il_exits_at
~Function.get_parameter_at
~Function.get_parameter_at_low_level_il_instruction
~Function.get_reg_value_after
~Function.get_reg_value_at
~Function.get_reg_value_at_exit
~Function.get_regs_read_by
~Function.get_regs_written_by
~Function.get_stack_contents_after
~Function.get_stack_contents_at
~Function.get_stack_var_at_frame_offset
~Function.get_stack_vars_referenced_by
~Function.get_type_tokens
~Function.mark_recent_use
~Function.reanalyze
~Function.release_advanced_analysis_data
~Function.request_advanced_analysis_data
~Function.set_auto_call_reg_stack_adjustment
~Function.set_auto_call_reg_stack_adjustment_for_reg_stack
~Function.set_auto_call_stack_adjustment
~Function.set_auto_calling_convention
~Function.set_auto_can_return
~Function.set_auto_clobbered_regs
~Function.set_auto_has_variable_arguments
~Function.set_auto_indirect_branches
~Function.set_auto_instr_highlight
~Function.set_auto_parameter_vars
~Function.set_auto_reg_stack_adjustments
~Function.set_auto_return_regs
~Function.set_auto_return_type
~Function.set_auto_stack_adjustment
~Function.set_auto_type
~Function.set_call_reg_stack_adjustment
~Function.set_call_reg_stack_adjustment_for_reg_stack
~Function.set_call_stack_adjustment
~Function.set_comment
~Function.set_comment_at
~Function.set_default_session_data
~Function.set_int_display_type
~Function.set_user_indirect_branches
~Function.set_user_instr_highlight
~Function.set_user_type
.. rubric:: Attributes
.. autosummary::
~Function.analysis_performance_info
~Function.analysis_skip_override
~Function.analysis_skip_reason
~Function.analysis_skipped
~Function.arch
~Function.auto
~Function.basic_blocks
~Function.calling_convention
~Function.can_return
~Function.clobbered_regs
~Function.comment
~Function.comments
~Function.explicitly_defined_type
~Function.function_type
~Function.global_pointer_value
~Function.has_variable_arguments
~Function.indirect_branches
~Function.instructions
~Function.lifted_il
~Function.llil_basic_blocks
~Function.llil_instructions
~Function.low_level_il
~Function.medium_level_il
~Function.mlil_basic_blocks
~Function.mlil_instructions
~Function.name
~Function.needs_update
~Function.parameter_vars
~Function.platform
~Function.reg_stack_adjustments
~Function.return_regs
~Function.return_type
~Function.session_data
~Function.stack_adjustment
~Function.stack_layout
~Function.start
~Function.symbol
~Function.too_large
~Function.type_tokens
~Function.vars
~Function.view

View File

@ -0,0 +1,48 @@
binaryninja.binaryninja.FunctionGraph
=====================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: FunctionGraph
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~FunctionGraph.__init__
~FunctionGraph.abort
~FunctionGraph.get_blocks_in_region
~FunctionGraph.is_option_set
~FunctionGraph.layout
~FunctionGraph.layout_and_wait
~FunctionGraph.on_complete
~FunctionGraph.set_option
.. rubric:: Attributes
.. autosummary::
~FunctionGraph.blocks
~FunctionGraph.complete
~FunctionGraph.function
~FunctionGraph.has_blocks
~FunctionGraph.height
~FunctionGraph.horizontal_block_margin
~FunctionGraph.il_function
~FunctionGraph.is_il
~FunctionGraph.is_low_level_il
~FunctionGraph.is_medium_level_il
~FunctionGraph.settings
~FunctionGraph.type
~FunctionGraph.vertical_block_margin
~FunctionGraph.width

View File

@ -0,0 +1,37 @@
binaryninja.binaryninja.FunctionGraphBlock
==========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: FunctionGraphBlock
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~FunctionGraphBlock.__init__
.. rubric:: Attributes
.. autosummary::
~FunctionGraphBlock.arch
~FunctionGraphBlock.basic_block
~FunctionGraphBlock.end
~FunctionGraphBlock.height
~FunctionGraphBlock.lines
~FunctionGraphBlock.outgoing_edges
~FunctionGraphBlock.start
~FunctionGraphBlock.width
~FunctionGraphBlock.x
~FunctionGraphBlock.y

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.FunctionGraphEdge
=========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: FunctionGraphEdge
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~FunctionGraphEdge.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.FunctionParameter
=========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: FunctionParameter
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~FunctionParameter.__init__

View File

@ -0,0 +1,26 @@
binaryninja.binaryninja.FunctionRecognizer
==========================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: FunctionRecognizer
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~FunctionRecognizer.__init__
~FunctionRecognizer.recognize_low_level_il
~FunctionRecognizer.recognize_medium_level_il
~FunctionRecognizer.register_arch
~FunctionRecognizer.register_global

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.HighlightColor
======================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: HighlightColor
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~HighlightColor.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.ILFlag
==============================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ILFlag
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ILFlag.__init__

View File

@ -0,0 +1,22 @@
binaryninja.binaryninja.ILIntrinsic
===================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ILIntrinsic
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ILIntrinsic.__init__

View File

@ -0,0 +1,28 @@
binaryninja.binaryninja.ILRegister
==================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ILRegister
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ILRegister.__init__
.. rubric:: Attributes
.. autosummary::
~ILRegister.info

View File

@ -0,0 +1,28 @@
binaryninja.binaryninja.ILRegisterStack
=======================================
.. currentmodule:: binaryninja.binaryninja
.. autoclass:: ILRegisterStack
.. automethod:: __init__
.. rubric:: Methods
.. autosummary::
~ILRegisterStack.__init__
.. rubric:: Attributes
.. autosummary::
~ILRegisterStack.info

Some files were not shown because too many files have changed in this diff Show More