about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2022-03-24 10:52:48 +0100
committerGitHub <noreply@github.com>2022-03-24 10:52:48 +0100
commit299fa40894236163a13051fe3b52b3d2e6951e8a (patch)
tree6d502cae4c62e48f4e254df60560c543cdc0c938
parent0601bbed4cb32098f216b4a2af0310e996e69a56 (diff)
parentaa863605984cde8ae14eb14cf62027e6af4b22ad (diff)
downloadfocaccia-miasm-299fa40894236163a13051fe3b52b3d2e6951e8a.tar.gz
focaccia-miasm-299fa40894236163a13051fe3b52b3d2e6951e8a.zip
Merge pull request #1420 from CLOVIS-AI/examples-update
Updates to the examples
-rw-r--r--example/expression/constant_propagation.py2
-rw-r--r--example/expression/graph_dataflow.py8
-rw-r--r--example/expression/interfer.py2
-rw-r--r--example/expression/simplification_add.py21
-rw-r--r--example/expression/solve_condition_stp.py25
-rw-r--r--example/symbol_exec/depgraph.py2
6 files changed, 34 insertions, 26 deletions
diff --git a/example/expression/constant_propagation.py b/example/expression/constant_propagation.py
index 20c2c3cc..e79adb44 100644
--- a/example/expression/constant_propagation.py
+++ b/example/expression/constant_propagation.py
@@ -16,7 +16,7 @@ from miasm.core.locationdb import LocationDB
 
 
 
-parser = ArgumentParser("Constant expression propagation")
+parser = ArgumentParser(description="Constant expression propagation")
 parser.add_argument('filename', help="File to analyze")
 parser.add_argument('address', help="Starting address for disassembly engine")
 parser.add_argument('-s', "--simplify", action="store_true",
diff --git a/example/expression/graph_dataflow.py b/example/expression/graph_dataflow.py
index f40646bc..dc09eae4 100644
--- a/example/expression/graph_dataflow.py
+++ b/example/expression/graph_dataflow.py
@@ -13,7 +13,7 @@ from miasm.analysis.data_flow import DeadRemoval
 from miasm.core.locationdb import LocationDB
 
 
-parser = ArgumentParser("Simple expression use for generating dataflow graph")
+parser = ArgumentParser(description="Simple expression use for generating dataflow graph")
 parser.add_argument("filename", help="File to analyse")
 parser.add_argument("addr", help="Function's address")
 parser.add_argument("-s", "--symb", help="Symbolic execution mode",
@@ -158,8 +158,10 @@ gen_block_data_flow_graph(lifter, ircfg, ad, block_flow_cb)
 print('*' * 40)
 print("""
  View with:
-dotty dataflow.dot
+dotty data.dot
+ or
+xdot data.dot
  or
  Generate ps with pdf:
-dot -Tps dataflow_xx.dot -o graph.ps
+dot -Tps data.dot -o graph.ps
 """)
diff --git a/example/expression/interfer.py b/example/expression/interfer.py
index 5055e1f6..7e660b9b 100644
--- a/example/expression/interfer.py
+++ b/example/expression/interfer.py
@@ -3,6 +3,8 @@ from miasm.expression.expression import *
 
 """
 Test memory interferences
+
+A memory interference may appear when two ExprMem objects relate to the same area of memory: editing one may impact the other.
 """
 
 a32 = ExprId('a', 32)
diff --git a/example/expression/simplification_add.py b/example/expression/simplification_add.py
index ff28d56e..c24c15e3 100644
--- a/example/expression/simplification_add.py
+++ b/example/expression/simplification_add.py
@@ -1,7 +1,11 @@
 from __future__ import print_function
+
 import miasm.expression.expression as m2_expr
-from miasm.expression.simplifications import expr_simp
-from pdb import pm
+from miasm.expression.simplifications import ExpressionSimplifier
+
+# Creates an expression simplifier that (by default) applies no simplifications.
+# Other instances with simplifications enabled by default can be found in `expressions/simplifications.py`.
+simp = ExpressionSimplifier()
 
 print("""
 Expression simplification demo: Adding a simplification:
@@ -10,6 +14,7 @@ a + a + a == a * 3
 More detailed examples can be found in miasm/expression/simplification*.
 """)
 
+
 # Define the simplification method
 ## @expr_simp is the current expression simplifier instance
 ## (for recursive simplifications)
@@ -31,17 +36,17 @@ def simp_add_mul(expr_simp, expr):
         # Do not simplify
         return expr
 
+
 a = m2_expr.ExprId('a', 32)
 base_expr = a + a + a
 print("Without adding the simplification:")
-print("\t%s = %s" % (base_expr, expr_simp(base_expr)))
+print("\t%s = %s" % (base_expr, simp(base_expr)))
 
 # Enable pass
-expr_simp.enable_passes({m2_expr.ExprOp: [simp_add_mul]})
+simp.enable_passes({m2_expr.ExprOp: [simp_add_mul]})
 
 print("After adding the simplification:")
-print("\t%s = %s" % (base_expr, expr_simp(base_expr)))
+print("\t%s = %s" % (base_expr, simp(base_expr)))
 
-# Automatic fail
-assert(expr_simp(base_expr) == m2_expr.ExprOp("*", a,
-                                              m2_expr.ExprInt(3, a.size)))
+assert simp(base_expr) == m2_expr.ExprOp("*", a,
+                                         m2_expr.ExprInt(3, a.size))
diff --git a/example/expression/solve_condition_stp.py b/example/expression/solve_condition_stp.py
index 634e2337..60ebf387 100644
--- a/example/expression/solve_condition_stp.py
+++ b/example/expression/solve_condition_stp.py
@@ -1,21 +1,20 @@
 from __future__ import print_function
-import sys
+
 import subprocess
+import sys
 from optparse import OptionParser
-from pdb import pm
 
 from future.utils import viewitems
 
-from miasm.analysis.machine import Machine
 from miasm.analysis.binary import Container
+from miasm.analysis.machine import Machine
+from miasm.core import parse_asm
+from miasm.core.locationdb import LocationDB
 from miasm.expression.expression import ExprInt, ExprCond, ExprId, \
     get_expr_ids, ExprAssign, ExprLoc
-from miasm.core.bin_stream import bin_stream_str
-from miasm.ir.symbexec import SymbolicExecutionEngine, get_block
 from miasm.expression.simplifications import expr_simp
-from miasm.core import parse_asm
-from miasm.ir.translators.translator  import Translator
-from miasm.core.locationdb import LocationDB
+from miasm.ir.symbexec import SymbolicExecutionEngine, get_block
+from miasm.ir.translators.translator import Translator
 
 machine = Machine("x86_32")
 
@@ -181,14 +180,14 @@ if __name__ == '__main__':
         out.append('(check-sat)')
         open('out.dot', 'w').write('\n'.join(out))
         try:
-            cases = subprocess.check_output(["/home/serpilliere/tools/stp/stp",
+            cases = subprocess.check_output(["stp",
                                              "-p", '--SMTLIB2',
                                              "out.dot"])
-        except OSError:
-            print("Cannot find stp binary!")
+        except OSError as e:
+            print("Cannot execute 'stp':", e.strerror)
             break
-        for c in cases.split('\n'):
-            if c.startswith('ASSERT'):
+        for c in cases.split(b'\n'):
+            if c.startswith(b'ASSERT'):
                 all_cases.add((addr, c))
 
     print('*' * 40, 'ALL COND', '*' * 40)
diff --git a/example/symbol_exec/depgraph.py b/example/symbol_exec/depgraph.py
index 21c6fe45..a7df2e25 100644
--- a/example/symbol_exec/depgraph.py
+++ b/example/symbol_exec/depgraph.py
@@ -12,7 +12,7 @@ from miasm.analysis.depgraph import DependencyGraph
 from miasm.expression.expression import ExprMem, ExprId, ExprInt
 from miasm.core.locationdb import LocationDB
 
-parser = ArgumentParser("Dependency grapher")
+parser = ArgumentParser(description="Dependency grapher")
 parser.add_argument("filename", help="Binary to analyse")
 parser.add_argument("func_addr", help="Function address")
 parser.add_argument("target_addr", help="Address to start")