binaryninja/api-docs/_modules/binaryninja/binaryview.html
Giulio De Pasquale 52e9dc828b dindon
2018-12-13 18:39:52 +00:00

4377 lines
550 KiB
HTML

<!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.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"/>
<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.binaryview</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.binaryview</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">struct</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">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="p">(</span><span class="n">AnalysisState</span><span class="p">,</span> <span class="n">SymbolType</span><span class="p">,</span> <span class="n">InstructionTextTokenType</span><span class="p">,</span>
<span class="n">Endianness</span><span class="p">,</span> <span class="n">ModificationStatus</span><span class="p">,</span> <span class="n">StringType</span><span class="p">,</span> <span class="n">SegmentFlag</span><span class="p">,</span> <span class="n">SectionSemantics</span><span class="p">)</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">associateddatastore</span> <span class="c1"># required for _BinaryViewAssociatedDataStore</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">types</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">fileaccessor</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">basicblock</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">lineardisassembly</span>
<span class="kn">from</span> <span class="nn">binaryninja</span> <span class="k">import</span> <span class="n">metadata</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="BinaryDataNotification"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryDataNotification.html#binaryninja.binaryview.BinaryDataNotification">[docs]</a><span class="k">class</span> <span class="nc">BinaryDataNotification</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="BinaryDataNotification.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryDataNotification.html#binaryninja.binaryview.BinaryDataNotification.__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="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.data_written"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.data_written">[docs]</a> <span class="k">def</span> <span class="nf">data_written</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="n">length</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.data_inserted"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.data_inserted">[docs]</a> <span class="k">def</span> <span class="nf">data_inserted</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="n">length</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.data_removed"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.data_removed">[docs]</a> <span class="k">def</span> <span class="nf">data_removed</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="n">length</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.function_added"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.function_added">[docs]</a> <span class="k">def</span> <span class="nf">function_added</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">func</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.function_removed"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.function_removed">[docs]</a> <span class="k">def</span> <span class="nf">function_removed</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">func</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.function_updated"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.function_updated">[docs]</a> <span class="k">def</span> <span class="nf">function_updated</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">func</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.function_update_requested"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.function_update_requested">[docs]</a> <span class="k">def</span> <span class="nf">function_update_requested</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">func</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.data_var_added"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.data_var_added">[docs]</a> <span class="k">def</span> <span class="nf">data_var_added</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">var</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.data_var_removed"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.data_var_removed">[docs]</a> <span class="k">def</span> <span class="nf">data_var_removed</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">var</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.data_var_updated"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.data_var_updated">[docs]</a> <span class="k">def</span> <span class="nf">data_var_updated</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">var</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.string_found"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.string_found">[docs]</a> <span class="k">def</span> <span class="nf">string_found</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">string_type</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">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.string_removed"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.string_removed">[docs]</a> <span class="k">def</span> <span class="nf">string_removed</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">string_type</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">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.type_defined"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.type_defined">[docs]</a> <span class="k">def</span> <span class="nf">type_defined</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">name</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
<span class="k">pass</span></div>
<div class="viewcode-block" id="BinaryDataNotification.type_undefined"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryDataNotification.type_undefined">[docs]</a> <span class="k">def</span> <span class="nf">type_undefined</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">name</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
<span class="k">pass</span></div></div>
<div class="viewcode-block" id="StringReference"><a class="viewcode-back" href="../../binaryninja.binaryview.StringReference.html#binaryninja.binaryview.StringReference">[docs]</a><span class="k">class</span> <span class="nc">StringReference</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="StringReference.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.StringReference.html#binaryninja.binaryview.StringReference.__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">bv</span><span class="p">,</span> <span class="n">string_type</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">length</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">string_type</span>
<span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span>
<span class="bp">self</span><span class="o">.</span><span class="n">length</span> <span class="o">=</span> <span class="n">length</span>
<span class="bp">self</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">bv</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">return</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">pyNativeStr</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">read</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">length</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">%s</span><span class="s2">: </span><span class="si">%#x</span><span class="s2">, len </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">type</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">length</span><span class="p">)</span></div>
<span class="n">_pending_analysis_completion_events</span> <span class="o">=</span> <span class="p">{}</span>
<div class="viewcode-block" id="AnalysisCompletionEvent"><a class="viewcode-back" href="../../binaryninja.binaryview.AnalysisCompletionEvent.html#binaryninja.binaryview.AnalysisCompletionEvent">[docs]</a><span class="k">class</span> <span class="nc">AnalysisCompletionEvent</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The ``AnalysisCompletionEvent`` object provides an asynchronous mechanism for receiving</span>
<span class="sd"> callbacks when analysis is complete. The callback runs once. A completion event must be added</span>
<span class="sd"> for each new analysis in order to be notified of each analysis completion. The</span>
<span class="sd"> AnalysisCompletionEvent class takes responcibility for keeping track of the object&#39;s lifetime.</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; def on_complete(self):</span>
<span class="sd"> ... print(&quot;Analysis Complete&quot;, self.view)</span>
<span class="sd"> ...</span>
<span class="sd"> &gt;&gt;&gt; evt = AnalysisCompletionEvent(bv, on_complete)</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="AnalysisCompletionEvent.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.AnalysisCompletionEvent.html#binaryninja.binaryview.AnalysisCompletionEvent.__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">callback</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">callback</span> <span class="o">=</span> <span class="n">callback</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="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="bp">self</span><span class="o">.</span><span class="n">_notify</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">BNAddAnalysisCompletionEvent</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">handle</span><span class="p">,</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="p">)</span>
<span class="k">global</span> <span class="n">_pending_analysis_completion_events</span>
<span class="n">_pending_analysis_completion_events</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)]</span> <span class="o">=</span> <span class="bp">self</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">global</span> <span class="n">_pending_analysis_completion_events</span>
<span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="ow">in</span> <span class="n">_pending_analysis_completion_events</span><span class="p">:</span>
<span class="k">del</span> <span class="n">_pending_analysis_completion_events</span><span class="p">[</span><span class="nb">id</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">BNFreeAnalysisCompletionEvent</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">_notify</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">global</span> <span class="n">_pending_analysis_completion_events</span>
<span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="ow">in</span> <span class="n">_pending_analysis_completion_events</span><span class="p">:</span>
<span class="k">del</span> <span class="n">_pending_analysis_completion_events</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="bp">self</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">callback</span><span class="p">(</span><span class="bp">self</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">_empty_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<div class="viewcode-block" id="AnalysisCompletionEvent.cancel"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.AnalysisCompletionEvent.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="sd">&quot;&quot;&quot;</span>
<span class="sd"> .. warning: This method should only be used when the system is being</span>
<span class="sd"> shut down and no further analysis should be done afterward.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">callback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_empty_callback</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNCancelAnalysisCompletionEvent</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">global</span> <span class="n">_pending_analysis_completion_events</span>
<span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="ow">in</span> <span class="n">_pending_analysis_completion_events</span><span class="p">:</span>
<span class="k">del</span> <span class="n">_pending_analysis_completion_events</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)]</span></div></div>
<div class="viewcode-block" id="ActiveAnalysisInfo"><a class="viewcode-back" href="../../binaryninja.binaryview.ActiveAnalysisInfo.html#binaryninja.binaryview.ActiveAnalysisInfo">[docs]</a><span class="k">class</span> <span class="nc">ActiveAnalysisInfo</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="ActiveAnalysisInfo.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.ActiveAnalysisInfo.html#binaryninja.binaryview.ActiveAnalysisInfo.__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">analysis_time</span><span class="p">,</span> <span class="n">update_count</span><span class="p">,</span> <span class="n">submit_count</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">analysis_time</span> <span class="o">=</span> <span class="n">analysis_time</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_count</span> <span class="o">=</span> <span class="n">update_count</span>
<span class="bp">self</span><span class="o">.</span><span class="n">submit_count</span> <span class="o">=</span> <span class="n">submit_count</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;ActiveAnalysisInfo </span><span class="si">%s</span><span class="s2">, analysis_time </span><span class="si">%d</span><span class="s2">, update_count </span><span class="si">%d</span><span class="s2">, submit_count </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">func</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">analysis_time</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">update_count</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">submit_count</span><span class="p">)</span></div>
<div class="viewcode-block" id="AnalysisInfo"><a class="viewcode-back" href="../../binaryninja.binaryview.AnalysisInfo.html#binaryninja.binaryview.AnalysisInfo">[docs]</a><span class="k">class</span> <span class="nc">AnalysisInfo</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="AnalysisInfo.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.AnalysisInfo.html#binaryninja.binaryview.AnalysisInfo.__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">state</span><span class="p">,</span> <span class="n">analysis_time</span><span class="p">,</span> <span class="n">active_info</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">AnalysisState</span><span class="p">(</span><span class="n">state</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">analysis_time</span> <span class="o">=</span> <span class="n">analysis_time</span>
<span class="bp">self</span><span class="o">.</span><span class="n">active_info</span> <span class="o">=</span> <span class="n">active_info</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;AnalysisInfo </span><span class="si">%s</span><span class="s2">, analysis_time </span><span class="si">%d</span><span class="s2">, active_info </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">state</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">analysis_time</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">active_info</span><span class="p">)</span></div>
<div class="viewcode-block" id="AnalysisProgress"><a class="viewcode-back" href="../../binaryninja.binaryview.AnalysisProgress.html#binaryninja.binaryview.AnalysisProgress">[docs]</a><span class="k">class</span> <span class="nc">AnalysisProgress</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="AnalysisProgress.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.AnalysisProgress.html#binaryninja.binaryview.AnalysisProgress.__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">state</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">total</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">state</span>
<span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">=</span> <span class="n">count</span>
<span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">total</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">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">==</span> <span class="n">AnalysisState</span><span class="o">.</span><span class="n">DisassembleState</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;Disassembling (</span><span class="si">%d</span><span class="s2">/</span><span class="si">%d</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">count</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">==</span> <span class="n">AnalysisState</span><span class="o">.</span><span class="n">AnalyzeState</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;Analyzing (</span><span class="si">%d</span><span class="s2">/</span><span class="si">%d</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">count</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">==</span> <span class="n">AnalysisState</span><span class="o">.</span><span class="n">ExtendedAnalyzeState</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;Extended Analysis&quot;</span>
<span class="k">return</span> <span class="s2">&quot;Idle&quot;</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;progress: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
<div class="viewcode-block" id="DataVariable"><a class="viewcode-back" href="../../binaryninja.binaryview.DataVariable.html#binaryninja.binaryview.DataVariable">[docs]</a><span class="k">class</span> <span class="nc">DataVariable</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="DataVariable.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.DataVariable.html#binaryninja.binaryview.DataVariable.__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">addr</span><span class="p">,</span> <span class="n">var_type</span><span class="p">,</span> <span class="n">auto_discovered</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">addr</span>
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">var_type</span>
<span class="bp">self</span><span class="o">.</span><span class="n">auto_discovered</span> <span class="o">=</span> <span class="n">auto_discovered</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;var 0x</span><span class="si">%x</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">address</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="p">))</span></div>
<div class="viewcode-block" id="BinaryDataNotificationCallbacks"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryDataNotificationCallbacks.html#binaryninja.binaryview.BinaryDataNotificationCallbacks">[docs]</a><span class="k">class</span> <span class="nc">BinaryDataNotificationCallbacks</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="BinaryDataNotificationCallbacks.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryDataNotificationCallbacks.html#binaryninja.binaryview.BinaryDataNotificationCallbacks.__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">notify</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">notify</span> <span class="o">=</span> <span class="n">notify</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">BNBinaryDataNotification</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">dataWritten</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">dataWritten</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">_data_written</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">dataInserted</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">dataInserted</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">_data_inserted</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">dataRemoved</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">dataRemoved</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">_data_removed</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">functionAdded</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">functionAdded</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">_function_added</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">functionRemoved</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">functionRemoved</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">_function_removed</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">functionUpdated</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">functionUpdated</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">_function_updated</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">functionUpdateRequested</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">functionUpdateRequested</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">_function_update_requested</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">dataVariableAdded</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">dataVariableAdded</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">_data_var_added</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">dataVariableRemoved</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">dataVariableRemoved</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">_data_var_removed</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">dataVariableUpdated</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">dataVariableUpdated</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">_data_var_updated</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">stringFound</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">stringFound</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">_string_found</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">stringRemoved</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">stringRemoved</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">_string_removed</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">typeDefined</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">typeDefined</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">_type_defined</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">typeUndefined</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">typeUndefined</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">_type_undefined</span><span class="p">)</span></div>
<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">core</span><span class="o">.</span><span class="n">BNRegisterDataNotification</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">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">core</span><span class="o">.</span><span class="n">BNUnregisterDataNotification</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">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">_data_written</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="n">length</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</span><span class="o">.</span><span class="n">data_written</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">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">OSError</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">_data_inserted</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="n">length</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</span><span class="o">.</span><span class="n">data_inserted</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">offset</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">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">_data_removed</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="n">length</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</span><span class="o">.</span><span class="n">data_removed</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">offset</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">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">_function_added</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">func</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</span><span class="o">.</span><span class="n">function_added</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">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">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">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">_function_removed</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">func</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</span><span class="o">.</span><span class="n">function_removed</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">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">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">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">_function_updated</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">func</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</span><span class="o">.</span><span class="n">function_updated</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">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">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">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">_function_update_requested</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">func</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</span><span class="o">.</span><span class="n">function_update_requested</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">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">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">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">_data_var_added</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">var</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">address</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">address</span>
<span class="n">var_type</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">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">platform</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">platform</span><span class="p">,</span> <span class="n">confidence</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">typeConfidence</span><span class="p">)</span>
<span class="n">auto_discovered</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">autoDiscovered</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify</span><span class="o">.</span><span class="n">data_var_added</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">DataVariable</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">var_type</span><span class="p">,</span> <span class="n">auto_discovered</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">_data_var_removed</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">var</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">address</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">address</span>
<span class="n">var_type</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">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">platform</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">platform</span><span class="p">,</span> <span class="n">confidence</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">typeConfidence</span><span class="p">)</span>
<span class="n">auto_discovered</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">autoDiscovered</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify</span><span class="o">.</span><span class="n">data_var_removed</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">DataVariable</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">var_type</span><span class="p">,</span> <span class="n">auto_discovered</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">_data_var_updated</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">var</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">address</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">address</span>
<span class="n">var_type</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">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">platform</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">platform</span><span class="p">,</span> <span class="n">confidence</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">typeConfidence</span><span class="p">)</span>
<span class="n">auto_discovered</span> <span class="o">=</span> <span class="n">var</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">autoDiscovered</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify</span><span class="o">.</span><span class="n">data_var_updated</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">DataVariable</span><span class="p">(</span><span class="n">address</span><span class="p">,</span> <span class="n">var_type</span><span class="p">,</span> <span class="n">auto_discovered</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">_string_found</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">string_type</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="bp">self</span><span class="o">.</span><span class="n">notify</span><span class="o">.</span><span class="n">string_found</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">StringType</span><span class="p">(</span><span class="n">string_type</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">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">_string_removed</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">string_type</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="bp">self</span><span class="o">.</span><span class="n">notify</span><span class="o">.</span><span class="n">string_removed</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">StringType</span><span class="p">(</span><span class="n">string_type</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">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">_type_defined</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">name</span><span class="p">,</span> <span class="n">type_obj</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">qualified_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">name</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify</span><span class="o">.</span><span class="n">type_defined</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">qualified_name</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">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">type_obj</span><span class="p">),</span> <span class="n">platform</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">platform</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">_type_undefined</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">name</span><span class="p">,</span> <span class="n">type_obj</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">qualified_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">name</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notify</span><span class="o">.</span><span class="n">type_undefined</span><span class="p">(</span><span class="n">view</span><span class="p">,</span> <span class="n">qualified_name</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">core</span><span class="o">.</span><span class="n">BNNewTypeReference</span><span class="p">(</span><span class="n">type_obj</span><span class="p">),</span> <span class="n">platform</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">platform</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>
<span class="k">class</span> <span class="nc">_BinaryViewTypeMetaclass</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 BinaryView 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">BNGetBinaryViewTypes</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">BinaryViewType</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">BNFreeBinaryViewTypeList</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">BNGetBinaryViewTypes</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">BinaryViewType</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">BNFreeBinaryViewTypeList</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">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">value</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">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 view type&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">BinaryViewType</span><span class="p">(</span><span class="n">view_type</span><span class="p">)</span>
<div class="viewcode-block" id="BinaryViewType"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryViewType.html#binaryninja.binaryview.BinaryViewType">[docs]</a><span class="k">class</span> <span class="nc">BinaryViewType</span><span class="p">(</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">_BinaryViewTypeMetaclass</span><span class="p">,</span> <span class="nb">object</span><span class="p">)):</span>
<div class="viewcode-block" id="BinaryViewType.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryViewType.html#binaryninja.binaryview.BinaryViewType.__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">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">BNBinaryViewType</span><span class="p">)</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">BinaryViewType</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">BinaryViewType</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">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;BinaryView name (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBinaryViewTypeName</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_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;BinaryView long name (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBinaryViewTypeLongName</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;view type: &#39;</span><span class="si">%s</span><span class="s2">&#39;&gt;&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<div class="viewcode-block" id="BinaryViewType.create"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.create">[docs]</a> <span class="k">def</span> <span class="nf">create</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">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="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">data</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">BinaryView</span><span class="p">(</span><span class="n">file_metadata</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">file</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="BinaryViewType.open"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">file_metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">BinaryView</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">file_metadata</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="kc">None</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="BinaryViewType.get_view_of_file"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.get_view_of_file">[docs]</a> <span class="k">def</span> <span class="nf">get_view_of_file</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">update_analysis</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_view_of_file`` returns the first available, non-Raw `BinaryView` available.</span>
<span class="sd"> :param str filename: Path to filename or bndb</span>
<span class="sd"> :param bool update_analysis: defaults to True. Pass False to not run update_analysis_and_wait.</span>
<span class="sd"> :return: returns a BinaryView object for the given filename.</span>
<span class="sd"> :rtype: BinaryView or None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">sqlite</span> <span class="o">=</span> <span class="s2">&quot;SQLite format 3&quot;</span>
<span class="k">if</span> <span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;.bndb&quot;</span><span class="p">):</span>
<span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">f</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">sqlite</span><span class="p">))</span> <span class="o">!=</span> <span class="n">sqlite</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">f</span><span class="o">.</span><span class="n">close</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">filemetadata</span><span class="o">.</span><span class="n">FileMetadata</span><span class="p">()</span><span class="o">.</span><span class="n">open_existing_database</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">BinaryView</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">filename</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">for</span> <span class="n">available</span> <span class="ow">in</span> <span class="n">view</span><span class="o">.</span><span class="n">available_view_types</span><span class="p">:</span>
<span class="k">if</span> <span class="n">available</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="s2">&quot;Raw&quot;</span><span class="p">:</span>
<span class="k">if</span> <span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">&quot;.bndb&quot;</span><span class="p">):</span>
<span class="n">bv</span> <span class="o">=</span> <span class="n">view</span><span class="o">.</span><span class="n">get_view_of_type</span><span class="p">(</span><span class="n">available</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="n">bv</span> <span class="o">=</span> <span class="n">cls</span><span class="p">[</span><span class="n">available</span><span class="o">.</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
<span class="k">if</span> <span class="n">bv</span> <span class="ow">is</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;Unknown Architecture/Architecture Not Found (check plugins folder)&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">update_analysis</span><span class="p">:</span>
<span class="n">bv</span><span class="o">.</span><span class="n">update_analysis_and_wait</span><span class="p">()</span>
<span class="k">return</span> <span class="n">bv</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="BinaryViewType.is_valid_for_data"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.is_valid_for_data">[docs]</a> <span class="k">def</span> <span class="nf">is_valid_for_data</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">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsBinaryViewTypeValidForData</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="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryViewType.register_arch"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.register_arch">[docs]</a> <span class="k">def</span> <span class="nf">register_arch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ident</span><span class="p">,</span> <span class="n">endian</span><span class="p">,</span> <span class="n">arch</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterArchitectureForViewType</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">ident</span><span class="p">,</span> <span class="n">endian</span><span class="p">,</span> <span class="n">arch</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryViewType.get_arch"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.get_arch">[docs]</a> <span class="k">def</span> <span class="nf">get_arch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ident</span><span class="p">,</span> <span class="n">endian</span><span class="p">):</span>
<span class="n">arch</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetArchitectureForViewType</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">ident</span><span class="p">,</span> <span class="n">endian</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="k">return</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></div>
<div class="viewcode-block" id="BinaryViewType.register_platform"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.register_platform">[docs]</a> <span class="k">def</span> <span class="nf">register_platform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ident</span><span class="p">,</span> <span class="n">arch</span><span class="p">,</span> <span class="n">plat</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterPlatformForViewType</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">ident</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">plat</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryViewType.register_default_platform"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.register_default_platform">[docs]</a> <span class="k">def</span> <span class="nf">register_default_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">plat</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRegisterDefaultPlatformForViewType</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">plat</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryViewType.get_platform"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryViewType.get_platform">[docs]</a> <span class="k">def</span> <span class="nf">get_platform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ident</span><span class="p">,</span> <span class="n">arch</span><span class="p">):</span>
<span class="n">plat</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetPlatformForViewType</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">ident</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="n">plat</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">platform</span><span class="o">.</span><span class="n">Platform</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">plat</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="Segment"><a class="viewcode-back" href="../../binaryninja.binaryview.Segment.html#binaryninja.binaryview.Segment">[docs]</a><span class="k">class</span> <span class="nc">Segment</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="Segment.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.Segment.html#binaryninja.binaryview.Segment.__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">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">data_offset</span><span class="p">,</span> <span class="n">data_length</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="n">auto_defined</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span>
<span class="bp">self</span><span class="o">.</span><span class="n">length</span> <span class="o">=</span> <span class="n">length</span>
<span class="bp">self</span><span class="o">.</span><span class="n">data_offset</span> <span class="o">=</span> <span class="n">data_offset</span>
<span class="bp">self</span><span class="o">.</span><span class="n">data_length</span> <span class="o">=</span> <span class="n">data_length</span>
<span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span>
<span class="bp">self</span><span class="o">.</span><span class="n">auto_defined</span> <span class="o">=</span> <span class="n">auto_defined</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">executable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">SegmentFlag</span><span class="o">.</span><span class="n">SegmentExecutable</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">writable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">SegmentFlag</span><span class="o">.</span><span class="n">SegmentWritable</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">readable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">SegmentFlag</span><span class="o">.</span><span class="n">SegmentReadable</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">length</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="bp">self</span><span class="o">.</span><span class="n">length</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;segment: </span><span class="si">%#x</span><span class="s2">-</span><span class="si">%#x</span><span class="s2">, </span><span class="si">%s%s%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">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="s2">&quot;r&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">readable</span> <span class="k">else</span> <span class="s2">&quot;-&quot;</span><span class="p">,</span>
<span class="s2">&quot;w&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">writable</span> <span class="k">else</span> <span class="s2">&quot;-&quot;</span><span class="p">,</span>
<span class="s2">&quot;x&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">executable</span> <span class="k">else</span> <span class="s2">&quot;-&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="Section"><a class="viewcode-back" href="../../binaryninja.binaryview.Section.html#binaryninja.binaryview.Section">[docs]</a><span class="k">class</span> <span class="nc">Section</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="Section.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.Section.html#binaryninja.binaryview.Section.__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">section_type</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">linked_section</span><span class="p">,</span> <span class="n">info_section</span><span class="p">,</span> <span class="n">info_data</span><span class="p">,</span> <span class="n">align</span><span class="p">,</span> <span class="n">entry_size</span><span class="p">,</span> <span class="n">semantics</span><span class="p">,</span> <span class="n">auto_defined</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">type</span> <span class="o">=</span> <span class="n">section_type</span>
<span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">=</span> <span class="n">start</span>
<span class="bp">self</span><span class="o">.</span><span class="n">length</span> <span class="o">=</span> <span class="n">length</span>
<span class="bp">self</span><span class="o">.</span><span class="n">linked_section</span> <span class="o">=</span> <span class="n">linked_section</span>
<span class="bp">self</span><span class="o">.</span><span class="n">info_section</span> <span class="o">=</span> <span class="n">info_section</span>
<span class="bp">self</span><span class="o">.</span><span class="n">info_data</span> <span class="o">=</span> <span class="n">info_data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">align</span> <span class="o">=</span> <span class="n">align</span>
<span class="bp">self</span><span class="o">.</span><span class="n">entry_size</span> <span class="o">=</span> <span class="n">entry_size</span>
<span class="bp">self</span><span class="o">.</span><span class="n">semantics</span> <span class="o">=</span> <span class="n">SectionSemantics</span><span class="p">(</span><span class="n">semantics</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">auto_defined</span> <span class="o">=</span> <span class="n">auto_defined</span></div>
<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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">length</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="bp">self</span><span class="o">.</span><span class="n">length</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;section </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="bp">self</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></div>
<div class="viewcode-block" id="AddressRange"><a class="viewcode-back" href="../../binaryninja.binaryview.AddressRange.html#binaryninja.binaryview.AddressRange">[docs]</a><span class="k">class</span> <span class="nc">AddressRange</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="AddressRange.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.AddressRange.html#binaryninja.binaryview.AddressRange.__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">start</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">start</span> <span class="o">=</span> <span class="n">start</span>
<span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">=</span> <span class="n">end</span></div>
<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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</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="bp">self</span><span class="o">.</span><span class="n">end</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</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">%#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></div>
<span class="k">class</span> <span class="nc">_BinaryViewAssociatedDataStore</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="BinaryView"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryView.html#binaryninja.binaryview.BinaryView">[docs]</a><span class="k">class</span> <span class="nc">BinaryView</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 BinaryView`` implements a view on binary data, and presents a queryable interface of a binary file. One key</span>
<span class="sd"> job of BinaryView is file format parsing which allows Binary Ninja to read, write, insert, remove portions</span>
<span class="sd"> of the file given a virtual address. For the purposes of this documentation we define a virtual address as the</span>
<span class="sd"> memory address that the various pieces of the physical file will be loaded at.</span>
<span class="sd"> A binary file does not have to have just one BinaryView, thus much of the interface to manipulate disassembly exists</span>
<span class="sd"> within or is accessed through a BinaryView. All files are guaranteed to have at least the ``Raw`` BinaryView. The</span>
<span class="sd"> ``Raw`` BinaryView is simply a hex editor, but is helpful for manipulating binary files via their absolute addresses.</span>
<span class="sd"> BinaryViews are plugins and thus registered with Binary Ninja at startup, and thus should **never** be instantiated</span>
<span class="sd"> directly as this is already done. The list of available BinaryViews can be seen in the BinaryViewType class which</span>
<span class="sd"> provides an iterator and map of the various installed BinaryViews::</span>
<span class="sd"> &gt;&gt;&gt; list(BinaryViewType)</span>
<span class="sd"> [&lt;view type: &#39;Raw&#39;&gt;, &lt;view type: &#39;ELF&#39;&gt;, &lt;view type: &#39;Mach-O&#39;&gt;, &lt;view type: &#39;PE&#39;&gt;]</span>
<span class="sd"> &gt;&gt;&gt; BinaryViewType[&#39;ELF&#39;]</span>
<span class="sd"> &lt;view type: &#39;ELF&#39;&gt;</span>
<span class="sd"> To open a file with a given BinaryView the following code can be used::</span>
<span class="sd"> &gt;&gt;&gt; bv = BinaryViewType[&#39;Mach-O&#39;].open(&quot;/bin/ls&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv</span>
<span class="sd"> &lt;BinaryView: &#39;/bin/ls&#39;, start 0x100000000, len 0xa000&gt;</span>
<span class="sd"> `By convention in the rest of this document we will use bv to mean an open BinaryView of an executable file.`</span>
<span class="sd"> When a BinaryView is open on an executable view, analysis does not automatically run, this can be done by running</span>
<span class="sd"> the ``update_analysis_and_wait()`` method which disassembles the executable and returns when all disassembly is</span>
<span class="sd"> finished::</span>
<span class="sd"> &gt;&gt;&gt; bv.update_analysis_and_wait()</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> Since BinaryNinja&#39;s analysis is multi-threaded (depending on version) this can also be done in the background by</span>
<span class="sd"> using the ``update_analysis()`` method instead.</span>
<span class="sd"> By standard python convention methods which start with &#39;_&#39; should be considered private and should not be called</span>
<span class="sd"> externally. Additionanlly, methods which begin with ``perform_`` should not be called either and are</span>
<span class="sd"> used explicitly for subclassing the BinaryView.</span>
<span class="sd"> .. note:: An important note on the ``*_user_*()`` methods. Binary Ninja makes a distinction between edits \</span>
<span class="sd"> performed by the user and actions performed by auto analysis. Auto analysis actions that can quickly be recalculated \</span>
<span class="sd"> are not saved to the database. Auto analysis actions that take a long time and all user edits are stored in the \</span>
<span class="sd"> database (e.g. ``remove_user_function()`` rather than ``remove_function()``). Thus use ``_user_`` methods if saving \</span>
<span class="sd"> to the database is desired.</span>
<span class="sd"> &quot;&quot;&quot;</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">_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>
<span class="n">registered_view_type</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">next_address</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">_associated_data</span> <span class="o">=</span> <span class="p">{}</span>
<div class="viewcode-block" id="BinaryView.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryView.html#binaryninja.binaryview.BinaryView.__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">file_metadata</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">parent_view</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">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">BNBinaryView</span><span class="p">)</span>
<span class="k">if</span> <span class="n">file_metadata</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">file</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">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">file</span> <span class="o">=</span> <span class="n">file_metadata</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span> <span class="ow">is</span> <span class="n">BinaryView</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">file_metadata</span> <span class="ow">is</span> <span class="kc">None</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="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">BNCreateBinaryDataView</span><span class="p">(</span><span class="n">file_metadata</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">file</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">BNNewFileReference</span><span class="p">(</span><span class="n">file_metadata</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">binaryninja</span><span class="o">.</span><span class="n">_init_plugins</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;view type not registered&quot;</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">BNCustomBinaryView</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">init</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">init</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">_init</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>
<span class="bp">self</span><span class="o">.</span><span class="n">_cb</span><span class="o">.</span><span class="n">insert</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">insert</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">_insert</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">remove</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">remove</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">_remove</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">getModification</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">getModification</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_modification</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">isValidOffset</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">isValidOffset</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">_is_valid_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">isOffsetReadable</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">isOffsetReadable</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">_is_offset_readable</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">isOffsetWritable</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">isOffsetWritable</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">_is_offset_writable</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">isOffsetExecutable</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">isOffsetExecutable</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">_is_offset_executable</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">getNextValidOffset</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">getNextValidOffset</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_next_valid_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">getStart</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">getStart</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_start</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">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">getEntryPoint</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">getEntryPoint</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_entry_point</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">isExecutable</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">isExecutable</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">_is_executable</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">getDefaultEndianness</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">getDefaultEndianness</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_default_endianness</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">isRelocatable</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">isRelocatable</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">_is_relocatable</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">getAddressSize</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">getAddressSize</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_address_size</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">save</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">save</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">_save</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">file</span> <span class="o">=</span> <span class="n">file_metadata</span>
<span class="k">if</span> <span class="n">parent_view</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">parent_view</span> <span class="o">=</span> <span class="n">parent_view</span><span class="o">.</span><span class="n">handle</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">BNCreateCustomBinaryView</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="n">file_metadata</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">parent_view</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">notifications</span> <span class="o">=</span> <span class="p">{}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">next_address</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># Do NOT try to access view before init() is called, use placeholder</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">BinaryView</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">BinaryView</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>
<div class="viewcode-block" id="BinaryView.register"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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;view &#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">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="n">cls</span><span class="o">.</span><span class="n">_registered_cb</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCustomBinaryViewType</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">context</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">cls</span><span class="o">.</span><span class="n">_registered_cb</span><span class="o">.</span><span class="n">create</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">_registered_cb</span><span class="o">.</span><span class="n">create</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">_create</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">isValidForData</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">_registered_cb</span><span class="o">.</span><span class="n">isValidForData</span><span class="o">.</span><span class="n">__class__</span><span class="p">(</span><span class="n">cls</span><span class="o">.</span><span class="n">_is_valid_for_data</span><span class="p">)</span>
<span class="n">cls</span><span class="o">.</span><span class="n">registered_view_type</span> <span class="o">=</span> <span class="n">BinaryViewType</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNRegisterBinaryViewType</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">_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">_create</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="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">data</span><span class="p">))</span>
<span class="n">view</span> <span class="o">=</span> <span class="n">cls</span><span class="p">(</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="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">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">BNNewViewReference</span><span class="p">(</span><span class="n">view</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>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">_is_valid_for_data</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="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="n">cls</span><span class="o">.</span><span class="n">is_valid_for_data</span><span class="p">(</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">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="kc">False</span>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="BinaryView.open"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.open">[docs]</a> <span class="k">def</span> <span class="nf">open</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">src</span><span class="p">,</span> <span class="n">file_metadata</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="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">fileaccessor</span><span class="o">.</span><span class="n">FileAccessor</span><span class="p">):</span>
<span class="k">if</span> <span class="n">file_metadata</span> <span class="ow">is</span> <span class="kc">None</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">view</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNCreateBinaryDataViewFromFile</span><span class="p">(</span><span class="n">file_metadata</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">src</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="k">if</span> <span class="n">file_metadata</span> <span class="ow">is</span> <span class="kc">None</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="nb">str</span><span class="p">(</span><span class="n">src</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">BNCreateBinaryDataViewFromFilename</span><span class="p">(</span><span class="n">file_metadata</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">src</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="n">result</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">view</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<span class="nd">@classmethod</span>
<div class="viewcode-block" id="BinaryView.new"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.new">[docs]</a> <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">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">file_metadata</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="k">if</span> <span class="n">file_metadata</span> <span class="ow">is</span> <span class="kc">None</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="k">if</span> <span class="n">data</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">BNCreateBinaryDataView</span><span class="p">(</span><span class="n">file_metadata</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">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">data</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">BNCreateBinaryDataViewFromBuffer</span><span class="p">(</span><span class="n">file_metadata</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">buf</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="n">result</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">view</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<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">view</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">view</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="BinaryView.set_default_session_data"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``set_default_session_data`` saves a variable to the BinaryView.</span>
<span class="sd"> :param name: name of the variable to be saved</span>
<span class="sd"> :param value: value of the variable to be saved</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; BinaryView.set_default_session_data(&quot;variable_name&quot;, &quot;value&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.session_data.variable_name</span>
<span class="sd"> &#39;value&#39;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">_BinaryViewAssociatedDataStore</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">basic_blocks</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A generator of all BasicBlock objects in the BinaryView&quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">:</span>
<span class="k">for</span> <span class="n">block</span> <span class="ow">in</span> <span class="n">func</span><span class="o">.</span><span class="n">basic_blocks</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">block</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">llil_basic_blocks</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A generator of all LowLevelILBasicBlock objects in the BinaryView&quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">:</span>
<span class="k">for</span> <span class="n">il_block</span> <span class="ow">in</span> <span class="n">func</span><span class="o">.</span><span class="n">low_level_il</span><span class="o">.</span><span class="n">basic_blocks</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">il_block</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">mlil_basic_blocks</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A generator of all MediumLevelILBasicBlock objects in the BinaryView&quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">func</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">:</span>
<span class="k">for</span> <span class="n">il_block</span> <span class="ow">in</span> <span class="n">func</span><span class="o">.</span><span class="n">medium_level_il</span><span class="o">.</span><span class="n">basic_blocks</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">il_block</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">instructions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A generator of instruction tokens and their start addresses&quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">block</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">basic_blocks</span><span class="p">:</span>
<span class="n">start</span> <span class="o">=</span> <span class="n">block</span><span class="o">.</span><span class="n">start</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">block</span><span class="p">:</span>
<span class="k">yield</span> <span class="p">(</span><span class="n">i</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="n">start</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="nd">@property</span>
<span class="k">def</span> <span class="nf">llil_instructions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A generator of llil instructions&quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">block</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">llil_basic_blocks</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">block</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">i</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">mlil_instructions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A generator of mlil instructions&quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">block</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mlil_basic_blocks</span><span class="p">:</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">block</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">i</span>
<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">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">notifications</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
<span class="n">i</span><span class="o">.</span><span class="n">_unregister</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeBinaryView</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">__iter__</span><span class="p">(</span><span class="bp">self</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">funcs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisFunctionList</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">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">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="p">,</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewFunctionReference</span><span class="p">(</span><span class="n">funcs</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">BNFreeFunctionList</span><span class="p">(</span><span class="n">funcs</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="nd">@property</span>
<span class="k">def</span> <span class="nf">parent_view</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;View that contains the raw data used by this view (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">BNGetParentView</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">BinaryView</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">@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 modification state of the BinaryView (read/write)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">modified</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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">modified</span> <span class="o">=</span> <span class="n">value</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 analysis state changed of the currently running analysis (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">analysis_changed</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;boolean has a database been written to disk (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">has_database</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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">view</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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">view</span> <span class="o">=</span> <span class="n">value</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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">offset</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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">offset</span> <span class="o">=</span> <span class="n">value</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;Start offset of the binary (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetStartOffset</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;End offset of the binary (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetEndOffset</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">entry_point</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Entry point of the binary (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetEntryPoint</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">arch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;The architecture associated with the current BinaryView (read/write)&quot;&quot;&quot;</span>
<span class="n">arch</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDefaultArchitecture</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="k">return</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">handle</span><span class="o">=</span><span class="n">arch</span><span class="p">)</span>
<span class="nd">@arch</span><span class="o">.</span><span class="n">setter</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="n">value</span><span class="p">):</span>
<span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetDefaultArchitecture</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="k">else</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetDefaultArchitecture</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">platform</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;The platform associated with the current BinaryView (read/write)&quot;&quot;&quot;</span>
<span class="n">plat</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDefaultPlatform</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">plat</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">platform</span><span class="o">.</span><span class="n">Platform</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">plat</span><span class="p">)</span>
<span class="nd">@platform</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">platform</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="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetDefaultPlatform</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="k">else</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetDefaultPlatform</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">endianness</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Endianness of the binary (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">Endianness</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetDefaultEndianness</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">relocatable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean - is the binary relocatable (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsRelocatable</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">address_size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Address size of the binary (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetViewAddressSize</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">executable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Whether the binary is an executable (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsExecutableView</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">functions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of functions (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">funcs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisFunctionList</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">function</span><span class="o">.</span><span class="n">Function</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">BNNewFunctionReference</span><span class="p">(</span><span class="n">funcs</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">BNFreeFunctionList</span><span class="p">(</span><span class="n">funcs</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_functions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Boolean whether the binary has functions (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNHasFunctions</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">entry_function</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Entry function (read-only)&quot;&quot;&quot;</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisEntryPoint</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="k">return</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="p">,</span> <span class="n">func</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">symbols</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Dict of symbols (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">syms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbols</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">sym</span> <span class="o">=</span> <span class="n">types</span><span class="o">.</span><span class="n">Symbol</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="kc">None</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">BNNewSymbolReference</span><span class="p">(</span><span class="n">syms</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
<span class="n">result</span><span class="p">[</span><span class="n">sym</span><span class="o">.</span><span class="n">raw_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">sym</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeSymbolList</span><span class="p">(</span><span class="n">syms</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">view_type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;View type (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetViewType</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">available_view_types</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Available view 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">types</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetBinaryViewTypesForData</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">BinaryViewType</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">BNFreeBinaryViewTypeList</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="nd">@property</span>
<span class="k">def</span> <span class="nf">strings</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of strings (read-only)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_strings</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 state of whether or not the file has been saved (read/write)&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">saved</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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">saved</span> <span class="o">=</span> <span class="n">value</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">analysis_info</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Relevant analysis information with list of functions under active analysis (read-only)&quot;&quot;&quot;</span>
<span class="n">info_ref</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisInfo</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">info</span> <span class="o">=</span> <span class="n">info_ref</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">active_info_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="n">xrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">info</span><span class="o">.</span><span class="n">count</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="bp">self</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">info</span><span class="o">.</span><span class="n">activeInfo</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">func</span><span class="p">))</span>
<span class="n">active_info</span> <span class="o">=</span> <span class="n">ActiveAnalysisInfo</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">info</span><span class="o">.</span><span class="n">activeInfo</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">analysisTime</span><span class="p">,</span> <span class="n">info</span><span class="o">.</span><span class="n">activeInfo</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">updateCount</span><span class="p">,</span> <span class="n">info</span><span class="o">.</span><span class="n">activeInfo</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">submitCount</span><span class="p">)</span>
<span class="n">active_info_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">active_info</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">AnalysisInfo</span><span class="p">(</span><span class="n">info</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="n">info</span><span class="o">.</span><span class="n">analysisTime</span><span class="p">,</span> <span class="n">active_info_list</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeAnalysisInfo</span><span class="p">(</span><span class="n">info_ref</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">analysis_progress</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Status of current analysis (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">BNGetAnalysisProgress</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">return</span> <span class="n">AnalysisProgress</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="n">result</span><span class="o">.</span><span class="n">count</span><span class="p">,</span> <span class="n">result</span><span class="o">.</span><span class="n">total</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">linear_disassembly</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Iterator for all lines in the linear disassembly of the view&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_linear_disassembly</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">data_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of data variables (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">var_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetDataVariables</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">addr</span> <span class="o">=</span> <span class="n">var_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">address</span>
<span class="n">var_type</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">var_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="o">.</span><span class="n">platform</span><span class="p">,</span> <span class="n">confidence</span> <span class="o">=</span> <span class="n">var_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">typeConfidence</span><span class="p">)</span>
<span class="n">auto_discovered</span> <span class="o">=</span> <span class="n">var_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">autoDiscovered</span>
<span class="n">result</span><span class="p">[</span><span class="n">addr</span><span class="p">]</span> <span class="o">=</span> <span class="n">DataVariable</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="n">var_type</span><span class="p">,</span> <span class="n">auto_discovered</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeDataVariables</span><span class="p">(</span><span class="n">var_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">types</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of defined 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">BNGetAnalysisTypeList</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="o">.</span><span class="n">platform</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">segments</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of segments (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">segment_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSegments</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">Segment</span><span class="p">(</span><span class="n">segment_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="n">segment_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">length</span><span class="p">,</span>
<span class="n">segment_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">dataOffset</span><span class="p">,</span> <span class="n">segment_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">dataLength</span><span class="p">,</span> <span class="n">segment_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">flags</span><span class="p">,</span> <span class="n">segment_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">autoDefined</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeSegmentList</span><span class="p">(</span><span class="n">segment_list</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">sections</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of sections (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">section_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSections</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="p">[</span><span class="n">section_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="o">=</span> <span class="n">Section</span><span class="p">(</span><span class="n">section_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">section_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">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="p">,</span>
<span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">length</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">linkedSection</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">infoSection</span><span class="p">,</span>
<span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">infoData</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">align</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">entrySize</span><span class="p">,</span>
<span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">semantics</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">autoDefined</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeSectionList</span><span class="p">(</span><span class="n">section_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">allocated_ranges</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;List of valid address ranges for this view (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">range_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAllocatedRanges</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">AddressRange</span><span class="p">(</span><span class="n">range_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="n">range_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">end</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeAddressRanges</span><span class="p">(</span><span class="n">range_list</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">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 view&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">BinaryView</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">_BinaryViewAssociatedDataStore</span><span class="p">()</span>
<span class="n">BinaryView</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">BinaryView</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">@property</span>
<span class="k">def</span> <span class="nf">global_pointer_value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Discovered value of the global pointer register, if the binary uses one (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">BNGetGlobalPointerValue</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">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">result</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">confidence</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">confidence</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">parameters_for_analysis</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">BNGetParametersForAnalysis</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">@parameters_for_analysis</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">parameters_for_analysis</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">core</span><span class="o">.</span><span class="n">BNSetParametersForAnalysis</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">params</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">max_function_size_for_analysis</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Maximum size of function (sum of basic block sizes in bytes) for auto analysis&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetMaxFunctionSizeForAnalysis</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">@max_function_size_for_analysis</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">max_function_size_for_analysis</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">core</span><span class="o">.</span><span class="n">BNSetMaxFunctionSizeForAnalysis</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">size</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">BNGetViewLength</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="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="bp">self</span><span class="o">.</span><span class="n">__getitem__</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="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;step not implemented&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="bp">self</span><span class="o">.</span><span class="n">end</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="k">return</span> <span class="nb">str</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="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">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="n">value</span> <span class="o">=</span> <span class="nb">str</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="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="mi">1</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">0</span><span class="p">:</span>
<span class="k">return</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;index not readable&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">value</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="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">end</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="bp">self</span><span class="o">.</span><span class="n">read</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="mi">1</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">0</span><span class="p">:</span>
<span class="k">return</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;index not readable&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">value</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="bp">self</span><span class="o">.</span><span class="n">end</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="bp">self</span><span class="o">.</span><span class="n">remove</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="bp">self</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">start</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">write</span><span class="p">(</span><span class="n">start</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="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">write</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">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">IndexError</span><span class="p">(</span><span class="s2">&quot;index not writable&quot;</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="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">end</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="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">write</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">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">IndexError</span><span class="p">(</span><span class="s2">&quot;index not writable&quot;</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">__repr__</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">length</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="n">start</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">size</span> <span class="o">=</span> <span class="s2">&quot;start </span><span class="si">%#x</span><span class="s2">, len </span><span class="si">%#x</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">size</span> <span class="o">=</span> <span class="s2">&quot;len </span><span class="si">%#x</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">length</span>
<span class="n">filename</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">filename</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&lt;BinaryView: &#39;</span><span class="si">%s</span><span class="s2">&#39;, </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
<span class="k">return</span> <span class="s2">&quot;&lt;BinaryView: </span><span class="si">%s</span><span class="s2">&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">size</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">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">init</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">_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">perform_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="nb">str</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">perform_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>
<span class="k">def</span> <span class="nf">_insert</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">perform_insert</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>
<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">ctxt</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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_remove</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">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">_get_modification</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="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_get_modification</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="n">ModificationStatus</span><span class="o">.</span><span class="n">Original</span>
<span class="k">def</span> <span class="nf">_is_valid_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="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">perform_is_valid_offset</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>
<span class="k">def</span> <span class="nf">_is_offset_readable</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="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_is_offset_readable</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>
<span class="k">def</span> <span class="nf">_is_offset_writable</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="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_is_offset_writable</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>
<span class="k">def</span> <span class="nf">_is_offset_executable</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="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_is_offset_executable</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>
<span class="k">def</span> <span class="nf">_get_next_valid_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="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">perform_get_next_valid_offset</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="n">offset</span>
<span class="k">def</span> <span class="nf">_get_start</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">perform_get_start</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">_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">perform_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">_get_entry_point</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">perform_get_entry_point</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">_is_executable</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">perform_is_executable</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">_get_default_endianness</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">perform_get_default_endianness</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">Endianness</span><span class="o">.</span><span class="n">LittleEndian</span>
<span class="k">def</span> <span class="nf">_is_relocatable</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">perform_is_relocatable</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">_get_address_size</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">perform_get_address_size</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">8</span>
<span class="k">def</span> <span class="nf">_save</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">file_accessor</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_save</span><span class="p">(</span><span class="n">fileaccessor</span><span class="o">.</span><span class="n">CoreFileAccessor</span><span class="p">(</span><span class="n">file_accessor</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="BinaryView.init"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="BinaryView.get_disassembly"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_disassembly">[docs]</a> <span class="k">def</span> <span class="nf">get_disassembly</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">arch</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`` simple helper function for printing disassembly of a given address</span>
<span class="sd"> :param int addr: virtual address of instruction</span>
<span class="sd"> :param Architecture arch: optional Architecture, ``self.arch`` is used if this parameter is None</span>
<span class="sd"> :return: a str representation of the instruction at virtual address ``addr`` or None</span>
<span class="sd"> :rtype: str or None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(bv.entry_point)</span>
<span class="sd"> &#39;push ebp&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="n">txt</span><span class="p">,</span> <span class="n">size</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="bp">self</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="n">arch</span><span class="o">.</span><span class="n">max_instr_length</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">next_address</span> <span class="o">=</span> <span class="n">addr</span> <span class="o">+</span> <span class="n">size</span>
<span class="k">if</span> <span class="n">txt</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="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</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">txt</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
<div class="viewcode-block" id="BinaryView.get_next_disassembly"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_next_disassembly">[docs]</a> <span class="k">def</span> <span class="nf">get_next_disassembly</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_next_disassembly`` simple helper function for printing disassembly of the next instruction.</span>
<span class="sd"> The internal state of the instruction to be printed is stored in the ``next_address`` attribute</span>
<span class="sd"> :param Architecture arch: optional Architecture, ``self.arch`` is used if this parameter is None</span>
<span class="sd"> :return: a str representation of the instruction at virtual address ``self.next_address``</span>
<span class="sd"> :rtype: str or None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;push ebp&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;mov ebp, esp&#39;</span>
<span class="sd"> &gt;&gt;&gt; #Now reset the starting point back to the entry point</span>
<span class="sd"> &gt;&gt;&gt; bv.next_address = bv.entry_point</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;push ebp&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="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="bp">self</span><span class="o">.</span><span class="n">next_address</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">next_address</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">entry_point</span>
<span class="n">txt</span><span class="p">,</span> <span class="n">size</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="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">next_address</span><span class="p">,</span> <span class="n">arch</span><span class="o">.</span><span class="n">max_instr_length</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">next_address</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">next_address</span> <span class="o">+=</span> <span class="n">size</span>
<span class="k">if</span> <span class="n">txt</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="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</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">txt</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
<div class="viewcode-block" id="BinaryView.perform_save"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_save">[docs]</a> <span class="k">def</span> <span class="nf">perform_save</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="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent_view</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">parent_view</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">accessor</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">False</span></div>
<span class="nd">@abc</span><span class="o">.</span><span class="n">abstractmethod</span>
<div class="viewcode-block" id="BinaryView.perform_get_address_size"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_get_address_size">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_address_size</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>
<div class="viewcode-block" id="BinaryView.perform_get_length"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_get_length">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_get_length`` implements a query for the size of the virtual address range used by</span>
<span class="sd"> the BinaryView.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :return: returns the size of the virtual address range used by the BinaryView.</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="BinaryView.perform_read"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_read">[docs]</a> <span class="k">def</span> <span class="nf">perform_read</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">length</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_read`` implements a mapping between a virtual address and an absolute file offset, reading</span>
<span class="sd"> ``length`` bytes from the rebased address ``addr``.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address to attempt to read from</span>
<span class="sd"> :param int length: the number of bytes to be read</span>
<span class="sd"> :return: length bytes read from addr, should return empty string on error</span>
<span class="sd"> :rtype: str</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span></div>
<div class="viewcode-block" id="BinaryView.perform_write"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_write">[docs]</a> <span class="k">def</span> <span class="nf">perform_write</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">data</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_write`` implements a mapping between a virtual address and an absolute file offset, writing</span>
<span class="sd"> the bytes ``data`` to rebased address ``addr``.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address</span>
<span class="sd"> :param str data: the data to be written</span>
<span class="sd"> :return: length of data written, should return 0 on error</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="BinaryView.perform_insert"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_insert">[docs]</a> <span class="k">def</span> <span class="nf">perform_insert</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">data</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_insert`` implements a mapping between a virtual address and an absolute file offset, inserting</span>
<span class="sd"> the bytes ``data`` to rebased address ``addr``.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. If not overridden, inserting is disallowed</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address</span>
<span class="sd"> :param str data: the data to be inserted</span>
<span class="sd"> :return: length of data inserted, should return 0 on error</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="BinaryView.perform_remove"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_remove">[docs]</a> <span class="k">def</span> <span class="nf">perform_remove</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">length</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_remove`` implements a mapping between a virtual address and an absolute file offset, removing</span>
<span class="sd"> ``length`` bytes from the rebased address ``addr``.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. If not overridden, removing data is disallowed</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address</span>
<span class="sd"> :param str data: the data to be removed</span>
<span class="sd"> :return: length of data removed, should return 0 on error</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="BinaryView.perform_get_modification"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_get_modification">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_modification</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_get_modification`` implements query to the whether the virtual address ``addr`` is modified.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: One of the following: Original = 0, Changed = 1, Inserted = 2</span>
<span class="sd"> :rtype: ModificationStatus</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">ModificationStatus</span><span class="o">.</span><span class="n">Original</span></div>
<div class="viewcode-block" id="BinaryView.perform_is_valid_offset"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_is_valid_offset">[docs]</a> <span class="k">def</span> <span class="nf">perform_is_valid_offset</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_is_valid_offset`` implements a check if an virtual address ``addr`` is valid.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is valid, false if the virtual address is invalid or error</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</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">addr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">return</span> <span class="p">(</span><span class="n">data</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="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.perform_is_offset_readable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_is_offset_readable">[docs]</a> <span class="k">def</span> <span class="nf">perform_is_offset_readable</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_is_offset_readable`` implements a check if an virtual address is readable.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int offset: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is readable, false if the virtual address is not readable or error</span>
<span class="sd"> :rtype: bool</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">is_valid_offset</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.perform_is_offset_writable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_is_offset_writable">[docs]</a> <span class="k">def</span> <span class="nf">perform_is_offset_writable</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_is_offset_writable`` implements a check if a virtual address ``addr`` is writable.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is writable, false if the virtual address is not writable or error</span>
<span class="sd"> :rtype: bool</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">is_valid_offset</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.perform_is_offset_executable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_is_offset_executable">[docs]</a> <span class="k">def</span> <span class="nf">perform_is_offset_executable</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_is_offset_executable`` implements a check if a virtual address ``addr`` is executable.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is executable, false if the virtual address is not executable or error</span>
<span class="sd"> :rtype: int</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">is_valid_offset</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.perform_get_next_valid_offset"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_get_next_valid_offset">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_next_valid_offset</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_get_next_valid_offset`` implements a query for the next valid readable, writable, or executable virtual</span>
<span class="sd"> memory address.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :param int addr: a virtual address to start checking from.</span>
<span class="sd"> :return: the next readable, writable, or executable virtual memory address</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">addr</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_get_start</span><span class="p">():</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">perform_get_start</span><span class="p">()</span>
<span class="k">return</span> <span class="n">addr</span></div>
<div class="viewcode-block" id="BinaryView.perform_get_start"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_get_start">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_get_start`` implements a query for the first readable, writable, or executable virtual address in</span>
<span class="sd"> the BinaryView.</span>
<span class="sd"> .. note:: This method **may** be overridden by custom BinaryViews. Use ``add_auto_segment`` to provide</span>
<span class="sd"> data without overriding this method.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :return: returns the first virtual address in the BinaryView.</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="BinaryView.perform_get_entry_point"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_get_entry_point">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_entry_point</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_get_entry_point`` implements a query for the initial entry point for code execution.</span>
<span class="sd"> .. note:: This method **should** be implmented for custom BinaryViews that are executable.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :return: the virtual address of the entry point</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="mi">0</span></div>
<div class="viewcode-block" id="BinaryView.perform_is_executable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_is_executable">[docs]</a> <span class="k">def</span> <span class="nf">perform_is_executable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_is_executable`` implements a check which returns true if the BinaryView is executable.</span>
<span class="sd"> .. note:: This method **must** be implemented for custom BinaryViews that are executable.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :return: true if the current BinaryView is executable, false if it is not executable or on error</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="kc">False</span></div>
<div class="viewcode-block" id="BinaryView.perform_get_default_endianness"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_get_default_endianness">[docs]</a> <span class="k">def</span> <span class="nf">perform_get_default_endianness</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_get_default_endianness`` implements a check which returns true if the BinaryView is executable.</span>
<span class="sd"> .. note:: This method **may** be implemented for custom BinaryViews that are not LittleEndian.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :return: either ``Endianness.LittleEndian`` or ``Endianness.BigEndian``</span>
<span class="sd"> :rtype: Endianness</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">Endianness</span><span class="o">.</span><span class="n">LittleEndian</span></div>
<div class="viewcode-block" id="BinaryView.perform_is_relocatable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.perform_is_relocatable">[docs]</a> <span class="k">def</span> <span class="nf">perform_is_relocatable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``perform_is_relocatable`` implements a check which returns true if the BinaryView is relocatable. Defaults to</span>
<span class="sd"> True.</span>
<span class="sd"> .. note:: This method **may** be implemented for custom BinaryViews that are relocatable.</span>
<span class="sd"> .. warning:: This method **must not** be called directly.</span>
<span class="sd"> :return: True if the BinaryView is relocatable, False otherwise</span>
<span class="sd"> :rtype: boolean</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="kc">True</span></div>
<div class="viewcode-block" id="BinaryView.create_database"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``create_database`` writes the current database (.bndb) file out to the specified file.</span>
<span class="sd"> :param str filename: path and filename to write the bndb to, this string `should` have &quot;.bndb&quot; appended to it.</span>
<span class="sd"> :param callable() progress_func: optional function to be called with the current progress and total count.</span>
<span class="sd"> :return: true on success, false on failure</span>
<span class="sd"> :rtype: bool</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">file</span><span class="o">.</span><span class="n">create_database</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">progress_func</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.save_auto_snapshot"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``save_auto_snapshot`` saves the current database to the already created file.</span>
<span class="sd"> .. note:: :py:meth:`create_database` should have been called prior to executing this method</span>
<span class="sd"> :param callable() progress_func: optional function to be called with the current progress and total count.</span>
<span class="sd"> :return: True if it successfully saved the snapshot, False otherwise</span>
<span class="sd"> :rtype: bool</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">file</span><span class="o">.</span><span class="n">save_auto_snapshot</span><span class="p">(</span><span class="n">progress_func</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_view_of_type"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_view_of_type`` returns the BinaryView associated with the provided name if it exists.</span>
<span class="sd"> :param str name: Name of the view to be retrieved</span>
<span class="sd"> :return: BinaryView object assocated with the provided name or None on failure</span>
<span class="sd"> :rtype: BinaryView or None</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">file</span><span class="o">.</span><span class="n">get_view_of_type</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.begin_undo_actions"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">begin_undo_actions</span><span class="p">()</span></div>
<div class="viewcode-block" id="BinaryView.add_undo_action"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_undo_action">[docs]</a> <span class="k">def</span> <span class="nf">add_undo_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="n">core</span><span class="o">.</span><span class="n">BNAddUndoAction</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">action</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="n">action</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.commit_undo_actions"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">commit_undo_actions</span><span class="p">()</span></div>
<div class="viewcode-block" id="BinaryView.undo"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">undo</span><span class="p">()</span></div>
<div class="viewcode-block" id="BinaryView.redo"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">redo</span><span class="p">()</span></div>
<div class="viewcode-block" id="BinaryView.navigate"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="bp">self</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="n">view</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.read"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read`` returns the data reads at most ``length`` bytes from virtual address ``addr``.</span>
<span class="sd"> Note: Python2 returns a str, but Python3 returns a bytes object. str(DataBufferObject) will</span>
<span class="sd"> still get you a str in either case.</span>
<span class="sd"> :param int addr: virtual address to read from.</span>
<span class="sd"> :param int length: number of bytes to read.</span>
<span class="sd"> :return: at most ``length`` bytes from the virtual address ``addr``, empty string on error or no data.</span>
<span class="sd"> :rtype: python2 - str; python3 - bytes </span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; #Opening a x86_64 Mach-O binary</span>
<span class="sd"> &gt;&gt;&gt; bv = BinaryViewType[&#39;Raw&#39;].open(&quot;/bin/ls&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.read(0,4)</span>
<span class="sd"> \&#39;\\xcf\\xfa\\xed\\xfe\&#39;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">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">handle</span><span class="o">=</span><span class="n">core</span><span class="o">.</span><span class="n">BNReadViewBuffer</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> <span class="n">length</span><span class="p">))</span>
<span class="k">return</span> <span class="nb">bytes</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.write"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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">addr</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write`` writes the bytes in ``data`` to the virtual address ``addr``.</span>
<span class="sd"> :param int addr: virtual address to write to.</span>
<span class="sd"> :param str data: data to be written at addr.</span>
<span class="sd"> :return: number of bytes written to virtual address ``addr``</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.read(0,4)</span>
<span class="sd"> &#39;BBBB&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.write(0, &quot;AAAA&quot;)</span>
<span class="sd"> 4L</span>
<span class="sd"> &gt;&gt;&gt; bv.read(0,4)</span>
<span class="sd"> &#39;AAAA&#39;</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">data</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Must be bytes&quot;</span><span class="p">)</span>
<span class="n">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">data</span><span class="p">)</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNWriteViewBuffer</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> <span class="n">buf</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.insert"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.insert">[docs]</a> <span class="k">def</span> <span class="nf">insert</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">data</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``insert`` inserts the bytes in ``data`` to the virtual address ``addr``.</span>
<span class="sd"> :param int addr: virtual address to write to.</span>
<span class="sd"> :param str data: data to be inserted at addr.</span>
<span class="sd"> :return: number of bytes inserted to virtual address ``addr``</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.insert(0,&quot;BBBB&quot;)</span>
<span class="sd"> 4L</span>
<span class="sd"> &gt;&gt;&gt; bv.read(0,8)</span>
<span class="sd"> &#39;BBBBAAAA&#39;</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">data</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;Must be bytes&quot;</span><span class="p">)</span>
<span class="n">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">data</span><span class="p">)</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNInsertViewBuffer</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> <span class="n">buf</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.remove"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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">addr</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``remove`` removes at most ``length`` bytes from virtual address ``addr``.</span>
<span class="sd"> :param int addr: virtual address to remove from.</span>
<span class="sd"> :param int length: number of bytes to remove.</span>
<span class="sd"> :return: number of bytes removed from virtual address ``addr``</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.read(0,8)</span>
<span class="sd"> &#39;BBBBAAAA&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.remove(0,4)</span>
<span class="sd"> 4L</span>
<span class="sd"> &gt;&gt;&gt; bv.read(0,4)</span>
<span class="sd"> &#39;AAAA&#39;</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">BNRemoveViewData</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> <span class="n">length</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_modification"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_modification">[docs]</a> <span class="k">def</span> <span class="nf">get_modification</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">length</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_modification`` returns the modified bytes of up to ``length`` bytes from virtual address ``addr``, or if</span>
<span class="sd"> ``length`` is None returns the ModificationStatus.</span>
<span class="sd"> :param int addr: virtual address to get modification from</span>
<span class="sd"> :param int length: optional length of modification</span>
<span class="sd"> :return: Either ModificationStatus of the byte at ``addr``, or string of modified bytes at ``addr``</span>
<span class="sd"> :rtype: ModificationStatus or str</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="n">ModificationStatus</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetModification</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>
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="n">ModificationStatus</span> <span class="o">*</span> <span class="n">length</span><span class="p">)()</span>
<span class="n">length</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetModificationArray</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> <span class="n">data</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="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="BinaryView.is_valid_offset"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_valid_offset">[docs]</a> <span class="k">def</span> <span class="nf">is_valid_offset</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_valid_offset`` checks if an virtual address ``addr`` is valid .</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is valid, false if the virtual address is invalid or error</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">BNIsValidOffset</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="BinaryView.is_offset_readable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_offset_readable">[docs]</a> <span class="k">def</span> <span class="nf">is_offset_readable</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_offset_readable`` checks if an virtual address ``addr`` is valid for reading.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is valid for reading, false if the virtual address is invalid or error</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">BNIsOffsetReadable</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="BinaryView.is_offset_writable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_offset_writable">[docs]</a> <span class="k">def</span> <span class="nf">is_offset_writable</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_offset_writable`` checks if an virtual address ``addr`` is valid for writing.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is valid for writing, false if the virtual address is invalid or error</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">BNIsOffsetWritable</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="BinaryView.is_offset_executable"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_offset_executable">[docs]</a> <span class="k">def</span> <span class="nf">is_offset_executable</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_offset_executable`` checks if an virtual address ``addr`` is valid for executing.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is valid for executing, false if the virtual address is invalid or error</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">BNIsOffsetExecutable</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="BinaryView.is_offset_code_semantics"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_offset_code_semantics">[docs]</a> <span class="k">def</span> <span class="nf">is_offset_code_semantics</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_offset_code_semantics`` checks if an virtual address ``addr`` is semantically valid for code.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is valid for writing, false if the virtual address is invalid or error</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">BNIsOffsetCodeSemantics</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="BinaryView.is_offset_writable_semantics"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_offset_writable_semantics">[docs]</a> <span class="k">def</span> <span class="nf">is_offset_writable_semantics</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_offset_writable_semantics`` checks if an virtual address ``addr`` is semantically writable. Some sections</span>
<span class="sd"> may have writable permissions for linking purposes but can be treated as read-only for the purposes of</span>
<span class="sd"> analysis.</span>
<span class="sd"> :param int addr: a virtual address to be checked</span>
<span class="sd"> :return: true if the virtual address is valid for writing, false if the virtual address is invalid or error</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">BNIsOffsetWritableSemantics</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="BinaryView.save"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.save">[docs]</a> <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dest</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``save`` saves the original binary file to the provided destination ``dest`` along with any modifications.</span>
<span class="sd"> :param str dest: destination path and filename of file to be written</span>
<span class="sd"> :return: boolean True on success, False on failure</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dest</span><span class="p">,</span> <span class="n">fileaccessor</span><span class="o">.</span><span class="n">FileAccessor</span><span class="p">):</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSaveToFile</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">dest</span><span class="o">.</span><span class="n">_cb</span><span class="p">)</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSaveToFilename</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">dest</span><span class="p">))</span></div>
<div class="viewcode-block" id="BinaryView.register_notification"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.register_notification">[docs]</a> <span class="k">def</span> <span class="nf">register_notification</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">notify</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> `register_notification` provides a mechanism for receiving callbacks for various analysis events. A full</span>
<span class="sd"> list of callbacks can be seen in :py:Class:`BinaryDataNotification`.</span>
<span class="sd"> :param BinaryDataNotification notify: notify is a subclassed instance of :py:Class:`BinaryDataNotification`.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">cb</span> <span class="o">=</span> <span class="n">BinaryDataNotificationCallbacks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">notify</span><span class="p">)</span>
<span class="n">cb</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">notifications</span><span class="p">[</span><span class="n">notify</span><span class="p">]</span> <span class="o">=</span> <span class="n">cb</span></div>
<div class="viewcode-block" id="BinaryView.unregister_notification"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.unregister_notification">[docs]</a> <span class="k">def</span> <span class="nf">unregister_notification</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">notify</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> `unregister_notification` unregisters the :py:Class:`BinaryDataNotification` object passed to</span>
<span class="sd"> `register_notification`</span>
<span class="sd"> :param BinaryDataNotification notify: notify is a subclassed instance of :py:Class:`BinaryDataNotification`.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">notify</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">notifications</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">notifications</span><span class="p">[</span><span class="n">notify</span><span class="p">]</span><span class="o">.</span><span class="n">_unregister</span><span class="p">()</span>
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">notifications</span><span class="p">[</span><span class="n">notify</span><span class="p">]</span></div>
<div class="viewcode-block" id="BinaryView.add_function"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_function">[docs]</a> <span class="k">def</span> <span class="nf">add_function</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">plat</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``add_function`` add a new function of the given ``plat`` at the virtual address ``addr``</span>
<span class="sd"> :param int addr: virtual address of the function to be added</span>
<span class="sd"> :param Platform plat: Platform for the function to be added</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.add_function(1)</span>
<span class="sd"> &gt;&gt;&gt; bv.functions</span>
<span class="sd"> [&lt;func: x86_64@0x1&gt;]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</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">Exception</span><span class="p">(</span><span class="s2">&quot;Default platform not set in BinaryView&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">plat</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">plat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">platform</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNAddFunctionForAnalysis</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">plat</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="BinaryView.add_entry_point"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_entry_point">[docs]</a> <span class="k">def</span> <span class="nf">add_entry_point</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">plat</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``add_entry_point`` adds an virtual address to start analysis from for a given plat.</span>
<span class="sd"> :param int addr: virtual address to start analysis from</span>
<span class="sd"> :param Platform plat: Platform for the entry point analysis</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.add_entry_point(0xdeadbeef)</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</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">Exception</span><span class="p">(</span><span class="s2">&quot;Default platform not set in BinaryView&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">plat</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">plat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">platform</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNAddEntryPointForAnalysis</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">plat</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="BinaryView.remove_function"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.remove_function">[docs]</a> <span class="k">def</span> <span class="nf">remove_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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``remove_function`` removes the function ``func`` from the list of functions</span>
<span class="sd"> :param Function func: a Function object.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.functions</span>
<span class="sd"> [&lt;func: x86_64@0x1&gt;]</span>
<span class="sd"> &gt;&gt;&gt; bv.remove_function(bv.functions[0])</span>
<span class="sd"> &gt;&gt;&gt; bv.functions</span>
<span class="sd"> []</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRemoveAnalysisFunction</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="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.create_user_function"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.create_user_function">[docs]</a> <span class="k">def</span> <span class="nf">create_user_function</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">plat</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``create_user_function`` add a new *user* function of the given ``plat`` at the virtual address ``addr``</span>
<span class="sd"> :param int addr: virtual address of the *user* function to be added</span>
<span class="sd"> :param Platform plat: Platform for the function to be added</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.create_user_function(1)</span>
<span class="sd"> &gt;&gt;&gt; bv.functions</span>
<span class="sd"> [&lt;func: x86_64@0x1&gt;]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">plat</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">plat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">platform</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNCreateUserFunction</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">plat</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="BinaryView.remove_user_function"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.remove_user_function">[docs]</a> <span class="k">def</span> <span class="nf">remove_user_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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``remove_user_function`` removes the *user* function ``func`` from the list of functions</span>
<span class="sd"> :param Function func: a Function object.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.functions</span>
<span class="sd"> [&lt;func: x86_64@0x1&gt;]</span>
<span class="sd"> &gt;&gt;&gt; bv.remove_user_function(bv.functions[0])</span>
<span class="sd"> &gt;&gt;&gt; bv.functions</span>
<span class="sd"> []</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRemoveUserFunction</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="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.add_analysis_option"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_analysis_option">[docs]</a> <span class="k">def</span> <span class="nf">add_analysis_option</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``add_analysis_option`` adds an analysis option. Analysis options elaborate the analysis phase. The user must</span>
<span class="sd"> start analysis by calling either ``update_analysis()`` or ``update_analysis_and_wait()``.</span>
<span class="sd"> :param str name: name of the analysis option. Available options:</span>
<span class="sd"> &quot;linearsweep&quot; : apply linearsweep analysis during the next analysis update (run-once semantics)</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.add_analysis_option(&quot;linearsweep&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.update_analysis_and_wait()</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNAddAnalysisOption</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="BinaryView.update_analysis"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.update_analysis">[docs]</a> <span class="k">def</span> <span class="nf">update_analysis</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``update_analysis`` asynchronously starts the analysis running and returns immediately. Analysis of BinaryViews</span>
<span class="sd"> does not occur automatically, the user must start analysis by calling either ``update_analysis()`` or</span>
<span class="sd"> ``update_analysis_and_wait()``. An analysis update **must** be run after changes are made which could change</span>
<span class="sd"> analysis results such as adding functions.</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">BNUpdateAnalysis</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="BinaryView.update_analysis_and_wait"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.update_analysis_and_wait">[docs]</a> <span class="k">def</span> <span class="nf">update_analysis_and_wait</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``update_analysis_and_wait`` blocking call to update the analysis, this call returns when the analysis is</span>
<span class="sd"> complete. Analysis of BinaryViews does not occur automatically, the user must start analysis by calling either</span>
<span class="sd"> ``update_analysis()`` or ``update_analysis_and_wait()``. An analysis update **must** be run after changes are</span>
<span class="sd"> made which could change analysis results such as adding functions.</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">BNUpdateAnalysisAndWait</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="BinaryView.abort_analysis"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.abort_analysis">[docs]</a> <span class="k">def</span> <span class="nf">abort_analysis</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``abort_analysis`` will abort the currently running analysis.</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">BNAbortAnalysis</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="BinaryView.define_data_var"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_data_var">[docs]</a> <span class="k">def</span> <span class="nf">define_data_var</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">var_type</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_data_var`` defines a non-user data variable ``var_type`` at the virtual address ``addr``.</span>
<span class="sd"> :param int addr: virtual address to define the given data variable</span>
<span class="sd"> :param Type var_type: type to be defined at the given virtual address</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; t = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; t</span>
<span class="sd"> (&lt;type: int32_t&gt;, &#39;foo&#39;)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_data_var(bv.entry_point, t[0])</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">tc</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNTypeWithConfidence</span><span class="p">()</span>
<span class="n">tc</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">var_type</span><span class="o">.</span><span class="n">handle</span>
<span class="n">tc</span><span class="o">.</span><span class="n">confidence</span> <span class="o">=</span> <span class="n">var_type</span><span class="o">.</span><span class="n">confidence</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNDefineDataVariable</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> <span class="n">tc</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.define_user_data_var"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_user_data_var">[docs]</a> <span class="k">def</span> <span class="nf">define_user_data_var</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">var_type</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_user_data_var`` defines a user data variable ``var_type`` at the virtual address ``addr``.</span>
<span class="sd"> :param int addr: virtual address to define the given data variable</span>
<span class="sd"> :param binaryninja.Type var_type: type to be defined at the given virtual address</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; t = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; t</span>
<span class="sd"> (&lt;type: int32_t&gt;, &#39;foo&#39;)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_user_data_var(bv.entry_point, t[0])</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">tc</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNTypeWithConfidence</span><span class="p">()</span>
<span class="n">tc</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">var_type</span><span class="o">.</span><span class="n">handle</span>
<span class="n">tc</span><span class="o">.</span><span class="n">confidence</span> <span class="o">=</span> <span class="n">var_type</span><span class="o">.</span><span class="n">confidence</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNDefineUserDataVariable</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> <span class="n">tc</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.undefine_data_var"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.undefine_data_var">[docs]</a> <span class="k">def</span> <span class="nf">undefine_data_var</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``undefine_data_var`` removes the non-user data variable at the virtual address ``addr``.</span>
<span class="sd"> :param int addr: virtual address to define the data variable to be removed</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.undefine_data_var(bv.entry_point)</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">BNUndefineDataVariable</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="BinaryView.undefine_user_data_var"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.undefine_user_data_var">[docs]</a> <span class="k">def</span> <span class="nf">undefine_user_data_var</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``undefine_user_data_var`` removes the user data variable at the virtual address ``addr``.</span>
<span class="sd"> :param int addr: virtual address to define the data variable to be removed</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.undefine_user_data_var(bv.entry_point)</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">BNUndefineUserDataVariable</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="BinaryView.get_data_var_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_data_var_at">[docs]</a> <span class="k">def</span> <span class="nf">get_data_var_at</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_data_var_at`` returns the data type at a given virtual address.</span>
<span class="sd"> :param int addr: virtual address to get the data type from</span>
<span class="sd"> :return: returns the DataVariable at the given virtual address, None on error.</span>
<span class="sd"> :rtype: DataVariable</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; t = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_data_var(bv.entry_point, t[0])</span>
<span class="sd"> &gt;&gt;&gt; bv.get_data_var_at(bv.entry_point)</span>
<span class="sd"> &lt;var 0x100001174: int32_t&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">var</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDataVariable</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">BNGetDataVariableAtAddress</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> <span class="n">var</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">DataVariable</span><span class="p">(</span><span class="n">var</span><span class="o">.</span><span class="n">address</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">var</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="o">.</span><span class="n">platform</span><span class="p">,</span> <span class="n">confidence</span> <span class="o">=</span> <span class="n">var</span><span class="o">.</span><span class="n">typeConfidence</span><span class="p">),</span> <span class="n">var</span><span class="o">.</span><span class="n">autoDiscovered</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_functions_containing"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_functions_containing">[docs]</a> <span class="k">def</span> <span class="nf">get_functions_containing</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_functions_containing`` returns a list of functions which contain the given address or None on failure.</span>
<span class="sd"> :param int addr: virtual address to query.</span>
<span class="sd"> :rtype: list of Function objects or None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">basic_blocks</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_basic_blocks_at</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">basic_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="kc">None</span>
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">block</span> <span class="ow">in</span> <span class="n">basic_blocks</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">block</span><span class="o">.</span><span class="n">function</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BinaryView.get_function_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_function_at">[docs]</a> <span class="k">def</span> <span class="nf">get_function_at</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">plat</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_function_at`` gets a Function object for the function that starts at virtual address ``addr``:</span>
<span class="sd"> :param int addr: starting virtual address of the desired function</span>
<span class="sd"> :param Platform plat: plat of the desired function</span>
<span class="sd"> :return: returns a Function object or None for the function at the virtual address provided</span>
<span class="sd"> :rtype: Function</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_function_at(bv.entry_point)</span>
<span class="sd"> &lt;func: x86_64@0x100001174&gt;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">plat</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">plat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">platform</span>
<span class="k">if</span> <span class="n">plat</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">func</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisFunction</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">plat</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">addr</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="k">return</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="p">,</span> <span class="n">func</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_functions_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_functions_at">[docs]</a> <span class="k">def</span> <span class="nf">get_functions_at</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_functions_at`` get a list of binaryninja.Function objects (one for each valid plat) at the given</span>
<span class="sd"> virtual address. Binary Ninja does not limit the number of platforms in a given file thus there may be multiple</span>
<span class="sd"> functions defined from different architectures at the same location. This API allows you to query all of valid</span>
<span class="sd"> platforms.</span>
<span class="sd"> :param int addr: virtual address of the desired Function object list.</span>
<span class="sd"> :return: a list of binaryninja.Function objects defined at the provided virtual address</span>
<span class="sd"> :rtype: list(Function)</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="mi">0</span><span class="p">)</span>
<span class="n">funcs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisFunctionsForAddress</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> <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">function</span><span class="o">.</span><span class="n">Function</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">BNNewFunctionReference</span><span class="p">(</span><span class="n">funcs</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">BNFreeFunctionList</span><span class="p">(</span><span class="n">funcs</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="BinaryView.get_recent_function_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_recent_function_at">[docs]</a> <span class="k">def</span> <span class="nf">get_recent_function_at</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">func</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetRecentAnalysisFunctionForAddress</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>
<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="k">return</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="p">,</span> <span class="n">func</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_basic_blocks_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_basic_blocks_at">[docs]</a> <span class="k">def</span> <span class="nf">get_basic_blocks_at</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_basic_blocks_at`` get a list of :py:Class:`BasicBlock` objects which exist at the provided virtual address.</span>
<span class="sd"> :param int addr: virtual address of BasicBlock desired</span>
<span class="sd"> :return: a list of :py:Class:`BasicBlock` objects</span>
<span class="sd"> :rtype: list(BasicBlock)</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="mi">0</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">BNGetBasicBlocksForAddress</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> <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="o">.</span><span class="n">BasicBlock</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">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></div>
<div class="viewcode-block" id="BinaryView.get_basic_blocks_starting_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_basic_blocks_starting_at">[docs]</a> <span class="k">def</span> <span class="nf">get_basic_blocks_starting_at</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_basic_blocks_starting_at`` get a list of :py:Class:`BasicBlock` objects which start at the provided virtual address.</span>
<span class="sd"> :param int addr: virtual address of BasicBlock desired</span>
<span class="sd"> :return: a list of :py:Class:`BasicBlock` objects</span>
<span class="sd"> :rtype: list(BasicBlock)</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="mi">0</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">BNGetBasicBlocksStartingAtAddress</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> <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="o">.</span><span class="n">BasicBlock</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">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></div>
<div class="viewcode-block" id="BinaryView.get_recent_basic_block_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_recent_basic_block_at">[docs]</a> <span class="k">def</span> <span class="nf">get_recent_basic_block_at</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">block</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetRecentBasicBlockForAddress</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>
<span class="k">if</span> <span class="n">block</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">basicblock</span><span class="o">.</span><span class="n">BasicBlock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_code_refs"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_code_refs">[docs]</a> <span class="k">def</span> <span class="nf">get_code_refs</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">length</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_code_refs`` returns a list of ReferenceSource objects (xrefs or cross-references) that point to the provided virtual address.</span>
<span class="sd"> :param int addr: virtual address to query for references</span>
<span class="sd"> :return: List of References for the given virtual address</span>
<span class="sd"> :rtype: list(ReferenceSource)</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_code_refs(here)</span>
<span class="sd"> [&lt;ref: x86@0x4165ff&gt;]</span>
<span class="sd"> &gt;&gt;&gt;</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="mi">0</span><span class="p">)</span>
<span class="k">if</span> <span class="n">length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">refs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCodeReferences</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> <span class="n">count</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">refs</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetCodeReferencesInRange</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> <span class="n">length</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="k">if</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</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="bp">self</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">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</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="k">if</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">arch</span><span class="p">:</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">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">arch</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">arch</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">addr</span> <span class="o">=</span> <span class="n">refs</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="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">architecture</span><span class="o">.</span><span class="n">ReferenceSource</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">arch</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">BNFreeCodeReferences</span><span class="p">(</span><span class="n">refs</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="BinaryView.get_symbol_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_symbol_at">[docs]</a> <span class="k">def</span> <span class="nf">get_symbol_at</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_symbol_at`` returns the Symbol at the provided virtual address.</span>
<span class="sd"> :param int addr: virtual address to query for symbol</span>
<span class="sd"> :return: Symbol for the given virtual address</span>
<span class="sd"> :rtype: Symbol</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_symbol_at(bv.entry_point)</span>
<span class="sd"> &lt;FunctionSymbol: &quot;_start&quot; @ 0x100001174&gt;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">sym</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbolByAddress</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>
<span class="k">if</span> <span class="n">sym</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">types</span><span class="o">.</span><span class="n">Symbol</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="kc">None</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">sym</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_symbol_by_raw_name"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_symbol_by_raw_name">[docs]</a> <span class="k">def</span> <span class="nf">get_symbol_by_raw_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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_symbol_by_raw_name`` retrieves a Symbol object for the given a raw (mangled) name.</span>
<span class="sd"> :param str name: raw (mangled) name of Symbol to be retrieved</span>
<span class="sd"> :return: Symbol object corresponding to the provided raw name</span>
<span class="sd"> :rtype: Symbol</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_symbol_by_raw_name(&#39;?testf@Foobar@@SA?AW4foo@1@W421@@Z&#39;)</span>
<span class="sd"> &lt;FunctionSymbol: &quot;public: static enum Foobar::foo __cdecl Foobar::testf(enum Foobar::foo)&quot; @ 0x10001100&gt;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">sym</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbolByRawName</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="n">sym</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">types</span><span class="o">.</span><span class="n">Symbol</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="kc">None</span><span class="p">,</span> <span class="n">handle</span> <span class="o">=</span> <span class="n">sym</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_symbols_by_name"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_symbols_by_name">[docs]</a> <span class="k">def</span> <span class="nf">get_symbols_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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_symbols_by_name`` retrieves a list of Symbol objects for the given symbol name.</span>
<span class="sd"> :param str name: name of Symbol object to be retrieved</span>
<span class="sd"> :return: Symbol object corresponding to the provided name</span>
<span class="sd"> :rtype: Symbol</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_symbols_by_name(&#39;?testf@Foobar@@SA?AW4foo@1@W421@@Z&#39;)</span>
<span class="sd"> [&lt;FunctionSymbol: &quot;public: static enum Foobar::foo __cdecl Foobar::testf(enum Foobar::foo)&quot; @ 0x10001100&gt;]</span>
<span class="sd"> &gt;&gt;&gt;</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="mi">0</span><span class="p">)</span>
<span class="n">syms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbolsByName</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="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">types</span><span class="o">.</span><span class="n">Symbol</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="kc">None</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">BNNewSymbolReference</span><span class="p">(</span><span class="n">syms</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">BNFreeSymbolList</span><span class="p">(</span><span class="n">syms</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="BinaryView.get_symbols"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_symbols">[docs]</a> <span class="k">def</span> <span class="nf">get_symbols</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="kc">None</span><span class="p">,</span> <span class="n">length</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_symbols`` retrieves the list of all Symbol objects in the optionally provided range.</span>
<span class="sd"> :param int start: optional start virtual address</span>
<span class="sd"> :param int length: optional length</span>
<span class="sd"> :return: list of all Symbol objects, or those Symbol objects in the range of ``start``-``start+length``</span>
<span class="sd"> :rtype: list(Symbol)</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_symbols(0x1000200c, 1)</span>
<span class="sd"> [&lt;ImportAddressSymbol: &quot;KERNEL32!IsProcessorFeaturePresent@IAT&quot; @ 0x1000200c&gt;]</span>
<span class="sd"> &gt;&gt;&gt;</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="mi">0</span><span class="p">)</span>
<span class="k">if</span> <span class="n">start</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">syms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbols</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">else</span><span class="p">:</span>
<span class="n">syms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbolsInRange</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">length</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">types</span><span class="o">.</span><span class="n">Symbol</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="kc">None</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">BNNewSymbolReference</span><span class="p">(</span><span class="n">syms</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">BNFreeSymbolList</span><span class="p">(</span><span class="n">syms</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="BinaryView.get_symbols_of_type"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_symbols_of_type">[docs]</a> <span class="k">def</span> <span class="nf">get_symbols_of_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sym_type</span><span class="p">,</span> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">length</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_symbols_of_type`` retrieves a list of all Symbol objects of the provided symbol type in the optionally</span>
<span class="sd"> provided range.</span>
<span class="sd"> :param SymbolType sym_type: A Symbol type: :py:Class:`Symbol`.</span>
<span class="sd"> :param int start: optional start virtual address</span>
<span class="sd"> :param int length: optional length</span>
<span class="sd"> :return: list of all Symbol objects of type sym_type, or those Symbol objects in the range of ``start``-``start+length``</span>
<span class="sd"> :rtype: list(Symbol)</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_symbols_of_type(SymbolType.ImportAddressSymbol, 0x10002028, 1)</span>
<span class="sd"> [&lt;ImportAddressSymbol: &quot;KERNEL32!GetCurrentThreadId@IAT&quot; @ 0x10002028&gt;]</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sym_type</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">sym_type</span> <span class="o">=</span> <span class="n">SymbolType</span><span class="p">[</span><span class="n">sym_type</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="k">if</span> <span class="n">start</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">syms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbolsOfType</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">sym_type</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">syms</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSymbolsOfTypeInRange</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">sym_type</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">length</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">types</span><span class="o">.</span><span class="n">Symbol</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="kc">None</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">BNNewSymbolReference</span><span class="p">(</span><span class="n">syms</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">BNFreeSymbolList</span><span class="p">(</span><span class="n">syms</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="BinaryView.define_auto_symbol"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_auto_symbol">[docs]</a> <span class="k">def</span> <span class="nf">define_auto_symbol</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sym</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_auto_symbol`` adds a symbol to the internal list of automatically discovered Symbol objects.</span>
<span class="sd"> .. warning:: If multiple symbols for the same address are defined, only the most recent symbol will ever be used.</span>
<span class="sd"> :param Symbol sym: the symbol to define</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">BNDefineAutoSymbol</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">sym</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.define_auto_symbol_and_var_or_function"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_auto_symbol_and_var_or_function">[docs]</a> <span class="k">def</span> <span class="nf">define_auto_symbol_and_var_or_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sym</span><span class="p">,</span> <span class="n">sym_type</span><span class="p">,</span> <span class="n">plat</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_auto_symbol_and_var_or_function``</span>
<span class="sd"> .. warning:: If multiple symbols for the same address are defined, only the most recent symbol will ever be used.</span>
<span class="sd"> :param Symbol sym: the symbol to define</span>
<span class="sd"> :param SymbolType sym_type: Type of symbol being defined</span>
<span class="sd"> :param Platform plat: (optional) platform</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">plat</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">plat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">plat</span>
<span class="k">if</span> <span class="n">plat</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">plat</span> <span class="o">=</span> <span class="n">plat</span><span class="o">.</span><span class="n">handle</span>
<span class="k">if</span> <span class="n">sym_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">sym_type</span> <span class="o">=</span> <span class="n">sym_type</span><span class="o">.</span><span class="n">handle</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNDefineAutoSymbolAndVariableOrFunction</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">plat</span><span class="p">,</span> <span class="n">sym</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">sym_type</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.undefine_auto_symbol"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.undefine_auto_symbol">[docs]</a> <span class="k">def</span> <span class="nf">undefine_auto_symbol</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sym</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``undefine_auto_symbol`` removes a symbol from the internal list of automatically discovered Symbol objects.</span>
<span class="sd"> :param Symbol sym: the symbol to undefine</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">BNUndefineAutoSymbol</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">sym</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.define_user_symbol"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_user_symbol">[docs]</a> <span class="k">def</span> <span class="nf">define_user_symbol</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sym</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_user_symbol`` adds a symbol to the internal list of user added Symbol objects.</span>
<span class="sd"> .. warning:: If multiple symbols for the same address are defined, only the most recent symbol will ever be used.</span>
<span class="sd"> :param Symbol sym: the symbol to define</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">BNDefineUserSymbol</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">sym</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.undefine_user_symbol"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.undefine_user_symbol">[docs]</a> <span class="k">def</span> <span class="nf">undefine_user_symbol</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sym</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``undefine_user_symbol`` removes a symbol from the internal list of user added Symbol objects.</span>
<span class="sd"> :param Symbol sym: the symbol to undefine</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">BNUndefineUserSymbol</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">sym</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.define_imported_function"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_imported_function">[docs]</a> <span class="k">def</span> <span class="nf">define_imported_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">import_addr_sym</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_imported_function`` defines an imported Function ``func`` with a ImportedFunctionSymbol type.</span>
<span class="sd"> :param Symbol import_addr_sym: A Symbol object with type ImportedFunctionSymbol</span>
<span class="sd"> :param Function func: A Function object to define as an imported function</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">BNDefineImportedFunction</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">import_addr_sym</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">func</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.is_never_branch_patch_available"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_never_branch_patch_available">[docs]</a> <span class="k">def</span> <span class="nf">is_never_branch_patch_available</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_never_branch_patch_available`` queries the architecture plugin to determine if the instruction at the</span>
<span class="sd"> instruction at ``addr`` can be made to **never branch**. The actual logic of which is implemented in the</span>
<span class="sd"> ``perform_is_never_branch_patch_available`` in the corresponding architecture.</span>
<span class="sd"> :param int addr: the virtual address of the instruction to be patched</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True if the instruction can be patched, False otherwise</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ed)</span>
<span class="sd"> &#39;test eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_never_branch_patch_available(0x100012ed)</span>
<span class="sd"> False</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ef)</span>
<span class="sd"> &#39;jg 0x100012f5&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_never_branch_patch_available(0x100012ef)</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">arch</span> <span class="ow">is</span> <span class="kc">None</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">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsNeverBranchPatchAvailable</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.is_always_branch_patch_available"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_always_branch_patch_available">[docs]</a> <span class="k">def</span> <span class="nf">is_always_branch_patch_available</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_always_branch_patch_available`` queries the architecture plugin to determine if the</span>
<span class="sd"> instruction at ``addr`` can be made to **always branch**. The actual logic of which is implemented in the</span>
<span class="sd"> ``perform_is_always_branch_patch_available`` in the corresponding architecture.</span>
<span class="sd"> :param int addr: the virtual address of the instruction to be patched</span>
<span class="sd"> :param Architecture arch: (optional) the architecture for the current view</span>
<span class="sd"> :return: True if the instruction can be patched, False otherwise</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ed)</span>
<span class="sd"> &#39;test eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_always_branch_patch_available(0x100012ed)</span>
<span class="sd"> False</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ef)</span>
<span class="sd"> &#39;jg 0x100012f5&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_always_branch_patch_available(0x100012ef)</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">arch</span> <span class="ow">is</span> <span class="kc">None</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">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsAlwaysBranchPatchAvailable</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.is_invert_branch_patch_available"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_invert_branch_patch_available">[docs]</a> <span class="k">def</span> <span class="nf">is_invert_branch_patch_available</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_invert_branch_patch_available`` queries the architecture plugin to determine if the instruction at ``addr``</span>
<span class="sd"> is a branch that can be inverted. The actual logic of which is implemented in the</span>
<span class="sd"> ``perform_is_invert_branch_patch_available`` in the corresponding architecture.</span>
<span class="sd"> :param int addr: the virtual address of the instruction to be patched</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True if the instruction can be patched, False otherwise</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ed)</span>
<span class="sd"> &#39;test eax, eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_invert_branch_patch_available(0x100012ed)</span>
<span class="sd"> False</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ef)</span>
<span class="sd"> &#39;jg 0x100012f5&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_invert_branch_patch_available(0x100012ef)</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">arch</span> <span class="ow">is</span> <span class="kc">None</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">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsInvertBranchPatchAvailable</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.is_skip_and_return_zero_patch_available"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_skip_and_return_zero_patch_available">[docs]</a> <span class="k">def</span> <span class="nf">is_skip_and_return_zero_patch_available</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_skip_and_return_zero_patch_available`` queries the architecture plugin to determine if the</span>
<span class="sd"> instruction at ``addr`` is similar to an x86 &quot;call&quot; instruction which can be made to return zero. The actual</span>
<span class="sd"> logic of which is implemented in the ``perform_is_skip_and_return_zero_patch_available`` in the corresponding</span>
<span class="sd"> architecture.</span>
<span class="sd"> :param int addr: the virtual address of the instruction to be patched</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True if the instruction can be patched, False otherwise</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f6)</span>
<span class="sd"> &#39;mov dword [0x10003020], eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_skip_and_return_zero_patch_available(0x100012f6)</span>
<span class="sd"> False</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012fb)</span>
<span class="sd"> &#39;call 0x10001629&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_skip_and_return_zero_patch_available(0x100012fb)</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">arch</span> <span class="ow">is</span> <span class="kc">None</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">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsSkipAndReturnZeroPatchAvailable</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.is_skip_and_return_value_patch_available"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_skip_and_return_value_patch_available">[docs]</a> <span class="k">def</span> <span class="nf">is_skip_and_return_value_patch_available</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_skip_and_return_value_patch_available`` queries the architecture plugin to determine if the</span>
<span class="sd"> instruction at ``addr`` is similar to an x86 &quot;call&quot; instruction which can be made to return a value. The actual</span>
<span class="sd"> logic of which is implemented in the ``perform_is_skip_and_return_value_patch_available`` in the corresponding</span>
<span class="sd"> architecture.</span>
<span class="sd"> :param int addr: the virtual address of the instruction to be patched</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True if the instruction can be patched, False otherwise</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012f6)</span>
<span class="sd"> &#39;mov dword [0x10003020], eax&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_skip_and_return_value_patch_available(0x100012f6)</span>
<span class="sd"> False</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012fb)</span>
<span class="sd"> &#39;call 0x10001629&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.is_skip_and_return_value_patch_available(0x100012fb)</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">arch</span> <span class="ow">is</span> <span class="kc">None</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">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNIsSkipAndReturnValuePatchAvailable</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.convert_to_nop"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.convert_to_nop">[docs]</a> <span class="k">def</span> <span class="nf">convert_to_nop</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``convert_to_nop`` converts the instruction at virtual address ``addr`` to a nop of the provided architecture.</span>
<span class="sd"> .. note:: This API performs a binary patch, analysis may need to be updated afterward. Additionally the binary\</span>
<span class="sd"> file must be saved in order to preserve the changes made.</span>
<span class="sd"> :param int addr: virtual address of the instruction to conver to nops</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True on success, False on falure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012fb)</span>
<span class="sd"> &#39;call 0x10001629&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.convert_to_nop(0x100012fb)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; #The above &#39;call&#39; instruction is 5 bytes, a nop in x86 is 1 byte,</span>
<span class="sd"> &gt;&gt;&gt; # thus 5 nops are used:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012fb)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_disassembly()</span>
<span class="sd"> &#39;mov byte [ebp-0x1c], al&#39;</span>
<span class="sd"> &quot;&quot;&quot;</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="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNConvertToNop</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.always_branch"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.always_branch">[docs]</a> <span class="k">def</span> <span class="nf">always_branch</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``always_branch`` convert the instruction of architecture ``arch`` at the virtual address ``addr`` to an</span>
<span class="sd"> unconditional branch.</span>
<span class="sd"> .. note:: This API performs a binary patch, analysis may need to be updated afterward. Additionally the binary\</span>
<span class="sd"> file must be saved in order to preserve the changes made.</span>
<span class="sd"> :param int addr: virtual address of the instruction to be modified</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True on success, False on falure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ef)</span>
<span class="sd"> &#39;jg 0x100012f5&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.always_branch(0x100012ef)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x100012ef)</span>
<span class="sd"> &#39;jmp 0x100012f5&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNAlwaysBranch</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.never_branch"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.never_branch">[docs]</a> <span class="k">def</span> <span class="nf">never_branch</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``never_branch`` convert the branch instruction of architecture ``arch`` at the virtual address ``addr`` to</span>
<span class="sd"> a fall through.</span>
<span class="sd"> .. note:: This API performs a binary patch, analysis may need to be updated afterward. Additionally the binary\</span>
<span class="sd"> file must be saved in order to preserve the changes made.</span>
<span class="sd"> :param int addr: virtual address of the instruction to be modified</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True on success, False on falure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x1000130e)</span>
<span class="sd"> &#39;jne 0x10001317&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.never_branch(0x1000130e)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x1000130e)</span>
<span class="sd"> &#39;nop&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNConvertToNop</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.invert_branch"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.invert_branch">[docs]</a> <span class="k">def</span> <span class="nf">invert_branch</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">arch</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``invert_branch`` convert the branch instruction of architecture ``arch`` at the virtual address ``addr`` to the</span>
<span class="sd"> inverse branch.</span>
<span class="sd"> .. note:: This API performs a binary patch, analysis may need to be updated afterward. Additionally the binary</span>
<span class="sd"> file must be saved in order to preserve the changes made.</span>
<span class="sd"> :param int addr: virtual address of the instruction to be modified</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True on success, False on falure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x1000130e)</span>
<span class="sd"> &#39;je 0x10001317&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.invert_branch(0x1000130e)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x1000130e)</span>
<span class="sd"> &#39;jne 0x10001317&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNInvertBranch</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.skip_and_return_value"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.skip_and_return_value">[docs]</a> <span class="k">def</span> <span class="nf">skip_and_return_value</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">value</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``skip_and_return_value`` convert the ``call`` instruction of architecture ``arch`` at the virtual address</span>
<span class="sd"> ``addr`` to the equivilent of returning a value.</span>
<span class="sd"> :param int addr: virtual address of the instruction to be modified</span>
<span class="sd"> :param int value: value to make the instruction *return*</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: True on success, False on falure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x1000132a)</span>
<span class="sd"> &#39;call 0x1000134a&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.skip_and_return_value(0x1000132a, 42)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; #The return value from x86 functions is stored in eax thus:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_disassembly(0x1000132a)</span>
<span class="sd"> &#39;mov eax, 0x2a&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSkipAndReturnValue</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">addr</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_instruction_length"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_instruction_length">[docs]</a> <span class="k">def</span> <span class="nf">get_instruction_length</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">arch</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_instruction_length`` returns the number of bytes in the instruction of Architecture ``arch`` at the virtual</span>
<span class="sd"> address ``addr``</span>
<span class="sd"> :param int addr: virtual address of the instruction query</span>
<span class="sd"> :param Architecture arch: (optional) the architecture of the instructions if different from the default</span>
<span class="sd"> :return: Number of bytes in instruction</span>
<span class="sd"> :rtype: int</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.get_instruction_length(0x100012f1)</span>
<span class="sd"> 2L</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="n">arch</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arch</span>
<span class="k">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetInstructionLength</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">addr</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.notify_data_written"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.notify_data_written">[docs]</a> <span class="k">def</span> <span class="nf">notify_data_written</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">core</span><span class="o">.</span><span class="n">BNNotifyDataWritten</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">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.notify_data_inserted"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.notify_data_inserted">[docs]</a> <span class="k">def</span> <span class="nf">notify_data_inserted</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">core</span><span class="o">.</span><span class="n">BNNotifyDataInserted</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">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.notify_data_removed"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.notify_data_removed">[docs]</a> <span class="k">def</span> <span class="nf">notify_data_removed</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">core</span><span class="o">.</span><span class="n">BNNotifyDataRemoved</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">offset</span><span class="p">,</span> <span class="n">length</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_strings"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_strings">[docs]</a> <span class="k">def</span> <span class="nf">get_strings</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="kc">None</span><span class="p">,</span> <span class="n">length</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_strings`` returns a list of strings defined in the binary in the optional virtual address range:</span>
<span class="sd"> ``start-(start+length)``</span>
<span class="sd"> :param int start: optional virtual address to start the string list from, defaults to start of the binary</span>
<span class="sd"> :param int length: optional length range to return strings from, defaults to length of the binary</span>
<span class="sd"> :return: a list of all strings or a list of strings defined between ``start`` and ``start+length``</span>
<span class="sd"> :rtype: list(str())</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_strings(0x1000004d, 1)</span>
<span class="sd"> [&lt;AsciiString: 0x1000004d, len 0x2c&gt;]</span>
<span class="sd"> &gt;&gt;&gt;</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="mi">0</span><span class="p">)</span>
<span class="k">if</span> <span class="n">start</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">strings</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetStrings</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">else</span><span class="p">:</span>
<span class="k">if</span> <span class="n">length</span> <span class="ow">is</span> <span class="kc">None</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">end</span> <span class="o">-</span> <span class="n">start</span>
<span class="n">strings</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetStringsInRange</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">length</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">StringReference</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">StringType</span><span class="p">(</span><span class="n">strings</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">strings</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">length</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeStringReferenceList</span><span class="p">(</span><span class="n">strings</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BinaryView.add_analysis_completion_event"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_analysis_completion_event">[docs]</a> <span class="k">def</span> <span class="nf">add_analysis_completion_event</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``add_analysis_completion_event`` sets up a call back function to be called when analysis has been completed.</span>
<span class="sd"> This is helpful when using ``update_analysis`` which does not wait for analysis completion before returning.</span>
<span class="sd"> The callee of this function is not resposible for maintaining the lifetime of the returned AnalysisCompletionEvent object.</span>
<span class="sd"> :param callable() callback: A function to be called with no parameters when analysis has completed.</span>
<span class="sd"> :return: An initialized AnalysisCompletionEvent object.</span>
<span class="sd"> :rtype: AnalysisCompletionEvent</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; def completionEvent():</span>
<span class="sd"> ... print(&quot;done&quot;)</span>
<span class="sd"> ...</span>
<span class="sd"> &gt;&gt;&gt; bv.add_analysis_completion_event(completionEvent)</span>
<span class="sd"> &lt;binaryninja.AnalysisCompletionEvent object at 0x10a2c9f10&gt;</span>
<span class="sd"> &gt;&gt;&gt; bv.update_analysis()</span>
<span class="sd"> done</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">AnalysisCompletionEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_next_function_start_after"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_next_function_start_after">[docs]</a> <span class="k">def</span> <span class="nf">get_next_function_start_after</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_next_function_start_after`` returns the virtual address of the Function that occurs after the virtual address</span>
<span class="sd"> ``addr``</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the next Function</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_function_start_after(bv.entry_point)</span>
<span class="sd"> 268441061L</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_function_start_after(bv.entry_point))</span>
<span class="sd"> &#39;0x100015e5L&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_function_start_after(0x100015e5))</span>
<span class="sd"> &#39;0x10001629L&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_function_start_after(0x10001629))</span>
<span class="sd"> &#39;0x1000165eL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNGetNextFunctionStartAfterAddress</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="BinaryView.get_next_basic_block_start_after"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_next_basic_block_start_after">[docs]</a> <span class="k">def</span> <span class="nf">get_next_basic_block_start_after</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_next_basic_block_start_after`` returns the virtual address of the BasicBlock that occurs after the virtual</span>
<span class="sd"> address ``addr``</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the next BasicBlock</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_basic_block_start_after(bv.entry_point))</span>
<span class="sd"> &#39;0x100014a8L&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_basic_block_start_after(0x100014a8))</span>
<span class="sd"> &#39;0x100014adL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNGetNextBasicBlockStartAfterAddress</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="BinaryView.get_next_data_after"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_next_data_after">[docs]</a> <span class="k">def</span> <span class="nf">get_next_data_after</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_next_data_after`` retrieves the virtual address of the next non-code byte.</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the next data byte which is data, not code</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_data_after(0x10000000))</span>
<span class="sd"> &#39;0x10000001L&#39;</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">BNGetNextDataAfterAddress</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="BinaryView.get_next_data_var_after"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_next_data_var_after">[docs]</a> <span class="k">def</span> <span class="nf">get_next_data_var_after</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_next_data_var_after`` retrieves the next virtual address of the next :py:Class:`DataVariable`</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the next :py:Class:`DataVariable`</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_data_var_after(0x10000000))</span>
<span class="sd"> &#39;0x1000003cL&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_data_var_at(0x1000003c)</span>
<span class="sd"> &lt;var 0x1000003c: int32_t&gt;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNGetNextDataVariableAfterAddress</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="BinaryView.get_previous_function_start_before"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_previous_function_start_before">[docs]</a> <span class="k">def</span> <span class="nf">get_previous_function_start_before</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_previous_function_start_before`` returns the virtual address of the Function that occurs prior to the</span>
<span class="sd"> virtual address provided</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the previous Function</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.entry_point)</span>
<span class="sd"> &#39;0x1000149fL&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_function_start_after(bv.entry_point))</span>
<span class="sd"> &#39;0x100015e5L&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_previous_function_start_before(0x100015e5))</span>
<span class="sd"> &#39;0x1000149fL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNGetPreviousFunctionStartBeforeAddress</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="BinaryView.get_previous_basic_block_start_before"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_previous_basic_block_start_before">[docs]</a> <span class="k">def</span> <span class="nf">get_previous_basic_block_start_before</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_previous_basic_block_start_before`` returns the virtual address of the BasicBlock that occurs prior to the</span>
<span class="sd"> provided virtual address</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the previous BasicBlock</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.entry_point)</span>
<span class="sd"> &#39;0x1000149fL&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_basic_block_start_after(bv.entry_point))</span>
<span class="sd"> &#39;0x100014a8L&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_previous_basic_block_start_before(0x100014a8))</span>
<span class="sd"> &#39;0x1000149fL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNGetPreviousBasicBlockStartBeforeAddress</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="BinaryView.get_previous_basic_block_end_before"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_previous_basic_block_end_before">[docs]</a> <span class="k">def</span> <span class="nf">get_previous_basic_block_end_before</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_previous_basic_block_end_before``</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the previous BasicBlock end</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.entry_point)</span>
<span class="sd"> &#39;0x1000149fL&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_next_basic_block_start_after(bv.entry_point))</span>
<span class="sd"> &#39;0x100014a8L&#39;</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_previous_basic_block_end_before(0x100014a8))</span>
<span class="sd"> &#39;0x100014a8L&#39;</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">BNGetPreviousBasicBlockEndBeforeAddress</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="BinaryView.get_previous_data_before"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_previous_data_before">[docs]</a> <span class="k">def</span> <span class="nf">get_previous_data_before</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_previous_data_before``</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the previous data (non-code) byte</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_previous_data_before(0x1000001))</span>
<span class="sd"> &#39;0x1000000L&#39;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNGetPreviousDataBeforeAddress</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="BinaryView.get_previous_data_var_before"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_previous_data_var_before">[docs]</a> <span class="k">def</span> <span class="nf">get_previous_data_var_before</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_previous_data_var_before``</span>
<span class="sd"> :param int addr: the virtual address to start looking from.</span>
<span class="sd"> :return: the virtual address of the previous :py:Class:`DataVariable`</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bv.get_previous_data_var_before(0x1000003c))</span>
<span class="sd"> &#39;0x10000000L&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_data_var_at(0x10000000)</span>
<span class="sd"> &lt;var 0x10000000: int16_t&gt;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNGetPreviousDataVariableBeforeAddress</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="BinaryView.get_linear_disassembly_position_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_linear_disassembly_position_at">[docs]</a> <span class="k">def</span> <span class="nf">get_linear_disassembly_position_at</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">settings</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_linear_disassembly_position_at`` instantiates a :py:class:`LinearDisassemblyPosition` object for use in</span>
<span class="sd"> :py:meth:`get_previous_linear_disassembly_lines` or :py:meth:`get_next_linear_disassembly_lines`.</span>
<span class="sd"> :param int addr: virtual address of linear disassembly position</span>
<span class="sd"> :param DisassemblySettings settings: an instantiated :py:class:`DisassemblySettings` object</span>
<span class="sd"> :return: An instantied :py:class:`LinearDisassemblyPosition` object for the provided virtual address</span>
<span class="sd"> :rtype: LinearDisassemblyPosition</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; settings = DisassemblySettings()</span>
<span class="sd"> &gt;&gt;&gt; pos = bv.get_linear_disassembly_position_at(0x1000149f, settings)</span>
<span class="sd"> &gt;&gt;&gt; lines = bv.get_previous_linear_disassembly_lines(pos, settings)</span>
<span class="sd"> &gt;&gt;&gt; lines</span>
<span class="sd"> [&lt;0x1000149a: pop esi&gt;, &lt;0x1000149b: pop ebp&gt;,</span>
<span class="sd"> &lt;0x1000149c: retn 0xc&gt;, &lt;0x1000149f: &gt;]</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">settings</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">handle</span>
<span class="n">pos</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetLinearDisassemblyPositionForAddress</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> <span class="n">settings</span><span class="p">)</span>
<span class="n">func</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">pos</span><span class="o">.</span><span class="n">function</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="bp">self</span><span class="p">,</span> <span class="n">pos</span><span class="o">.</span><span class="n">function</span><span class="p">)</span>
<span class="k">if</span> <span class="n">pos</span><span class="o">.</span><span class="n">block</span><span class="p">:</span>
<span class="n">block</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="bp">self</span><span class="p">,</span> <span class="n">pos</span><span class="o">.</span><span class="n">block</span><span class="p">)</span>
<span class="k">return</span> <span class="n">lineardisassembly</span><span class="o">.</span><span class="n">LinearDisassemblyPosition</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">pos</span><span class="o">.</span><span class="n">address</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_get_linear_disassembly_lines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">api</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
<span class="n">pos_obj</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNLinearDisassemblyPosition</span><span class="p">()</span>
<span class="n">pos_obj</span><span class="o">.</span><span class="n">function</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">pos_obj</span><span class="o">.</span><span class="n">block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">pos_obj</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">pos</span><span class="o">.</span><span class="n">address</span>
<span class="k">if</span> <span class="n">pos</span><span class="o">.</span><span class="n">function</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">pos_obj</span><span class="o">.</span><span class="n">function</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">pos</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">if</span> <span class="n">pos</span><span class="o">.</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">pos_obj</span><span class="o">.</span><span class="n">block</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNNewBasicBlockReference</span><span class="p">(</span><span class="n">pos</span><span class="o">.</span><span class="n">block</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">settings</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">settings</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="mi">0</span><span class="p">)</span>
<span class="n">lines</span> <span class="o">=</span> <span class="n">api</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">pos_obj</span><span class="p">,</span> <span class="n">settings</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">func</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</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">function</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="bp">self</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">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">function</span><span class="p">))</span>
<span class="k">if</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">block</span><span class="p">:</span>
<span class="n">block</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="bp">self</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">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">block</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">contents</span><span class="o">.</span><span class="n">addr</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">contents</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">contents</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">contents</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">contents</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">contents</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">contents</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">contents</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">contents</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">contents</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">contents</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">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">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">lineardisassembly</span><span class="o">.</span><span class="n">LinearDisassemblyLine</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">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">lines</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">lineOffset</span><span class="p">,</span> <span class="n">contents</span><span class="p">))</span>
<span class="n">func</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">block</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">pos_obj</span><span class="o">.</span><span class="n">function</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="bp">self</span><span class="p">,</span> <span class="n">pos_obj</span><span class="o">.</span><span class="n">function</span><span class="p">)</span>
<span class="k">if</span> <span class="n">pos_obj</span><span class="o">.</span><span class="n">block</span><span class="p">:</span>
<span class="n">block</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="bp">self</span><span class="p">,</span> <span class="n">pos_obj</span><span class="o">.</span><span class="n">block</span><span class="p">)</span>
<span class="n">pos</span><span class="o">.</span><span class="n">function</span> <span class="o">=</span> <span class="n">func</span>
<span class="n">pos</span><span class="o">.</span><span class="n">block</span> <span class="o">=</span> <span class="n">block</span>
<span class="n">pos</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">pos_obj</span><span class="o">.</span><span class="n">address</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeLinearDisassemblyLines</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 class="viewcode-block" id="BinaryView.get_previous_linear_disassembly_lines"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_previous_linear_disassembly_lines">[docs]</a> <span class="k">def</span> <span class="nf">get_previous_linear_disassembly_lines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_previous_linear_disassembly_lines`` retrieves a list of :py:class:`LinearDisassemblyLine` objects for the</span>
<span class="sd"> previous disassembly lines, and updates the LinearDisassemblyPosition passed in. This function can be called</span>
<span class="sd"> repeatedly to get more lines of linear disassembly.</span>
<span class="sd"> :param LinearDisassemblyPosition pos: Position to start retrieving linear disassembly lines from</span>
<span class="sd"> :param DisassemblySettings settings: DisassemblySettings display settings for the linear disassembly</span>
<span class="sd"> :return: a list of :py:class:`LinearDisassemblyLine` objects for the previous lines.</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; settings = DisassemblySettings()</span>
<span class="sd"> &gt;&gt;&gt; pos = bv.get_linear_disassembly_position_at(0x1000149a, settings)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_previous_linear_disassembly_lines(pos, settings)</span>
<span class="sd"> [&lt;0x10001488: push dword [ebp+0x10 {arg_c}]&gt;, ... , &lt;0x1000149a: &gt;]</span>
<span class="sd"> &gt;&gt;&gt; bv.get_previous_linear_disassembly_lines(pos, settings)</span>
<span class="sd"> [&lt;0x10001483: xor eax, eax {0x0}&gt;, ... , &lt;0x10001488: &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_linear_disassembly_lines</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetPreviousLinearDisassemblyLines</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">settings</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_next_linear_disassembly_lines"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_next_linear_disassembly_lines">[docs]</a> <span class="k">def</span> <span class="nf">get_next_linear_disassembly_lines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_next_linear_disassembly_lines`` retrieves a list of :py:class:`LinearDisassemblyLine` objects for the</span>
<span class="sd"> next disassembly lines, and updates the LinearDisassemblyPosition passed in. This function can be called</span>
<span class="sd"> repeatedly to get more lines of linear disassembly.</span>
<span class="sd"> :param LinearDisassemblyPosition pos: Position to start retrieving linear disassembly lines from</span>
<span class="sd"> :param DisassemblySettings settings: DisassemblySettings display settings for the linear disassembly</span>
<span class="sd"> :return: a list of :py:class:`LinearDisassemblyLine` objects for the next lines.</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; settings = DisassemblySettings()</span>
<span class="sd"> &gt;&gt;&gt; pos = bv.get_linear_disassembly_position_at(0x10001483, settings)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_linear_disassembly_lines(pos, settings)</span>
<span class="sd"> [&lt;0x10001483: xor eax, eax {0x0}&gt;, &lt;0x10001485: inc eax {0x1}&gt;, ... , &lt;0x10001488: &gt;]</span>
<span class="sd"> &gt;&gt;&gt; bv.get_next_linear_disassembly_lines(pos, settings)</span>
<span class="sd"> [&lt;0x10001488: push dword [ebp+0x10 {arg_c}]&gt;, ... , &lt;0x1000149a: &gt;]</span>
<span class="sd"> &gt;&gt;&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_linear_disassembly_lines</span><span class="p">(</span><span class="n">core</span><span class="o">.</span><span class="n">BNGetNextLinearDisassemblyLines</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">settings</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_linear_disassembly"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_linear_disassembly">[docs]</a> <span class="k">def</span> <span class="nf">get_linear_disassembly</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_linear_disassembly`` gets an iterator for all lines in the linear disassembly of the view for the given</span>
<span class="sd"> disassembly settings.</span>
<span class="sd"> .. note:: linear_disassembly doesn&#39;t just return disassembly it will return a single line from the linear view,\</span>
<span class="sd"> and thus will contain both data views, and disassembly.</span>
<span class="sd"> :param DisassemblySettings settings: instance specifying the desired output formatting.</span>
<span class="sd"> :return: An iterator containing formatted dissassembly lines.</span>
<span class="sd"> :rtype: LinearDisassemblyIterator</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; settings = DisassemblySettings()</span>
<span class="sd"> &gt;&gt;&gt; lines = bv.get_linear_disassembly(settings)</span>
<span class="sd"> &gt;&gt;&gt; for line in lines:</span>
<span class="sd"> ... print(line)</span>
<span class="sd"> ... break</span>
<span class="sd"> ...</span>
<span class="sd"> cf fa ed fe 07 00 00 01 ........</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">class</span> <span class="nc">LinearDisassemblyIterator</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">view</span><span class="p">,</span> <span class="n">settings</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">settings</span> <span class="o">=</span> <span class="n">settings</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">pos</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">get_linear_disassembly_position_at</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">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">)</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">lines</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">get_next_linear_disassembly_lines</span><span class="p">(</span><span class="n">pos</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="k">break</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
<span class="k">yield</span> <span class="n">line</span>
<span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="n">LinearDisassemblyIterator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">))</span></div>
<div class="viewcode-block" id="BinaryView.parse_type_string"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.parse_type_string">[docs]</a> <span class="k">def</span> <span class="nf">parse_type_string</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``parse_type_string`` converts `C-style` string into a :py:Class:`Type`.</span>
<span class="sd"> :param str text: `C-style` string of type to create</span>
<span class="sd"> :return: A tuple of a :py:Class:`Type` and type name</span>
<span class="sd"> :rtype: tuple(Type, QualifiedName)</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> (&lt;type: int32_t&gt;, &#39;foo&#39;)</span>
<span class="sd"> &gt;&gt;&gt;</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">BNQualifiedNameAndType</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="k">if</span> <span class="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNParseTypeString</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> <span class="n">result</span><span class="p">,</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">SyntaxError</span><span class="p">(</span><span class="n">error_str</span><span class="p">)</span>
<span class="n">type_obj</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">result</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="o">.</span><span class="n">platform</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">result</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeQualifiedNameAndType</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="k">return</span> <span class="n">type_obj</span><span class="p">,</span> <span class="n">name</span></div>
<div class="viewcode-block" id="BinaryView.get_type_by_name"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_type_by_name`` returns the defined type whose name corresponds with the provided ``name``</span>
<span class="sd"> :param QualifiedName name: Type name to lookup</span>
<span class="sd"> :return: A :py:Class:`Type` or None if the type does not exist</span>
<span class="sd"> :rtype: Type or None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_user_type(name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(name)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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">BNGetAnalysisTypeByName</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="o">.</span><span class="n">platform</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_type_by_id"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_type_by_id">[docs]</a> <span class="k">def</span> <span class="nf">get_type_by_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_type_by_id`` returns the defined type whose unique identifier corresponds with the provided ``id``</span>
<span class="sd"> :param str id: Unique identifier to lookup</span>
<span class="sd"> :return: A :py:Class:`Type` or None if the type does not exist</span>
<span class="sd"> :rtype: Type or None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; type_id = Type.generate_auto_type_id(&quot;source&quot;, name)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_type(type_id, name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_id(type_id)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisTypeById</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">id</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="o">.</span><span class="n">platform</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_type_name_by_id"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_type_name_by_id">[docs]</a> <span class="k">def</span> <span class="nf">get_type_name_by_id</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_type_name_by_id`` returns the defined type name whose unique identifier corresponds with the provided ``id``</span>
<span class="sd"> :param str id: Unique identifier to lookup</span>
<span class="sd"> :return: A QualifiedName or None if the type does not exist</span>
<span class="sd"> :rtype: QualifiedName or None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; type_id = Type.generate_auto_type_id(&quot;source&quot;, name)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_type(type_id, name, type)</span>
<span class="sd"> &#39;foo&#39;</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_name_by_id(type_id)</span>
<span class="sd"> &#39;foo&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAnalysisTypeNameById</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">id</span><span class="p">)</span>
<span class="n">result</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">name</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeQualifiedName</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</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="kc">None</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BinaryView.get_type_id"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_type_id">[docs]</a> <span class="k">def</span> <span class="nf">get_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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``get_type_id`` returns the unique indentifier of the defined type whose name corresponds with the</span>
<span class="sd"> provided ``name``</span>
<span class="sd"> :param QualifiedName name: Type name to lookup</span>
<span class="sd"> :return: The unique identifier of the type</span>
<span class="sd"> :rtype: str</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; type_id = Type.generate_auto_type_id(&quot;source&quot;, name)</span>
<span class="sd"> &gt;&gt;&gt; registered_name = bv.define_type(type_id, name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_id(registered_name) == type_id</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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">BNGetAnalysisTypeId</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="BinaryView.is_type_auto_defined"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.is_type_auto_defined">[docs]</a> <span class="k">def</span> <span class="nf">is_type_auto_defined</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``is_type_auto_defined`` queries the user type list of name. If name is not in the *user* type list then the name</span>
<span class="sd"> is considered an *auto* type.</span>
<span class="sd"> :param QualifiedName name: Name of type to query</span>
<span class="sd"> :return: True if the type is not a *user* type. False if the type is a *user* type.</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.is_type_auto_defined(&quot;foo&quot;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; bv.define_user_type(&quot;foo&quot;, bv.parse_type_string(&quot;struct {int x,y;}&quot;)[0])</span>
<span class="sd"> &gt;&gt;&gt; bv.is_type_auto_defined(&quot;foo&quot;)</span>
<span class="sd"> False</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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">BNIsAnalysisTypeAutoDefined</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="BinaryView.define_type"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_type">[docs]</a> <span class="k">def</span> <span class="nf">define_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_id</span><span class="p">,</span> <span class="n">default_name</span><span class="p">,</span> <span class="n">type_obj</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_type`` registers a :py:Class:`Type` ``type_obj`` of the given ``name`` in the global list of types for</span>
<span class="sd"> the current :py:Class:`BinaryView`. This method should only be used for automatically generated types.</span>
<span class="sd"> :param str type_id: Unique identifier for the automatically generated type</span>
<span class="sd"> :param QualifiedName default_name: Name of the type to be registered</span>
<span class="sd"> :param Type type_obj: Type object to be registered</span>
<span class="sd"> :return: Registered name of the type. May not be the same as the requested name if the user has renamed types.</span>
<span class="sd"> :rtype: QualifiedName</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; registered_name = bv.define_type(Type.generate_auto_type_id(&quot;source&quot;, name), name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(registered_name)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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">default_name</span><span class="p">)</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">()</span>
<span class="n">reg_name</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNDefineAnalysisType</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">type_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">type_obj</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="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">reg_name</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeQualifiedName</span><span class="p">(</span><span class="n">reg_name</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BinaryView.define_user_type"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.define_user_type">[docs]</a> <span class="k">def</span> <span class="nf">define_user_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">type_obj</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``define_user_type`` registers a :py:Class:`Type` ``type_obj`` of the given ``name`` in the global list of user</span>
<span class="sd"> types for the current :py:Class:`BinaryView`.</span>
<span class="sd"> :param QualifiedName name: Name of the user type to be registered</span>
<span class="sd"> :param Type type_obj: Type object to be registered</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_user_type(name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(name)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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">core</span><span class="o">.</span><span class="n">BNDefineUserAnalysisType</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="n">type_obj</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.undefine_type"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.undefine_type">[docs]</a> <span class="k">def</span> <span class="nf">undefine_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_id</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``undefine_type`` removes a :py:Class:`Type` from the global list of types for the current :py:Class:`BinaryView`</span>
<span class="sd"> :param str type_id: Unique identifier of type to be undefined</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; type_id = Type.generate_auto_type_id(&quot;source&quot;, name)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_type(type_id, name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(name)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &gt;&gt;&gt; bv.undefine_type(type_id)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(name)</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">BNUndefineAnalysisType</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">type_id</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.undefine_user_type"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.undefine_user_type">[docs]</a> <span class="k">def</span> <span class="nf">undefine_user_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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``undefine_user_type`` removes a :py:Class:`Type` from the global list of user types for the current</span>
<span class="sd"> :py:Class:`BinaryView`</span>
<span class="sd"> :param QualifiedName name: Name of user type to be undefined</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_user_type(name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(name)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &gt;&gt;&gt; bv.undefine_user_type(name)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(name)</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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">core</span><span class="o">.</span><span class="n">BNUndefineUserAnalysisType</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="BinaryView.rename_type"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.rename_type">[docs]</a> <span class="k">def</span> <span class="nf">rename_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``rename_type`` renames a type in the global list of types for the current :py:Class:`BinaryView`</span>
<span class="sd"> :param QualifiedName old_name: Existing name of type to be renamed</span>
<span class="sd"> :param QualifiedName new_name: New name of type to be renamed</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; type, name = bv.parse_type_string(&quot;int foo&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.define_user_type(name, type)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(&quot;foo&quot;)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &gt;&gt;&gt; bv.rename_type(&quot;foo&quot;, &quot;bar&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.get_type_by_name(&quot;bar&quot;)</span>
<span class="sd"> &lt;type: int32_t&gt;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">old_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">old_name</span><span class="p">)</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">()</span>
<span class="n">new_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">new_name</span><span class="p">)</span><span class="o">.</span><span class="n">_get_core_struct</span><span class="p">()</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRenameAnalysisType</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">old_name</span><span class="p">,</span> <span class="n">new_name</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.register_platform_types"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.register_platform_types">[docs]</a> <span class="k">def</span> <span class="nf">register_platform_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">platform</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``register_platform_types`` ensures that the platform-specific types for a :py:Class:`Platform` are available</span>
<span class="sd"> for the current :py:Class:`BinaryView`. This is automatically performed when adding a new function or setting</span>
<span class="sd"> the default platform.</span>
<span class="sd"> :param Platform platform: Platform containing types to be registered</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; platform = Platform[&quot;linux-x86&quot;]</span>
<span class="sd"> &gt;&gt;&gt; bv.register_platform_types(platform)</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">BNRegisterPlatformTypes</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">platform</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.find_next_data"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.find_next_data">[docs]</a> <span class="k">def</span> <span class="nf">find_next_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">flags</span> <span class="o">=</span> <span class="mi">0</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``find_next_data`` searchs for the bytes in data starting at the virtual address ``start`` either, case-sensitive,</span>
<span class="sd"> or case-insensitive.</span>
<span class="sd"> :param int start: virtual address to start searching from.</span>
<span class="sd"> :param str data: bytes to search for</span>
<span class="sd"> :param FindFlags flags: case-sensitivity flag, one of the following:</span>
<span class="sd"> ==================== ======================</span>
<span class="sd"> FindFlags Description</span>
<span class="sd"> ==================== ======================</span>
<span class="sd"> NoFindFlags Case-sensitive find</span>
<span class="sd"> FindCaseInsensitive Case-insensitive find</span>
<span class="sd"> ==================== ======================</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">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="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="n">ctypes</span><span class="o">.</span><span class="n">c_ulonglong</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">BNFindNextData</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="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryView.reanalyze"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.reanalyze">[docs]</a> <span class="k">def</span> <span class="nf">reanalyze</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``reanalyze`` causes all functions to be reanalyzed. This function does not wait for the analysis to finish.</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">BNReanalyzeAllFunctions</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="BinaryView.show_plain_text_report"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.show_plain_text_report">[docs]</a> <span class="k">def</span> <span class="nf">show_plain_text_report</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">contents</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNShowPlainTextReport</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">title</span><span class="p">,</span> <span class="n">contents</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.show_markdown_report"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.show_markdown_report">[docs]</a> <span class="k">def</span> <span class="nf">show_markdown_report</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">contents</span><span class="p">,</span> <span class="n">plaintext</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNShowMarkdownReport</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">title</span><span class="p">,</span> <span class="n">contents</span><span class="p">,</span> <span class="n">plaintext</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.show_html_report"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.show_html_report">[docs]</a> <span class="k">def</span> <span class="nf">show_html_report</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">contents</span><span class="p">,</span> <span class="n">plaintext</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNShowHTMLReport</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">title</span><span class="p">,</span> <span class="n">contents</span><span class="p">,</span> <span class="n">plaintext</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_address_input"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_address_input">[docs]</a> <span class="k">def</span> <span class="nf">get_address_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">current_address</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">current_address</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">current_address</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">offset</span>
<span class="n">value</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="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAddressInput</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">prompt</span><span class="p">,</span> <span class="n">title</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">current_address</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">value</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryView.add_auto_segment"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_auto_segment">[docs]</a> <span class="k">def</span> <span class="nf">add_auto_segment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">data_offset</span><span class="p">,</span> <span class="n">data_length</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNAddAutoSegment</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">length</span><span class="p">,</span> <span class="n">data_offset</span><span class="p">,</span> <span class="n">data_length</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.remove_auto_segment"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.remove_auto_segment">[docs]</a> <span class="k">def</span> <span class="nf">remove_auto_segment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRemoveAutoSegment</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">length</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.add_user_segment"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_user_segment">[docs]</a> <span class="k">def</span> <span class="nf">add_user_segment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">data_offset</span><span class="p">,</span> <span class="n">data_length</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNAddUserSegment</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">length</span><span class="p">,</span> <span class="n">data_offset</span><span class="p">,</span> <span class="n">data_length</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.remove_user_segment"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.remove_user_segment">[docs]</a> <span class="k">def</span> <span class="nf">remove_user_segment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNRemoveUserSegment</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">length</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.get_segment_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_segment_at">[docs]</a> <span class="k">def</span> <span class="nf">get_segment_at</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">segment</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSegment</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">BNGetSegmentAt</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> <span class="n">segment</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">Segment</span><span class="p">(</span><span class="n">segment</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="n">segment</span><span class="o">.</span><span class="n">length</span><span class="p">,</span> <span class="n">segment</span><span class="o">.</span><span class="n">dataOffset</span><span class="p">,</span> <span class="n">segment</span><span class="o">.</span><span class="n">dataLength</span><span class="p">,</span>
<span class="n">segment</span><span class="o">.</span><span class="n">flags</span><span class="p">,</span> <span class="n">segment</span><span class="o">.</span><span class="n">autoDefined</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BinaryView.get_address_for_data_offset"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_address_for_data_offset">[docs]</a> <span class="k">def</span> <span class="nf">get_address_for_data_offset</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">address</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="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetAddressForDataOffset</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">offset</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">address</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryView.add_auto_section"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_auto_section">[docs]</a> <span class="k">def</span> <span class="nf">add_auto_section</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">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">semantics</span> <span class="o">=</span> <span class="n">SectionSemantics</span><span class="o">.</span><span class="n">DefaultSectionSemantics</span><span class="p">,</span>
<span class="nb">type</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">align</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">entry_size</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">linked_section</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">info_section</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">info_data</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">BNAddAutoSection</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="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">semantics</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">align</span><span class="p">,</span> <span class="n">entry_size</span><span class="p">,</span> <span class="n">linked_section</span><span class="p">,</span>
<span class="n">info_section</span><span class="p">,</span> <span class="n">info_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.remove_auto_section"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.remove_auto_section">[docs]</a> <span class="k">def</span> <span class="nf">remove_auto_section</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">core</span><span class="o">.</span><span class="n">BNRemoveAutoSection</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="BinaryView.add_user_section"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.add_user_section">[docs]</a> <span class="k">def</span> <span class="nf">add_user_section</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">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">semantics</span> <span class="o">=</span> <span class="n">SectionSemantics</span><span class="o">.</span><span class="n">DefaultSectionSemantics</span><span class="p">,</span>
<span class="nb">type</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">align</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">entry_size</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">linked_section</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">info_section</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">info_data</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">BNAddUserSection</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="n">start</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="n">semantics</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">align</span><span class="p">,</span> <span class="n">entry_size</span><span class="p">,</span> <span class="n">linked_section</span><span class="p">,</span>
<span class="n">info_section</span><span class="p">,</span> <span class="n">info_data</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.remove_user_section"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.remove_user_section">[docs]</a> <span class="k">def</span> <span class="nf">remove_user_section</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">core</span><span class="o">.</span><span class="n">BNRemoveUserSection</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="BinaryView.get_sections_at"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_sections_at">[docs]</a> <span class="k">def</span> <span class="nf">get_sections_at</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">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">section_list</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetSectionsAt</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> <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">Section</span><span class="p">(</span><span class="n">section_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">section_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">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">start</span><span class="p">,</span>
<span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">length</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">linkedSection</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">infoSection</span><span class="p">,</span>
<span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">infoData</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">align</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">entrySize</span><span class="p">,</span>
<span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">semantics</span><span class="p">,</span> <span class="n">section_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">autoDefined</span><span class="p">))</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeSectionList</span><span class="p">(</span><span class="n">section_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></div>
<div class="viewcode-block" id="BinaryView.get_section_by_name"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_section_by_name">[docs]</a> <span class="k">def</span> <span class="nf">get_section_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">section</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNSection</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">BNGetSectionByName</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="n">section</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">Section</span><span class="p">(</span><span class="n">section</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">length</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">linkedSection</span><span class="p">,</span>
<span class="n">section</span><span class="o">.</span><span class="n">infoSection</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">infoData</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">align</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">entrySize</span><span class="p">,</span> <span class="n">section</span><span class="o">.</span><span class="n">semantics</span><span class="p">,</span>
<span class="n">section</span><span class="o">.</span><span class="n">autoDefined</span><span class="p">)</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNFreeSection</span><span class="p">(</span><span class="n">section</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BinaryView.get_unique_section_names"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.get_unique_section_names">[docs]</a> <span class="k">def</span> <span class="nf">get_unique_section_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name_list</span><span class="p">):</span>
<span class="n">incoming_names</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">name_list</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">name_list</span><span class="p">)):</span>
<span class="n">incoming_names</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">binaryninja</span><span class="o">.</span><span class="n">cstr</span><span class="p">(</span><span class="n">name_list</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="n">outgoing_names</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNGetUniqueSectionNames</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">incoming_names</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">name_list</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="nb">len</span><span class="p">(</span><span class="n">name_list</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">outgoing_names</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">outgoing_names</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">name_list</span><span class="p">))</span>
<span class="k">return</span> <span class="n">result</span></div>
<div class="viewcode-block" id="BinaryView.query_metadata"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.query_metadata">[docs]</a> <span class="k">def</span> <span class="nf">query_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> `query_metadata` retrieves a metadata associated with the given key stored in the current BinaryView.</span>
<span class="sd"> :param string key: key to query</span>
<span class="sd"> :rtype: metadata associated with the key</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.store_metadata(&quot;integer&quot;, 1337)</span>
<span class="sd"> &gt;&gt;&gt; bv.query_metadata(&quot;integer&quot;)</span>
<span class="sd"> 1337L</span>
<span class="sd"> &gt;&gt;&gt; bv.store_metadata(&quot;list&quot;, [1,2,3])</span>
<span class="sd"> &gt;&gt;&gt; bv.query_metadata(&quot;list&quot;)</span>
<span class="sd"> [1L, 2L, 3L]</span>
<span class="sd"> &gt;&gt;&gt; bv.store_metadata(&quot;string&quot;, &quot;my_data&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.query_metadata(&quot;string&quot;)</span>
<span class="sd"> &#39;my_data&#39;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">md_handle</span> <span class="o">=</span> <span class="n">core</span><span class="o">.</span><span class="n">BNBinaryViewQueryMetadata</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</span><span class="p">)</span>
<span class="k">if</span> <span class="n">md_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">key</span><span class="p">)</span>
<span class="k">return</span> <span class="n">metadata</span><span class="o">.</span><span class="n">Metadata</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">md_handle</span><span class="p">)</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryView.store_metadata"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.store_metadata">[docs]</a> <span class="k">def</span> <span class="nf">store_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">md</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> `store_metadata` stores an object for the given key in the current BinaryView. Objects stored using </span>
<span class="sd"> `store_metadata` can be retrieved when the database is reopend. Objects stored are not arbitrary python </span>
<span class="sd"> objects! The values stored must be able to be held in a Metadata object. See :py:class:`Metadata` </span>
<span class="sd"> for more information. Python objects could obviously be serialized using pickle but this intentionally</span>
<span class="sd"> a task left to the user since there is the potential security issues.</span>
<span class="sd"> :param string key: key value to associate the Metadata object with</span>
<span class="sd"> :param Varies md: object to store.</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.store_metadata(&quot;integer&quot;, 1337)</span>
<span class="sd"> &gt;&gt;&gt; bv.query_metadata(&quot;integer&quot;)</span>
<span class="sd"> 1337L</span>
<span class="sd"> &gt;&gt;&gt; bv.store_metadata(&quot;list&quot;, [1,2,3])</span>
<span class="sd"> &gt;&gt;&gt; bv.query_metadata(&quot;list&quot;)</span>
<span class="sd"> [1L, 2L, 3L]</span>
<span class="sd"> &gt;&gt;&gt; bv.store_metadata(&quot;string&quot;, &quot;my_data&quot;)</span>
<span class="sd"> &gt;&gt;&gt; bv.query_metadata(&quot;string&quot;)</span>
<span class="sd"> &#39;my_data&#39;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNBinaryViewStoreMetadata</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</span><span class="p">,</span> <span class="n">metadata</span><span class="o">.</span><span class="n">Metadata</span><span class="p">(</span><span class="n">md</span><span class="p">)</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryView.remove_metadata"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.remove_metadata">[docs]</a> <span class="k">def</span> <span class="nf">remove_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> `remove_metadata` removes the metadata associated with key from the current BinaryView.</span>
<span class="sd"> :param string key: key associated with metadata to remove from the BinaryView</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bv.store_metadata(&quot;integer&quot;, 1337)</span>
<span class="sd"> &gt;&gt;&gt; bv.remove_metadata(&quot;integer&quot;)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNBinaryViewRemoveMetadata</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</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>
<div class="viewcode-block" id="BinaryReader"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryReader.html#binaryninja.binaryview.BinaryReader">[docs]</a><span class="k">class</span> <span class="nc">BinaryReader</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 BinaryReader`` is a convenience class for reading binary data.</span>
<span class="sd"> BinaryReader can be instantiated as follows and the rest of the document will start from this context ::</span>
<span class="sd"> &gt;&gt;&gt; from binaryninja import *</span>
<span class="sd"> &gt;&gt;&gt; bv = BinaryViewType[&#39;Mach-O&#39;].open(&quot;/bin/ls&quot;)</span>
<span class="sd"> &gt;&gt;&gt; br = BinaryReader(bv)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read32())</span>
<span class="sd"> &#39;0xfeedfacfL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> Or using the optional endian parameter ::</span>
<span class="sd"> &gt;&gt;&gt; from binaryninja import *</span>
<span class="sd"> &gt;&gt;&gt; br = BinaryReader(bv, Endianness.BigEndian)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read32())</span>
<span class="sd"> &#39;0xcffaedfeL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="BinaryReader.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryReader.html#binaryninja.binaryview.BinaryReader.__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">endian</span> <span class="o">=</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">BNCreateBinaryReader</span><span class="p">(</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">endian</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetBinaryReaderEndianness</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="o">.</span><span class="n">endianness</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">BNSetBinaryReaderEndianness</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">endian</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">BNFreeBinaryReader</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">BinaryReader</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">BinaryReader</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">endianness</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The Endianness to read data. (read/write)</span>
<span class="sd"> :getter: returns the endianness of the reader</span>
<span class="sd"> :setter: sets the endianness of the reader (BigEndian or LittleEndian)</span>
<span class="sd"> :type: Endianness</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">BNGetBinaryReaderEndianness</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">@endianness</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">endianness</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">BNSetBinaryReaderEndianness</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">offset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The current read offset (read/write).</span>
<span class="sd"> :getter: returns the current internal offset</span>
<span class="sd"> :setter: sets the internal offset</span>
<span class="sd"> :type: 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">BNGetReaderPosition</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">BNSeekBinaryReader</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">eof</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Is end of file (read-only)</span>
<span class="sd"> :getter: returns boolean, true if end of file, false otherwise</span>
<span class="sd"> :type: 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">BNIsEndOfFile</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="BinaryReader.read"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.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">length</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read`` returns ``length`` bytes read from the current offset, adding ``length`` to offset.</span>
<span class="sd"> :param int length: number of bytes to read.</span>
<span class="sd"> :return: ``length`` bytes from current offset</span>
<span class="sd"> :rtype: str, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.read(8)</span>
<span class="sd"> &#39;\\xcf\\xfa\\xed\\xfe\\x07\\x00\\x00\\x01&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">dest</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="k">if</span> <span class="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNReadData</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">dest</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">dest</span><span class="o">.</span><span class="n">raw</span></div>
<div class="viewcode-block" id="BinaryReader.read8"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read8">[docs]</a> <span class="k">def</span> <span class="nf">read8</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read8`` returns a one byte integer from offet incrementing the offset.</span>
<span class="sd"> :return: byte at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; br.read8()</span>
<span class="sd"> 207</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ubyte</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">BNRead8</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">result</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryReader.read16"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read16">[docs]</a> <span class="k">def</span> <span class="nf">read16</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read16`` returns a two byte integer from offet incrementing the offset by two, using specified endianness.</span>
<span class="sd"> :return: a two byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read16())</span>
<span class="sd"> &#39;0xfacf&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ushort</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">BNRead16</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">result</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryReader.read32"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read32">[docs]</a> <span class="k">def</span> <span class="nf">read32</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read32`` returns a four byte integer from offet incrementing the offset by four, using specified endianness.</span>
<span class="sd"> :return: a four byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read32())</span>
<span class="sd"> &#39;0xfeedfacfL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint</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">BNRead32</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">result</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryReader.read64"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read64">[docs]</a> <span class="k">def</span> <span class="nf">read64</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read64`` returns an eight byte integer from offet incrementing the offset by eight, using specified endianness.</span>
<span class="sd"> :return: an eight byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read64())</span>
<span class="sd"> &#39;0x1000007feedfacfL&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</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="ow">not</span> <span class="n">core</span><span class="o">.</span><span class="n">BNRead64</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">result</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span></div>
<div class="viewcode-block" id="BinaryReader.read16le"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read16le">[docs]</a> <span class="k">def</span> <span class="nf">read16le</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read16le`` returns a two byte little endian integer from offet incrementing the offset by two.</span>
<span class="sd"> :return: a two byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Exmaple:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read16le())</span>
<span class="sd"> &#39;0xfacf&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</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="mi">2</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</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="o">!=</span> <span class="mi">2</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;&lt;H&quot;</span><span class="p">,</span> <span class="n">result</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
<div class="viewcode-block" id="BinaryReader.read32le"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read32le">[docs]</a> <span class="k">def</span> <span class="nf">read32le</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read32le`` returns a four byte little endian integer from offet incrementing the offset by four.</span>
<span class="sd"> :return: a four byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read32le())</span>
<span class="sd"> &#39;0xfeedfacf&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</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="mi">4</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</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="o">!=</span> <span class="mi">4</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;&lt;I&quot;</span><span class="p">,</span> <span class="n">result</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
<div class="viewcode-block" id="BinaryReader.read64le"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read64le">[docs]</a> <span class="k">def</span> <span class="nf">read64le</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read64le`` returns an eight byte little endian integer from offet incrementing the offset by eight.</span>
<span class="sd"> :return: a eight byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read64le())</span>
<span class="sd"> &#39;0x1000007feedfacf&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</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="mi">8</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</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="o">!=</span> <span class="mi">8</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;&lt;Q&quot;</span><span class="p">,</span> <span class="n">result</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
<div class="viewcode-block" id="BinaryReader.read16be"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read16be">[docs]</a> <span class="k">def</span> <span class="nf">read16be</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read16be`` returns a two byte big endian integer from offet incrementing the offset by two.</span>
<span class="sd"> :return: a two byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read16be())</span>
<span class="sd"> &#39;0xcffa&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</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="mi">2</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</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="o">!=</span> <span class="mi">2</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;&gt;H&quot;</span><span class="p">,</span> <span class="n">result</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
<div class="viewcode-block" id="BinaryReader.read32be"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read32be">[docs]</a> <span class="k">def</span> <span class="nf">read32be</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read32be`` returns a four byte big endian integer from offet incrementing the offset by four.</span>
<span class="sd"> :return: a four byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read32be())</span>
<span class="sd"> &#39;0xcffaedfe&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</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="mi">4</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</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="o">!=</span> <span class="mi">4</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;&gt;I&quot;</span><span class="p">,</span> <span class="n">result</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
<div class="viewcode-block" id="BinaryReader.read64be"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.read64be">[docs]</a> <span class="k">def</span> <span class="nf">read64be</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``read64be`` returns an eight byte big endian integer from offet incrementing the offset by eight.</span>
<span class="sd"> :return: a eight byte integer at offset.</span>
<span class="sd"> :rtype: int, or None on failure</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.read64be())</span>
<span class="sd"> &#39;0xcffaedfe07000001L&#39;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">result</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="mi">8</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</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="o">!=</span> <span class="mi">8</span><span class="p">):</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">return</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;&gt;Q&quot;</span><span class="p">,</span> <span class="n">result</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
<div class="viewcode-block" id="BinaryReader.seek"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.seek">[docs]</a> <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="n">offset</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``seek`` update internal offset to ``offset``.</span>
<span class="sd"> :param int offset: offset to set the internal offset to</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(br.offset)</span>
<span class="sd"> &#39;0x100000008L&#39;</span>
<span class="sd"> &gt;&gt;&gt; br.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.offset)</span>
<span class="sd"> &#39;0x100000000L&#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">BNSeekBinaryReader</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">offset</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryReader.seek_relative"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryReader.seek_relative">[docs]</a> <span class="k">def</span> <span class="nf">seek_relative</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``seek_relative`` updates the internal offset by ``offset``.</span>
<span class="sd"> :param int offset: offset to add to the internal offset</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(br.offset)</span>
<span class="sd"> &#39;0x100000008L&#39;</span>
<span class="sd"> &gt;&gt;&gt; br.seek_relative(-8)</span>
<span class="sd"> &gt;&gt;&gt; hex(br.offset)</span>
<span class="sd"> &#39;0x100000000L&#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">BNSeekBinaryReaderRelative</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">offset</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>
<div class="viewcode-block" id="BinaryWriter"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryWriter.html#binaryninja.binaryview.BinaryWriter">[docs]</a><span class="k">class</span> <span class="nc">BinaryWriter</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 BinaryWriter`` is a convenience class for writing binary data.</span>
<span class="sd"> BinaryWriter can be instantiated as follows and the rest of the document will start from this context ::</span>
<span class="sd"> &gt;&gt;&gt; from binaryninja import *</span>
<span class="sd"> &gt;&gt;&gt; bv = BinaryViewType[&#39;Mach-O&#39;].open(&quot;/bin/ls&quot;)</span>
<span class="sd"> &gt;&gt;&gt; br = BinaryReader(bv)</span>
<span class="sd"> &gt;&gt;&gt; bw = BinaryWriter(bv)</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> Or using the optional endian parameter ::</span>
<span class="sd"> &gt;&gt;&gt; from binaryninja import *</span>
<span class="sd"> &gt;&gt;&gt; br = BinaryReader(bv, Endianness.BigEndian)</span>
<span class="sd"> &gt;&gt;&gt; bw = BinaryWriter(bv, Endianness.BigEndian)</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</span>
<div class="viewcode-block" id="BinaryWriter.__init__"><a class="viewcode-back" href="../../binaryninja.binaryview.BinaryWriter.html#binaryninja.binaryview.BinaryWriter.__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">endian</span> <span class="o">=</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">BNCreateBinaryWriter</span><span class="p">(</span><span class="n">view</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
<span class="k">if</span> <span class="n">endian</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">core</span><span class="o">.</span><span class="n">BNSetBinaryWriterEndianness</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="o">.</span><span class="n">endianness</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">BNSetBinaryWriterEndianness</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">endian</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">BNFreeBinaryWriter</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">BinaryWriter</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">BinaryWriter</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">endianness</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The Endianness to written data. (read/write)</span>
<span class="sd"> :getter: returns the endianness of the reader</span>
<span class="sd"> :setter: sets the endianness of the reader (BigEndian or LittleEndian)</span>
<span class="sd"> :type: Endianness</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">BNGetBinaryWriterEndianness</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">@endianness</span><span class="o">.</span><span class="n">setter</span>
<span class="k">def</span> <span class="nf">endianness</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">BNSetBinaryWriterEndianness</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">offset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The current write offset (read/write).</span>
<span class="sd"> :getter: returns the current internal offset</span>
<span class="sd"> :setter: sets the internal offset</span>
<span class="sd"> :type: 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">BNGetWriterPosition</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">BNSeekBinaryWriter</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>
<div class="viewcode-block" id="BinaryWriter.write"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.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">value</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write`` writes ``len(value)`` bytes to the internal offset, without regard to endianness.</span>
<span class="sd"> :param str value: bytes to be written at current offset</span>
<span class="sd"> :return: boolean True on success, False on failure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bw.write(&quot;AAAA&quot;)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; br.read(4)</span>
<span class="sd"> &#39;AAAA&#39;</span>
<span class="sd"> &gt;&gt;&gt;</span>
<span class="sd"> &quot;&quot;&quot;</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="nb">len</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">buf</span><span class="p">,</span> <span class="n">value</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">return</span> <span class="n">core</span><span class="o">.</span><span class="n">BNWriteData</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">buf</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 class="viewcode-block" id="BinaryWriter.write8"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write8">[docs]</a> <span class="k">def</span> <span class="nf">write8</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write8`` lowest order byte from the integer ``value`` to the current offset.</span>
<span class="sd"> :param str value: bytes to be written at current offset</span>
<span class="sd"> :return: boolean</span>
<span class="sd"> :rtype: int</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; bw.write8(0x42)</span>
<span class="sd"> True</span>
<span class="sd"> &gt;&gt;&gt; br.read(1)</span>
<span class="sd"> &#39;B&#39;</span>
<span class="sd"> &gt;&gt;&gt;</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">BNWrite8</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></div>
<div class="viewcode-block" id="BinaryWriter.write16"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write16">[docs]</a> <span class="k">def</span> <span class="nf">write16</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write16`` writes the lowest order two bytes from the integer ``value`` to the current offset, using internal endianness.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</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">BNWrite16</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></div>
<div class="viewcode-block" id="BinaryWriter.write32"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write32">[docs]</a> <span class="k">def</span> <span class="nf">write32</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write32`` writes the lowest order four bytes from the integer ``value`` to the current offset, using internal endianness.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</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">BNWrite32</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></div>
<div class="viewcode-block" id="BinaryWriter.write64"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write64">[docs]</a> <span class="k">def</span> <span class="nf">write64</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write64`` writes the lowest order eight bytes from the integer ``value`` to the current offset, using internal endianness.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</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">BNWrite64</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></div>
<div class="viewcode-block" id="BinaryWriter.write16le"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write16le">[docs]</a> <span class="k">def</span> <span class="nf">write16le</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write16le`` writes the lowest order two bytes from the little endian integer ``value`` to the current offset.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&lt;H&quot;</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">write</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryWriter.write32le"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write32le">[docs]</a> <span class="k">def</span> <span class="nf">write32le</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write32le`` writes the lowest order four bytes from the little endian integer ``value`` to the current offset.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&lt;I&quot;</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">write</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryWriter.write64le"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write64le">[docs]</a> <span class="k">def</span> <span class="nf">write64le</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write64le`` writes the lowest order eight bytes from the little endian integer ``value`` to the current offset.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&lt;Q&quot;</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">write</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryWriter.write16be"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write16be">[docs]</a> <span class="k">def</span> <span class="nf">write16be</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write16be`` writes the lowest order two bytes from the big endian integer ``value`` to the current offset.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&gt;H&quot;</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">write</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryWriter.write32be"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write32be">[docs]</a> <span class="k">def</span> <span class="nf">write32be</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write32be`` writes the lowest order four bytes from the big endian integer ``value`` to the current offset.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&gt;I&quot;</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">write</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryWriter.write64be"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.write64be">[docs]</a> <span class="k">def</span> <span class="nf">write64be</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``write64be`` writes the lowest order eight bytes from the big endian integer ``value`` to the current offset.</span>
<span class="sd"> :param int value: integer value to write.</span>
<span class="sd"> :return: boolean True on success, False on failure.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">&quot;&gt;Q&quot;</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">write</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryWriter.seek"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.seek">[docs]</a> <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="n">offset</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``seek`` update internal offset to ``offset``.</span>
<span class="sd"> :param int offset: offset to set the internal offset to</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bw.offset)</span>
<span class="sd"> &#39;0x100000008L&#39;</span>
<span class="sd"> &gt;&gt;&gt; bw.seek(0x100000000)</span>
<span class="sd"> &gt;&gt;&gt; hex(bw.offset)</span>
<span class="sd"> &#39;0x100000000L&#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">BNSeekBinaryWriter</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">offset</span><span class="p">)</span></div>
<div class="viewcode-block" id="BinaryWriter.seek_relative"><a class="viewcode-back" href="../../binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryWriter.seek_relative">[docs]</a> <span class="k">def</span> <span class="nf">seek_relative</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="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``seek_relative`` updates the internal offset by ``offset``.</span>
<span class="sd"> :param int offset: offset to add to the internal offset</span>
<span class="sd"> :rtype: None</span>
<span class="sd"> :Example:</span>
<span class="sd"> &gt;&gt;&gt; hex(bw.offset)</span>
<span class="sd"> &#39;0x100000008L&#39;</span>
<span class="sd"> &gt;&gt;&gt; bw.seek_relative(-8)</span>
<span class="sd"> &gt;&gt;&gt; hex(bw.offset)</span>
<span class="sd"> &#39;0x100000000L&#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">BNSeekBinaryWriterRelative</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">offset</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>