angr 9.2.79__py3-none-win_amd64.whl → 9.2.80__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of angr might be problematic. Click here for more details.
- angr/__init__.py +1 -1
- angr/__main__.py +30 -5
- angr/analyses/cfg/cfg_fast.py +128 -3
- angr/analyses/decompiler/ail_simplifier.py +8 -0
- angr/analyses/decompiler/clinic.py +6 -2
- angr/analyses/decompiler/decompilation_options.py +9 -0
- angr/analyses/decompiler/optimization_passes/__init__.py +4 -0
- angr/analyses/decompiler/optimization_passes/multi_simplifier.py +0 -12
- angr/analyses/decompiler/optimization_passes/optimization_pass.py +8 -5
- angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +2 -25
- angr/analyses/decompiler/peephole_optimizations/eager_eval.py +14 -2
- angr/analyses/decompiler/region_simplifiers/ifelse.py +19 -10
- angr/analyses/decompiler/region_simplifiers/region_simplifier.py +4 -2
- angr/analyses/decompiler/utils.py +8 -5
- angr/analyses/propagator/engine_ail.py +3 -1
- angr/analyses/propagator/engine_vex.py +45 -0
- angr/analyses/propagator/propagator.py +24 -15
- angr/analyses/reaching_definitions/engine_ail.py +1 -1
- angr/analyses/stack_pointer_tracker.py +55 -0
- angr/callable.py +4 -4
- angr/engines/light/engine.py +30 -18
- angr/knowledge_plugins/propagations/propagation_model.py +4 -0
- angr/knowledge_plugins/propagations/states.py +54 -4
- angr/lib/angr_native.dll +0 -0
- angr/procedures/definitions/__init__.py +2 -1
- angr/procedures/definitions/ntoskrnl.py +9 -0
- angr/procedures/win32_kernel/ExAllocatePool.py +12 -0
- angr/procedures/win32_kernel/ExFreePoolWithTag.py +7 -0
- angr/procedures/win32_kernel/__init__.py +3 -0
- angr/storage/memory_mixins/__init__.py +1 -1
- angr/utils/funcid.py +128 -0
- {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/METADATA +6 -6
- {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/RECORD +40 -35
- tests/analyses/cfg/test_cfgfast.py +24 -0
- tests/analyses/decompiler/test_decompiler.py +128 -0
- tests/analyses/test_constantpropagation.py +34 -0
- {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/LICENSE +0 -0
- {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/WHEEL +0 -0
- {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/entry_points.txt +0 -0
- {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.80
|
|
4
4
|
Summary: A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries
|
|
5
5
|
Home-page: https://github.com/angr/angr
|
|
6
6
|
License: BSD-2-Clause
|
|
@@ -17,13 +17,13 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Requires-Dist: CppHeaderParser
|
|
19
19
|
Requires-Dist: GitPython
|
|
20
|
-
Requires-Dist: ailment ==9.2.
|
|
21
|
-
Requires-Dist: archinfo ==9.2.
|
|
20
|
+
Requires-Dist: ailment ==9.2.80
|
|
21
|
+
Requires-Dist: archinfo ==9.2.80
|
|
22
22
|
Requires-Dist: cachetools
|
|
23
23
|
Requires-Dist: capstone ==5.0.0.post1
|
|
24
24
|
Requires-Dist: cffi >=1.14.0
|
|
25
|
-
Requires-Dist: claripy ==9.2.
|
|
26
|
-
Requires-Dist: cle ==9.2.
|
|
25
|
+
Requires-Dist: claripy ==9.2.80
|
|
26
|
+
Requires-Dist: cle ==9.2.80
|
|
27
27
|
Requires-Dist: dpkt
|
|
28
28
|
Requires-Dist: itanium-demangler
|
|
29
29
|
Requires-Dist: mulpyplexer
|
|
@@ -32,7 +32,7 @@ Requires-Dist: networkx !=2.8.1,>=2.0
|
|
|
32
32
|
Requires-Dist: protobuf >=3.19.0
|
|
33
33
|
Requires-Dist: psutil
|
|
34
34
|
Requires-Dist: pycparser >=2.18
|
|
35
|
-
Requires-Dist: pyvex ==9.2.
|
|
35
|
+
Requires-Dist: pyvex ==9.2.80
|
|
36
36
|
Requires-Dist: rich >=13.1.0
|
|
37
37
|
Requires-Dist: rpyc
|
|
38
38
|
Requires-Dist: sortedcontainers
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
angr/__init__.py,sha256=
|
|
2
|
-
angr/__main__.py,sha256=
|
|
1
|
+
angr/__init__.py,sha256=YKGLZGGH4jmUKaEsavWpDSsKfykPCtumRvvjgfG3S6A,3851
|
|
2
|
+
angr/__main__.py,sha256=kaO56Te6h73SM94BVtASF00q5QbBbC3eBs9poVc9sVI,1887
|
|
3
3
|
angr/annocfg.py,sha256=dK5JAdN4Ig_jgxTBZeZXwk3kAS4-IQUvE6T02GBZTDQ,10818
|
|
4
4
|
angr/blade.py,sha256=YySrLqj2Y3-td9FJnkjDqYyFvAeGhc5a5lrGoHKOT2A,15562
|
|
5
5
|
angr/block.py,sha256=FnsFukbXhLzYPW5zJRXMxNmvCRU4LFlFIaJwo5sAqkY,14468
|
|
6
|
-
angr/callable.py,sha256
|
|
6
|
+
angr/callable.py,sha256=-E9HelavtRY1xPAxCVXl120H8Rb7Myd2IcrXtWZFAOU,6034
|
|
7
7
|
angr/calling_conventions.py,sha256=Ri-xAayzVrtoWvKXO01nsV8VM14iOxIWfouwBQIYe8s,90745
|
|
8
8
|
angr/code_location.py,sha256=ow0Z8OF8FNBPZs4PUmRej_5aHaKTmUIanYPro3iHAMs,5476
|
|
9
9
|
angr/codenode.py,sha256=J_lZNz8akZzBI4ok0KpI1eNGvZbCt_quOAeUplaEB6I,3784
|
|
@@ -52,7 +52,7 @@ angr/analyses/loopfinder.py,sha256=X8F4Dcu2UHDXt6JifK6EfROAeeczyca6V7zxx9z7GpQ,7
|
|
|
52
52
|
angr/analyses/proximity_graph.py,sha256=y30caPk5N4zOzkf8TF7AEOo0AR_yDhEFJrQB89_CTnM,16323
|
|
53
53
|
angr/analyses/reassembler.py,sha256=b4EnHx36yS2DNq8nes7zr2_9SozqXbeTTx2538TCm84,100415
|
|
54
54
|
angr/analyses/soot_class_hierarchy.py,sha256=Cs_LRV1RLXH6sF_E49tJWg9Inxvv_o5mB-VaIBcbQJg,8941
|
|
55
|
-
angr/analyses/stack_pointer_tracker.py,sha256=
|
|
55
|
+
angr/analyses/stack_pointer_tracker.py,sha256=jep87hqMSNHCf_6-ACO4uLkTHWuxGHG8BCH2r0HcOWI,28174
|
|
56
56
|
angr/analyses/static_hooker.py,sha256=g57k_fwxgS4oTzslyCpOf4faG17E685a4-4SpEz8Ges,1711
|
|
57
57
|
angr/analyses/veritesting.py,sha256=Mlx4EskA-bgNcj80U6rnkzoaGmX-Qwrg531CzsYKohs,25224
|
|
58
58
|
angr/analyses/vfg.py,sha256=Wl5SYY8Em_HFcyidsgglTfBHHzIwG1pYbXdo5FV-ZFU,75252
|
|
@@ -65,7 +65,7 @@ angr/analyses/cfg/cfg.py,sha256=1JpPGlqXXRFwE0tk26xjabT_-dq-kqAxMv7o6-DUhp4,3146
|
|
|
65
65
|
angr/analyses/cfg/cfg_arch_options.py,sha256=YONHg6y-h6BCsBkJK9tuxb94DDfeOoy9CUS-LVyyDyg,3112
|
|
66
66
|
angr/analyses/cfg/cfg_base.py,sha256=o3mAO3ha5DPWFiE_TeUll38ldal-p0IUOyXY4lNnncc,121889
|
|
67
67
|
angr/analyses/cfg/cfg_emulated.py,sha256=Fi3rDN5ByxhO-H4Y7qn-3WZgBG12JGyvxcWmrD_FnFQ,152842
|
|
68
|
-
angr/analyses/cfg/cfg_fast.py,sha256=
|
|
68
|
+
angr/analyses/cfg/cfg_fast.py,sha256=934GeSMtcFgQ3CWoGF_9CfpaJaSnbqU83B4bid_QmaQ,216369
|
|
69
69
|
angr/analyses/cfg/cfg_fast_soot.py,sha256=eA_P-OY3gRRNj2BBgSPMsB_llGyFFCNW3VyGZ2uiMoM,26047
|
|
70
70
|
angr/analyses/cfg/cfg_job_base.py,sha256=3IQE_Iy17xtGfsIkrKc2ERIakAYiNdLtRb_jwOGQtHU,5989
|
|
71
71
|
angr/analyses/cfg/segment_list.py,sha256=XM-rcLHkl008U5xu9pkVCenhcHWAFBKwVdDLa-kGFgY,20467
|
|
@@ -90,15 +90,15 @@ angr/analyses/data_dep/data_dependency_analysis.py,sha256=12WNVAdY196JZf37AfkdPD
|
|
|
90
90
|
angr/analyses/data_dep/dep_nodes.py,sha256=BCpIPECRJhlX2sMO2LtaXxSD25-Edw2vXQOVcx5i55w,4650
|
|
91
91
|
angr/analyses/data_dep/sim_act_location.py,sha256=4f8jp-ahitxoHCCOSSFGJ1olvNWuHyiE6iOLa5DA0k4,1527
|
|
92
92
|
angr/analyses/decompiler/__init__.py,sha256=RkTvvTwAGpaLdGSTgXxVrKmGEDRxqLCNSB-b8fM6fBM,540
|
|
93
|
-
angr/analyses/decompiler/ail_simplifier.py,sha256=
|
|
93
|
+
angr/analyses/decompiler/ail_simplifier.py,sha256=Z5N37LNpwY0UomVLWdNXek7_5A7JtKk5on1f57oM2WI,59447
|
|
94
94
|
angr/analyses/decompiler/ailgraph_walker.py,sha256=sBz9Cn0GtdpuFt7R9y3oX6NFvETQTZRh6N80eM9ZdJQ,1595
|
|
95
95
|
angr/analyses/decompiler/block_simplifier.py,sha256=X5kO97A1bEwSUfbwgj1cSO56qkhwPQZnIFi1DKMZQoo,17199
|
|
96
96
|
angr/analyses/decompiler/call_counter.py,sha256=V3TIaSvLUy9vLEWErnvlCS--_ubGWQAeU0tqq6XYeOU,1205
|
|
97
97
|
angr/analyses/decompiler/callsite_maker.py,sha256=B2lajS20_cTDWvUc-Py-2rP6UybNLd-qAjkuDJMIlX8,14938
|
|
98
|
-
angr/analyses/decompiler/clinic.py,sha256=
|
|
98
|
+
angr/analyses/decompiler/clinic.py,sha256=02DQ_D6ExnBX7z34fvMUcdmwavU7ay22uEYFIVreLPk,72754
|
|
99
99
|
angr/analyses/decompiler/condition_processor.py,sha256=ts7-dM1ckqDRh28Vv3YhKhNYUHdsavJah4Ta3_tb-uo,48658
|
|
100
100
|
angr/analyses/decompiler/decompilation_cache.py,sha256=NveTVs6IY3TTdgsLvTb3ktftM4n0NrAJIkqjXqQ3550,1119
|
|
101
|
-
angr/analyses/decompiler/decompilation_options.py,sha256=
|
|
101
|
+
angr/analyses/decompiler/decompilation_options.py,sha256=CWhqwcgnt-iJCNLVPSeZ-ALlvFtU7oiL9NjLTmu2Qyc,7946
|
|
102
102
|
angr/analyses/decompiler/decompiler.py,sha256=pzVD1mzbdlfwKF0kIPI7B1Whlo1h8QNvx3GIxmC1PoA,19955
|
|
103
103
|
angr/analyses/decompiler/empty_node_remover.py,sha256=O1IcaEFd5oH04nxfvIuh-e2Zbnctw7lSSHrae4NRMSM,7320
|
|
104
104
|
angr/analyses/decompiler/expression_counters.py,sha256=P4RbtnyEy2lJnNUw_G702W-AIGaL4MszZ5fdrritwwg,2867
|
|
@@ -111,11 +111,11 @@ angr/analyses/decompiler/redundant_label_remover.py,sha256=kDGGFWWV61I5fbASiTQTH
|
|
|
111
111
|
angr/analyses/decompiler/region_identifier.py,sha256=SQEhgXy5nHkQl6WRDTLZTtbRhxkXzT1IiBCzvP1K-p8,44389
|
|
112
112
|
angr/analyses/decompiler/region_walker.py,sha256=lTfweYbY4_a2f2yGztTKG6JtU1jXf-kaz-NHbX9nkXE,717
|
|
113
113
|
angr/analyses/decompiler/sequence_walker.py,sha256=mw4RG-Act5_no_RyQcsxWZwva-n7FdH2a7w_uItGUpI,8428
|
|
114
|
-
angr/analyses/decompiler/utils.py,sha256=
|
|
114
|
+
angr/analyses/decompiler/utils.py,sha256=wq19Xmh2nr3TuAcik6kjAgij9Hh16lVLl2RsYG-LO8w,24471
|
|
115
115
|
angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=wbWqZ8xG6ZvzEApkAwMsNQFC-iwF3swG1YJsaf1cIrQ,102
|
|
116
116
|
angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=PjfduEkFVcSBKUfGouVM5dekA4kO4OBUses58ewJnCk,20488
|
|
117
117
|
angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=gWezEKB7A_YnlfUDs8V8D5syoYAyIXSIme1BKQRoouM,498
|
|
118
|
-
angr/analyses/decompiler/optimization_passes/__init__.py,sha256=
|
|
118
|
+
angr/analyses/decompiler/optimization_passes/__init__.py,sha256=1DGVJnbKhpL18ypOT_ItGFhDdGCPgaQ0hiAclwJvi_k,2930
|
|
119
119
|
angr/analyses/decompiler/optimization_passes/base_ptr_save_simplifier.py,sha256=bjpEMW-Lqj5XW9NWUikGPcRn5scKNc8VvEjVMXxAuq8,5289
|
|
120
120
|
angr/analyses/decompiler/optimization_passes/const_derefs.py,sha256=FEoiprXxns-3S0nFaIWm2DBW_aDMq3GZ-VOG3CIqcMw,10593
|
|
121
121
|
angr/analyses/decompiler/optimization_passes/div_simplifier.py,sha256=1yTI1mmFHBMxADbrKxk9IAf3TpuNCaTLVQqWveyIx1I,17364
|
|
@@ -127,13 +127,13 @@ angr/analyses/decompiler/optimization_passes/ite_expr_converter.py,sha256=-6znFC
|
|
|
127
127
|
angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=l571GUDoCt4hZ2RHBNVUraLl-ODmP_kb11bLKwbCIB0,6762
|
|
128
128
|
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=MQNtGU8paXdhTcfvYvBeTplX-htqs0WI6o-72me8fmg,34328
|
|
129
129
|
angr/analyses/decompiler/optimization_passes/mod_simplifier.py,sha256=A9pPly7otXJlLkSbItU0wvjGGu6rUsNpcFw3bzy4DjY,3046
|
|
130
|
-
angr/analyses/decompiler/optimization_passes/multi_simplifier.py,sha256=
|
|
131
|
-
angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=
|
|
130
|
+
angr/analyses/decompiler/optimization_passes/multi_simplifier.py,sha256=Lxu_Af27B8HwIFYK_DuaIrqseO7yIeHsxkh3ztWeM1w,10342
|
|
131
|
+
angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=1gVX8BvwuSGRsx33vPyS__bjz25dxoHKGOglpNpQb8w,7819
|
|
132
132
|
angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py,sha256=2_-nVKkvClCDykVDd29CRIT1ZCPdYBlSi96h9yrSOw4,7398
|
|
133
133
|
angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py,sha256=_sTaGMQMFa5ATQIvNyL05UK8gCi_SaOckrZKyHZ2vfs,6470
|
|
134
134
|
angr/analyses/decompiler/optimization_passes/ret_deduplicator.py,sha256=CAOGRra4PB-FCjTxQs2e-lEQ6z_CMvHsrubpbyahv0M,7797
|
|
135
135
|
angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py,sha256=diqUO-k1hq9OzuC7OLMyJJODhy3i1c5Tb7d9f7lx6mU,12147
|
|
136
|
-
angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=
|
|
136
|
+
angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=tIMZ4kDutUY-5jFrfA34tf3NufE7n33PcAlxz_mSebE,12304
|
|
137
137
|
angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py,sha256=lwLc9QpOCTdSIb-0SK0hdxi2gzpABTk2kzdwBY20UOo,2980
|
|
138
138
|
angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=pe_zErF540hOybDNC0ij9B3ASQOck9PYNa64hzSEp3U,3208
|
|
139
139
|
angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py,sha256=Whptbt1qujPPRsNX8kJaobHTwgvym7SPu-tC2wBynBs,1727
|
|
@@ -154,7 +154,7 @@ angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py,sha256=KLd
|
|
|
154
154
|
angr/analyses/decompiler/peephole_optimizations/constant_derefs.py,sha256=SjSE3kTrPYPjsoY_pW3nZPk9IXrJwNR4lfQ9nV-QVKg,984
|
|
155
155
|
angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py,sha256=vzROAUvKUrQQmwUXJ-0WyFr1v5f8EPBgjeXIpWhtDak,2578
|
|
156
156
|
angr/analyses/decompiler/peephole_optimizations/conv_shl_shr.py,sha256=0IHIk7uxIC70140k3VcXlnx4QcunAeoETXF1ZgJi2Pk,2070
|
|
157
|
-
angr/analyses/decompiler/peephole_optimizations/eager_eval.py,sha256=
|
|
157
|
+
angr/analyses/decompiler/peephole_optimizations/eager_eval.py,sha256=0B7Mc6A_n1EWoof7k5C0zl7RZ-NTK76mm01ocB1VEGg,9183
|
|
158
158
|
angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py,sha256=ymP9tDU4NipGOdFWsmLHrR6dKVcEFiaTgM1-L_dfmOM,2015
|
|
159
159
|
angr/analyses/decompiler/peephole_optimizations/inlined_strcpy.py,sha256=x8ZS-ThnUiJPBacRFpOZ3gBqixamrHSCCZSR-L5jyC8,2601
|
|
160
160
|
angr/analyses/decompiler/peephole_optimizations/inlined_strcpy_consolidation.py,sha256=vrXAaYKT99LJK5BLKlyQ7xtzQx6hIujqTAv0-Ur1CWo,4676
|
|
@@ -185,10 +185,10 @@ angr/analyses/decompiler/region_simplifiers/cascading_ifs.py,sha256=dbAn1fde1-ki
|
|
|
185
185
|
angr/analyses/decompiler/region_simplifiers/expr_folding.py,sha256=lCNR9UTzKaUSGmL0Fzv0QDcDubmrGey47eNC3yteUEE,24008
|
|
186
186
|
angr/analyses/decompiler/region_simplifiers/goto.py,sha256=JaZE8cDQ1aHqGCZAvNHoO2REf1Qz_PL9JTwQ4E_DvIo,5938
|
|
187
187
|
angr/analyses/decompiler/region_simplifiers/if_.py,sha256=qDkZTrRjDzI4CX6vwEcaddmaPvG4sWHn373VVwmf0e0,5034
|
|
188
|
-
angr/analyses/decompiler/region_simplifiers/ifelse.py,sha256=
|
|
188
|
+
angr/analyses/decompiler/region_simplifiers/ifelse.py,sha256=nWUow7p_TOgFQuUgWXQcH2qSFfxUWJBgkslvajhTbn0,3681
|
|
189
189
|
angr/analyses/decompiler/region_simplifiers/loop.py,sha256=U4FvlMaOfsOtLmtifa8j_V6T5VNhtH_lg6zOqBdaQ0Q,5861
|
|
190
190
|
angr/analyses/decompiler/region_simplifiers/node_address_finder.py,sha256=OjcyE-zTx0ayBn250hlMuOJv_fH7uj3FGW3X9RKarno,565
|
|
191
|
-
angr/analyses/decompiler/region_simplifiers/region_simplifier.py,sha256=
|
|
191
|
+
angr/analyses/decompiler/region_simplifiers/region_simplifier.py,sha256=odeRyT8VItRPIFuUPNaRnA936LwxwXOFbM_HhehK90I,8209
|
|
192
192
|
angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py,sha256=0NBa_tpz03ZcaHYUNKXSVZjF3TVmqs2FUc2TdVGwsqc,24545
|
|
193
193
|
angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py,sha256=HGIiC6c3C91VfcqxUHe9aTsRohwmMXOHZH_G_dbwwx4,3327
|
|
194
194
|
angr/analyses/decompiler/structured_codegen/__init__.py,sha256=Glc4jBCr7lZckltN9XZdSvMrGHf0swXFyKTr_QQKdWE,290
|
|
@@ -242,11 +242,11 @@ angr/analyses/identifier/functions/strncmp.py,sha256=XlqTTLjfPRj7LSw3-xHoH4SJyNi
|
|
|
242
242
|
angr/analyses/identifier/functions/strncpy.py,sha256=1WUrhXMS5Sd5rfgBJbChZD_BZ_D47Z_H4AZwriyqDO0,2008
|
|
243
243
|
angr/analyses/identifier/functions/strtol.py,sha256=Py_6Y9rR5dfy53LX8w9WktSBaxdyPlbrcLEiV6cWfHs,2426
|
|
244
244
|
angr/analyses/propagator/__init__.py,sha256=5-UKSiAtYocLzmQWXPzxyBnPui_c8P_r617KDwtRnNw,43
|
|
245
|
-
angr/analyses/propagator/engine_ail.py,sha256=
|
|
245
|
+
angr/analyses/propagator/engine_ail.py,sha256=ktZlhXS7_WPOecalGliRv5p8TeW1r6Ie18iiLtsl3wY,62565
|
|
246
246
|
angr/analyses/propagator/engine_base.py,sha256=0j5NzJ9jArF4KeysBeiPoo_RKyCvlgn-i3inSZt1cyc,1735
|
|
247
|
-
angr/analyses/propagator/engine_vex.py,sha256=
|
|
247
|
+
angr/analyses/propagator/engine_vex.py,sha256=I32McxCOk5C30ts-E3i-BDaxlnI27HzchmRWMKsu-oY,12199
|
|
248
248
|
angr/analyses/propagator/outdated_definition_walker.py,sha256=OJnI9rlyutyy2qHMTqnrnQJCXKcBHvgwHfiqlWDECiY,6890
|
|
249
|
-
angr/analyses/propagator/propagator.py,sha256=
|
|
249
|
+
angr/analyses/propagator/propagator.py,sha256=aoTheBycoH8Fa07Uy6bZYQqtjbiGe90_c6QiwVIolfI,16071
|
|
250
250
|
angr/analyses/propagator/tmpvar_finder.py,sha256=GqP1lm-_ez4AvXraDt1BQ1o7GvdjLI7j-TUL5k-lKbU,442
|
|
251
251
|
angr/analyses/propagator/top_checker_mixin.py,sha256=8NujgeNTiaSb6JQ3J01P5QJSnQ_mnF88m7rXlATIruQ,359
|
|
252
252
|
angr/analyses/propagator/values.py,sha256=b8zg2VIPJoZj4qtF3_XRfoxA7LjXxO9OIkqZ3y0Wc_M,1991
|
|
@@ -254,7 +254,7 @@ angr/analyses/propagator/vex_vars.py,sha256=O0W7GekEZIVwiNiOdyu-BuxCZmHFZPh_ho7j
|
|
|
254
254
|
angr/analyses/reaching_definitions/__init__.py,sha256=3itfNz4b0XcTDJJbU10gZfSuqUAx0s8poicXhXZUpys,1989
|
|
255
255
|
angr/analyses/reaching_definitions/call_trace.py,sha256=5y8VtU-5-2ISamCkok6zoMahWASO2TBQYl5Q0pgeLGw,2217
|
|
256
256
|
angr/analyses/reaching_definitions/dep_graph.py,sha256=iwhYTySlIPkXOuYvEZzUme947Veq2ogrtD6_1ODqzVQ,14966
|
|
257
|
-
angr/analyses/reaching_definitions/engine_ail.py,sha256=
|
|
257
|
+
angr/analyses/reaching_definitions/engine_ail.py,sha256=VqTC3GH1nBbW_nmsWG-Wvrl_R0I5eVwysIrg31eFx6o,44826
|
|
258
258
|
angr/analyses/reaching_definitions/engine_vex.py,sha256=CvxXI4pVX7K_IhbWMGL-cNcfS2qEaAF-s4LGopb_yHs,42097
|
|
259
259
|
angr/analyses/reaching_definitions/external_codeloc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
260
260
|
angr/analyses/reaching_definitions/function_handler.py,sha256=TB6yW0TBQnTdAv3SOBcui6dSCBMoviivKx0v8COY12w,26839
|
|
@@ -322,7 +322,7 @@ angr/engines/syscall.py,sha256=LNMC3zyis3OiWC7_8Zn1blMw1EDib5FjUqepXlaWDTI,2177
|
|
|
322
322
|
angr/engines/unicorn.py,sha256=gf7LjjWyaaujqSuCq3d-BGm8t5sdZjzsJeBevGfdiLw,24447
|
|
323
323
|
angr/engines/light/__init__.py,sha256=j9vH2fU9MaNVQ8NT3Ek3Tj2zkGlVxlKyzia8zVTofYs,186
|
|
324
324
|
angr/engines/light/data.py,sha256=jZBAJxor2zg5m4s63joSrjUs8H-OeHBZiqZmc3dqEQQ,23132
|
|
325
|
-
angr/engines/light/engine.py,sha256=
|
|
325
|
+
angr/engines/light/engine.py,sha256=19FLnb5xu_KKZGbQFc2pwdSoYWjQn0KBccp1lXfETS4,40791
|
|
326
326
|
angr/engines/pcode/__init__.py,sha256=UwMEwXQvHXIIgedJn2ZOvBBEgfHg2rfREBSpcTSXCZ4,83
|
|
327
327
|
angr/engines/pcode/behavior.py,sha256=Ecmw9uGAnrzjlvW6RPob0j-dpm0OTag8CRzSC5U-0fo,28649
|
|
328
328
|
angr/engines/pcode/cc.py,sha256=LrYXVexTgG3iCvYMRZfHvkT94vO447dVzcvSXdumVHA,2923
|
|
@@ -460,8 +460,8 @@ angr/knowledge_plugins/key_definitions/uses.py,sha256=ApcPloldFy5Y9ucl5IK5fo4tbe
|
|
|
460
460
|
angr/knowledge_plugins/propagations/__init__.py,sha256=YOHJ2PMz-egzFMA2H0eKa5FDMadJcp5DSdncVwQxv84,100
|
|
461
461
|
angr/knowledge_plugins/propagations/prop_value.py,sha256=pfRYRHb1wEEhrSiSlOzuZDY9ZHeIQZM2yjA3JazPs_8,7706
|
|
462
462
|
angr/knowledge_plugins/propagations/propagation_manager.py,sha256=5DohQ6GiLmRfA4whx7dsKImBLCajQnLBwKieddf55J0,2112
|
|
463
|
-
angr/knowledge_plugins/propagations/propagation_model.py,sha256=
|
|
464
|
-
angr/knowledge_plugins/propagations/states.py,sha256=
|
|
463
|
+
angr/knowledge_plugins/propagations/propagation_model.py,sha256=rK5qbWREPpUtEzOBRFn2bZviN6Ux-HlN0zF_inlg104,2786
|
|
464
|
+
angr/knowledge_plugins/propagations/states.py,sha256=s6ltT-ZOrFC-usGvmCF3v2q53SFnP6OqFsQxN6ypqjw,37320
|
|
465
465
|
angr/knowledge_plugins/structured_code/__init__.py,sha256=9edAAAVroOR8nNBThuRjOnjVUIqavnObO7mlUttxInA,43
|
|
466
466
|
angr/knowledge_plugins/structured_code/manager.py,sha256=ov4BUMuYANS8Lz2QhmXgAo5wpGlWU9AmcTQcgYbD0HE,2126
|
|
467
467
|
angr/knowledge_plugins/sync/__init__.py,sha256=RN3y0UhYax-GdPyAhondMXEBuWIu-enHjxjpdTKhQ58,44
|
|
@@ -473,7 +473,7 @@ angr/knowledge_plugins/xrefs/__init__.py,sha256=-5A2h048WTRu6Et7q7bqlc-AyBXNuJ9A
|
|
|
473
473
|
angr/knowledge_plugins/xrefs/xref.py,sha256=w4wjDFl4xtJYOtJplp9s1AIX3wI1RE71po3ufh1M4aY,4963
|
|
474
474
|
angr/knowledge_plugins/xrefs/xref_manager.py,sha256=GYF9N1t4JxkDNGAwrVLo4_NF51P4gqiuQ21F0IbloF0,4026
|
|
475
475
|
angr/knowledge_plugins/xrefs/xref_types.py,sha256=VR3xLQQ-gUg25oX0OL3BJHyQRlZh2A8syBac9ZMS9n4,271
|
|
476
|
-
angr/lib/angr_native.dll,sha256=
|
|
476
|
+
angr/lib/angr_native.dll,sha256=11cK_YtAgS6M65LdUcp19DHZtE6qxMmhDBZCZe0o_II,19209728
|
|
477
477
|
angr/misc/__init__.py,sha256=Ct-Q6-c-Frdz5Ihkqmou3j_1jyJi8WJXlQxs-gPQg0Y,237
|
|
478
478
|
angr/misc/ansi.py,sha256=TKrx7d_MViChHh5RBR2VLufNrujTUioJWsZS5ugk8k4,807
|
|
479
479
|
angr/misc/autoimport.py,sha256=6WT-Z6wf5NiacQhKZmR4d2bPOvNrokA7Wg0g2MUXSuw,2371
|
|
@@ -498,7 +498,7 @@ angr/procedures/cgc/fdwait.py,sha256=bYccIjGqa-pHXNz_DFVdg6zDTkBk_QX0u9pCwJvOP9o
|
|
|
498
498
|
angr/procedures/cgc/random.py,sha256=1dyl58S21I3-LMGi8HlD9VZ0VN97wA7pBIeU1fZi4QI,2334
|
|
499
499
|
angr/procedures/cgc/receive.py,sha256=qNi7ZX-411q3i-j4z-ylo6jPP5oCky--IP_CyTScWHI,3758
|
|
500
500
|
angr/procedures/cgc/transmit.py,sha256=CSWX4FLeW2-42_QVo2FMdmV9GJuYqgtTybtYbcMgDCQ,2368
|
|
501
|
-
angr/procedures/definitions/__init__.py,sha256=
|
|
501
|
+
angr/procedures/definitions/__init__.py,sha256=uSTPfnB2QYSOWdr27tPoCUOnArGXxW7W5oiKKsZJKdQ,27764
|
|
502
502
|
angr/procedures/definitions/cgc.py,sha256=tEYT-9MOmlBxehMYP32Fog9t8GczMdA84ienDwcPdyM,460
|
|
503
503
|
angr/procedures/definitions/glibc.py,sha256=JYvXHEkNMJhyzoCvnIJs6Aa3u_pTtjHuw-mbCkNKWBY,394113
|
|
504
504
|
angr/procedures/definitions/gnulib.py,sha256=fH8KbaUj6bVOG_cv-JiaffWkVN-YHFbWwvRlE8Mkr9c,1081
|
|
@@ -507,6 +507,7 @@ angr/procedures/definitions/linux_kernel.py,sha256=uaTTlulqv2eeUmIkQ70-pvLT2-ay7
|
|
|
507
507
|
angr/procedures/definitions/linux_loader.py,sha256=sW7eQ7Dk2co_9x0ql-YsWYB8JYs0YQjGz-IM_ukp5c4,219
|
|
508
508
|
angr/procedures/definitions/msvcr.py,sha256=9Wvo9U8ARM93oYmID5pBSCAr9Yg0TxjXAj7Gi_Lks2s,601
|
|
509
509
|
angr/procedures/definitions/ntdll.py,sha256=2X_f1WvpBncRS6nN6PwatRKtgdn6cMYb4AnvLEhCYN0,404
|
|
510
|
+
angr/procedures/definitions/ntoskrnl.py,sha256=u4ZBSOArfie7Sp8jUNv_L5n_7lmQVRR2w6RoPf6RR_s,317
|
|
510
511
|
angr/procedures/definitions/parse_syscalls_from_local_system.py,sha256=9OcLLDNrNb6CifvveD_yTzfhMYEN2iK46nNNjMyz3I0,1795
|
|
511
512
|
angr/procedures/definitions/parse_win32json.py,sha256=zFfq0SpBjgzIDUisbzA4zTvISGslOEPHe4V2zDbqepE,84681
|
|
512
513
|
angr/procedures/definitions/user32.py,sha256=AeiY02ZFLAbGvC1BNoHvmC_-xfvdjFNzZqd6dgd60kE,350
|
|
@@ -1075,6 +1076,9 @@ angr/procedures/win32/local_storage.py,sha256=SgULhROe0gRyS9BkV03WGWGfEe1WPB63hA
|
|
|
1075
1076
|
angr/procedures/win32/mutex.py,sha256=JEDgitKG4BPQGeKwU8wHJr0hgWiWQYjbfrNr_-BJ15c,177
|
|
1076
1077
|
angr/procedures/win32/sim_time.py,sha256=Y1wdm1vlquRGiO5gXjXFsfBLIJigO_YxaUuTE8whSns,5332
|
|
1077
1078
|
angr/procedures/win32/system_paths.py,sha256=SZMzkyquBzfNiSMCjjCSgVK5bcAg4fliqKuhXNxMdAs,1238
|
|
1079
|
+
angr/procedures/win32_kernel/ExAllocatePool.py,sha256=G8AyUTGrTnGlWI9AAD0UTFc_EUU24_HCxHmyN0QW8lY,423
|
|
1080
|
+
angr/procedures/win32_kernel/ExFreePoolWithTag.py,sha256=YT30Vkm0E8Zbew6XEVx2vHnxRVdG8m1KC7w5KRrdGLA,225
|
|
1081
|
+
angr/procedures/win32_kernel/__init__.py,sha256=I4WgVVCg4PuqChPe8nayrzLxDYJBFAwHdql8sWAD0Ps,70
|
|
1078
1082
|
angr/procedures/win_user32/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1079
1083
|
angr/procedures/win_user32/chars.py,sha256=YBbvG34k7SpbTsqEFCbXAqpyH3TjHFhjrG10Bv_HQ7I,352
|
|
1080
1084
|
angr/procedures/win_user32/keyboard.py,sha256=Ds3qarw_TgOkIMquV_f_lxdxJfHoFRwwwHasbFZGQDM,377
|
|
@@ -1132,7 +1136,7 @@ angr/storage/__init__.py,sha256=X3JnQg95SqAqahP1x10Kk5E0OXxyNlV2Xk3NKyXzykA,182
|
|
|
1132
1136
|
angr/storage/file.py,sha256=S55K2p9s1IHtmbpR5iUF3V5HorSgBiiHWnFdtSmjZfU,48219
|
|
1133
1137
|
angr/storage/memory_object.py,sha256=U0T-XB7CxUqISODY6o2WONjiThHyzFKBjZ8D0pWLPj4,5663
|
|
1134
1138
|
angr/storage/pcap.py,sha256=8n30ui0KO7qx_RgmGFL_cBYMF5AlQ5LzVFeCh9ODU6c,1940
|
|
1135
|
-
angr/storage/memory_mixins/__init__.py,sha256=
|
|
1139
|
+
angr/storage/memory_mixins/__init__.py,sha256=1kLsmopg8ZyCMP3OJSXOX50sbLpvlQ4HUZjDzhrCfQc,11892
|
|
1136
1140
|
angr/storage/memory_mixins/__init__.pyi,sha256=7jA-O5r8efBzQWZa9q-5xs6HY-rYPSlgo2_42CRUYqQ,1944
|
|
1137
1141
|
angr/storage/memory_mixins/actions_mixin.py,sha256=KZSCMjGB_Sbk_rlgGxk4k02Pu3b569c6tG-xPoH31L0,3402
|
|
1138
1142
|
angr/storage/memory_mixins/address_concretization_mixin.py,sha256=6VJ4Gg3NecygagBlNe5jrGgSmCJmfh53nnxwzIwjO0k,16569
|
|
@@ -1192,6 +1196,7 @@ angr/utils/dynamic_dictlist.py,sha256=80kE4ySWF3dAffUt5qlyUfK6h0A8jOVMMaNG8RNUz7
|
|
|
1192
1196
|
angr/utils/enums_conv.py,sha256=YdnZzvuVc_BW1EuC4OtEo7LqB35XkPrXICyWox8Posg,2091
|
|
1193
1197
|
angr/utils/env.py,sha256=wWlmjLp7CtafKItn7xq2RW3UzGGgxw58Wc8fSm3EZJQ,363
|
|
1194
1198
|
angr/utils/formatting.py,sha256=QOw75CLSrttGTn2aYQzBFIBhZj40J9ESQZxJOz0BexA,4217
|
|
1199
|
+
angr/utils/funcid.py,sha256=PCOvMfRrt70Es1cMlVqKFVCmHfELXQHvX08Uqabn7Nk,5006
|
|
1195
1200
|
angr/utils/graph.py,sha256=9ZjoTAjeedTMcRT4m9P60WISddlevBDLzQUsE0RETmQ,27639
|
|
1196
1201
|
angr/utils/lazy_import.py,sha256=VgN0-cMsr6XdGIq56Js1X8YecfPdW9Z4NrB3d2jD-5Y,308
|
|
1197
1202
|
angr/utils/library.py,sha256=MYbY6rvC2Fi1ofbBHynh6-cdmaDETxj8hBz1gxKvsQQ,7178
|
|
@@ -1214,7 +1219,7 @@ tests/analyses/test_cfb.py,sha256=5lV3QHvDqQlyHvtVXkxiMdL091uUM13wnzGl8n1Hakk,91
|
|
|
1214
1219
|
tests/analyses/test_class_identifier.py,sha256=UaswarpeuBDiyaEkjWng_AwxU-kg_x-ZHR0u24mNqhU,1428
|
|
1215
1220
|
tests/analyses/test_clinic.py,sha256=I1Su7BtiTPWdSf3l90vy-lHAA75_lbzdj-g_syIJlLM,743
|
|
1216
1221
|
tests/analyses/test_codetagging.py,sha256=JMTdmJuaW_rZNcg4twVWKEjs8SQKdd8J8jttBPLorQ0,1026
|
|
1217
|
-
tests/analyses/test_constantpropagation.py,sha256=
|
|
1222
|
+
tests/analyses/test_constantpropagation.py,sha256=hPzlPDgri6ngqko8LIcaebToETugwS_I17MHcaxEjHI,2995
|
|
1218
1223
|
tests/analyses/test_ddg.py,sha256=PcCbM3VQciTO02-XkjkCJeu5wahsXyNvKyyKHja36ao,3176
|
|
1219
1224
|
tests/analyses/test_ddg_global_var_dependencies.py,sha256=Dv9ObVLuCuf8pkhUK2fL0jC--NcnVjgRj1MyG2Xggxk,3613
|
|
1220
1225
|
tests/analyses/test_ddg_memvar_addresses.py,sha256=anbiZ8s1hgu6XhDxS_zVfb43DtHQLrmNWRhLdMk1zCw,1258
|
|
@@ -1244,7 +1249,7 @@ tests/analyses/cfg/test_cfg_rust_got_resolution.py,sha256=HCXQT09iJz7kempYuQo30g
|
|
|
1244
1249
|
tests/analyses/cfg/test_cfg_thumb_firmware.py,sha256=VpZ52hp4L01WmIJoa-j1LVGdRNiBVqjz0TFSEvRa8bI,1767
|
|
1245
1250
|
tests/analyses/cfg/test_cfg_vex_postprocessor.py,sha256=wVj2LLT2ibo0SsQXbPbOrIFG03Z7nMxpBXZV88wox1o,627
|
|
1246
1251
|
tests/analyses/cfg/test_cfgemulated.py,sha256=yf9YSHQibw62Vf1ixu7pb5Uo-2rbhYdcKaEfZn-UkG0,23341
|
|
1247
|
-
tests/analyses/cfg/test_cfgfast.py,sha256=
|
|
1252
|
+
tests/analyses/cfg/test_cfgfast.py,sha256=Qmne4A9CvgZSEHcd8Xsd4AHKelyKbjU4OA3hjvO8H_A,41019
|
|
1248
1253
|
tests/analyses/cfg/test_cfgfast_soot.py,sha256=oq9P3FH89V5wU5HSwfSOiN2PflevOKHgVFgPWANPz0o,1094
|
|
1249
1254
|
tests/analyses/cfg/test_const_resolver.py,sha256=GOgiqISS5BC2Ts4gSx1L6id54w2kEHUH4ENvizVT3I0,1178
|
|
1250
1255
|
tests/analyses/cfg/test_iat_resolver.py,sha256=_tGaLI07TsOekyk5TZI0hg32wKptWpBxgkNPAv1IFck,989
|
|
@@ -1256,7 +1261,7 @@ tests/analyses/cfg_slice_to_sink/test_graph.py,sha256=K77zi-kkcdsazokuk4pCr_qPEx
|
|
|
1256
1261
|
tests/analyses/cfg_slice_to_sink/test_transitions.py,sha256=Jh5g8MPny5NcD4Ubg0cMgR0hNi_SCMA2CE9bmhopodo,698
|
|
1257
1262
|
tests/analyses/decompiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1258
1263
|
tests/analyses/decompiler/test_baseptr_save_simplifier.py,sha256=K7E87Gksi1rNDhft1w0KuavVwzijRpdUkwLcEriQjlY,3006
|
|
1259
|
-
tests/analyses/decompiler/test_decompiler.py,sha256=
|
|
1264
|
+
tests/analyses/decompiler/test_decompiler.py,sha256=87PvhrjpgN6RXEvpPTPHlI9OzSAC1DyHaoa20AeeOl4,147012
|
|
1260
1265
|
tests/analyses/decompiler/test_peephole_optimizations.py,sha256=H8amGt72-KwsPamy9h3pgRVhZ-fzhVXkkUzEn_YgO6Y,1648
|
|
1261
1266
|
tests/analyses/decompiler/test_propagator_loops.py,sha256=zOP3vH5ldnutlismSrGH1JfYsTUIn872Jcb8CYanmro,3268
|
|
1262
1267
|
tests/analyses/decompiler/test_structurer.py,sha256=_SX5ps4l9kG0ovssuplgSL9c-0602g0r85RjVHzWp6k,7782
|
|
@@ -1410,9 +1415,9 @@ tests/storage/test_multivalues.py,sha256=x82duiIMsU9nE-6vhm-eEsofshKfbVy5d9CNgdC
|
|
|
1410
1415
|
tests/storage/test_permissions.py,sha256=-Gsd1CUO7xZv7NTieiuikm33xfl33MyzIkembL3CuIw,883
|
|
1411
1416
|
tests/storage/test_ptmalloc.py,sha256=WwORhRoN0SYC8R9aJ_RITbVKlB6JQnLyINTWbT4PidU,10592
|
|
1412
1417
|
tests/storage/test_relro_perm.py,sha256=gqNbkYfAYr0wM-oSijS3HYi0-cbtplMDCSWQqRCqEb4,1406
|
|
1413
|
-
angr-9.2.
|
|
1414
|
-
angr-9.2.
|
|
1415
|
-
angr-9.2.
|
|
1416
|
-
angr-9.2.
|
|
1417
|
-
angr-9.2.
|
|
1418
|
-
angr-9.2.
|
|
1418
|
+
angr-9.2.80.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
|
|
1419
|
+
angr-9.2.80.dist-info/METADATA,sha256=pjz4GHUET6bNa5338NcibLjyF6WbTCYzuU8adYiIKtE,4856
|
|
1420
|
+
angr-9.2.80.dist-info/WHEEL,sha256=6iYPr8vTHsyDK75jr9X0V3I9wPSVmtwr_8fdATBciGk,98
|
|
1421
|
+
angr-9.2.80.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
|
|
1422
|
+
angr-9.2.80.dist-info/top_level.txt,sha256=EGgw8HjaUI9JWd6w70Tzkn1AcyKTMJTVJ9OpWyaOewk,11
|
|
1423
|
+
angr-9.2.80.dist-info/RECORD,,
|
|
@@ -954,6 +954,30 @@ class TestCfgfast(unittest.TestCase):
|
|
|
954
954
|
assert node is not None
|
|
955
955
|
assert node.function_address == 0x40F770
|
|
956
956
|
|
|
957
|
+
def test_removing_lock_edges(self):
|
|
958
|
+
path = os.path.join(
|
|
959
|
+
test_location, "x86_64", "windows", "6f289eb8c8cd826525d79b195b1cf187df509d56120427b10ea3fb1b4db1b7b5.sys"
|
|
960
|
+
)
|
|
961
|
+
proj = angr.Project(path, auto_load_libs=False)
|
|
962
|
+
cfg = proj.analyses.CFGFast(normalize=True)
|
|
963
|
+
node = cfg.model.get_any_node(0x1400061C2)
|
|
964
|
+
assert {n.addr for n in cfg.model.graph.successors(node)} == {0x1400060DC, 0x1400061D4}
|
|
965
|
+
|
|
966
|
+
def test_security_init_cookie_identification(self):
|
|
967
|
+
path = os.path.join(test_location, "x86_64", "windows", "3ware.sys")
|
|
968
|
+
proj = angr.Project(path, auto_load_libs=False)
|
|
969
|
+
cfg = proj.analyses.CFGFast()
|
|
970
|
+
assert cfg.kb.functions[0x1C001A018].name == "_security_init_cookie"
|
|
971
|
+
assert cfg.kb.functions[0x1C0010100].name == "_security_check_cookie"
|
|
972
|
+
|
|
973
|
+
def test_security_init_cookie_identification_a(self):
|
|
974
|
+
path = os.path.join(
|
|
975
|
+
test_location, "x86_64", "windows", "1817a5bf9c01035bcf8a975c9f1d94b0ce7f6a200339485d8f93859f8f6d730c.exe"
|
|
976
|
+
)
|
|
977
|
+
proj = angr.Project(path, auto_load_libs=False)
|
|
978
|
+
cfg = proj.analyses.CFGFast()
|
|
979
|
+
assert cfg.kb.functions[0x21514B5600].name == "_security_init_cookie"
|
|
980
|
+
|
|
957
981
|
|
|
958
982
|
class TestCfgfastDataReferences(unittest.TestCase):
|
|
959
983
|
def test_data_references_x86_64(self):
|
|
@@ -3142,6 +3142,134 @@ class TestDecompiler(unittest.TestCase):
|
|
|
3142
3142
|
assert 'L"\\\\Registry\\\\Machine\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\WinApi"' in d.codegen.text
|
|
3143
3143
|
assert 'L"WinDeviceAddress"' in d.codegen.text
|
|
3144
3144
|
|
|
3145
|
+
@structuring_algo("phoenix")
|
|
3146
|
+
def test_ifelseflatten_iplink_bridge(self, decompiler_options=None):
|
|
3147
|
+
bin_path = os.path.join(test_location, "x86_64", "decompiler", "iplink_bridge.o")
|
|
3148
|
+
proj = angr.Project(bin_path, auto_load_libs=False)
|
|
3149
|
+
cfg = proj.analyses.CFGFast(normalize=True, data_references=True)
|
|
3150
|
+
|
|
3151
|
+
f = proj.kb.functions["bridge_print_opt"]
|
|
3152
|
+
proj.analyses.CompleteCallingConventions(cfg=cfg, recover_variables=True, analyze_callsites=True)
|
|
3153
|
+
d = proj.analyses[Decompiler](f, cfg=cfg.model, options=decompiler_options)
|
|
3154
|
+
|
|
3155
|
+
self._print_decompilation_result(d)
|
|
3156
|
+
text = d.codegen.text
|
|
3157
|
+
good_if_return_pattern = r"if \(\!a2\)\s+return .*;"
|
|
3158
|
+
good_if_return = re.search(good_if_return_pattern, text)
|
|
3159
|
+
assert good_if_return is not None
|
|
3160
|
+
|
|
3161
|
+
first_if_location = text.find("if")
|
|
3162
|
+
assert first_if_location != -1
|
|
3163
|
+
|
|
3164
|
+
# TODO: this is broken right now on the 1 goto for a bad else. It may not be relevant for this testcase.
|
|
3165
|
+
# there should be no else and no gotos!
|
|
3166
|
+
# assert "goto" not in text
|
|
3167
|
+
# assert "else" not in text
|
|
3168
|
+
|
|
3169
|
+
# the first if in the program should have no else, and that first else should be a simple return
|
|
3170
|
+
assert first_if_location == good_if_return.start()
|
|
3171
|
+
assert not text[first_if_location + len(good_if_return.group(0)) :].startswith(" else")
|
|
3172
|
+
|
|
3173
|
+
@structuring_algo("phoenix")
|
|
3174
|
+
def test_ifelseflatten_gzip(self, decompiler_options=None):
|
|
3175
|
+
bin_path = os.path.join(test_location, "x86_64", "decompiler", "gzip.o")
|
|
3176
|
+
proj = angr.Project(bin_path, auto_load_libs=False)
|
|
3177
|
+
cfg = proj.analyses.CFGFast(normalize=True, data_references=True)
|
|
3178
|
+
|
|
3179
|
+
f = proj.kb.functions["treat_file"]
|
|
3180
|
+
proj.analyses.CompleteCallingConventions(cfg=cfg, recover_variables=True, analyze_callsites=True)
|
|
3181
|
+
d = proj.analyses[Decompiler](f, cfg=cfg.model, options=decompiler_options)
|
|
3182
|
+
|
|
3183
|
+
self._print_decompilation_result(d)
|
|
3184
|
+
text = d.codegen.text.replace("\n", " ")
|
|
3185
|
+
first_if_location = text.find("if (")
|
|
3186
|
+
# the very first if-stmt in this function should be a single scope with a return.
|
|
3187
|
+
# there should be no else scope as well.
|
|
3188
|
+
correct_ifs = list(re.finditer(r'if \(!strcmp\(a0, "-"\)\) {5}\{.*? return; {5}}', text))
|
|
3189
|
+
assert len(correct_ifs) >= 1
|
|
3190
|
+
|
|
3191
|
+
first_correct_if = correct_ifs[0]
|
|
3192
|
+
assert first_correct_if.start() == first_if_location
|
|
3193
|
+
|
|
3194
|
+
@structuring_algo("phoenix")
|
|
3195
|
+
def test_ifelseflatten_iprule(self, decompiler_options=None):
|
|
3196
|
+
bin_path = os.path.join(test_location, "x86_64", "decompiler", "iprule.o")
|
|
3197
|
+
proj = angr.Project(bin_path, auto_load_libs=False)
|
|
3198
|
+
cfg = proj.analyses.CFGFast(normalize=True, data_references=True)
|
|
3199
|
+
|
|
3200
|
+
f = proj.kb.functions["flush_rule"]
|
|
3201
|
+
proj.analyses.CompleteCallingConventions(cfg=cfg, recover_variables=True, analyze_callsites=True)
|
|
3202
|
+
d = proj.analyses[Decompiler](f, cfg=cfg.model, options=decompiler_options)
|
|
3203
|
+
|
|
3204
|
+
self._print_decompilation_result(d)
|
|
3205
|
+
# XXX: this a hack that should be fixed in some other place
|
|
3206
|
+
text = d.codegen.text.replace("4294967295", "-1")
|
|
3207
|
+
|
|
3208
|
+
# first if-stmt should be a single scope with a return.
|
|
3209
|
+
good_if_return = re.search("if \\(.*?\\)\n {8}return -1;", text)
|
|
3210
|
+
assert good_if_return is not None
|
|
3211
|
+
|
|
3212
|
+
first_if_location = text.find("if")
|
|
3213
|
+
assert first_if_location != -1
|
|
3214
|
+
assert first_if_location == good_if_return.start()
|
|
3215
|
+
|
|
3216
|
+
@structuring_algo("phoenix")
|
|
3217
|
+
def test_ifelseflatten_clientloop(self, decompiler_options=None):
|
|
3218
|
+
bin_path = os.path.join(test_location, "x86_64", "decompiler", "clientloop.o")
|
|
3219
|
+
proj = angr.Project(bin_path, auto_load_libs=False)
|
|
3220
|
+
cfg = proj.analyses.CFGFast(normalize=True, data_references=True)
|
|
3221
|
+
|
|
3222
|
+
f = proj.kb.functions["client_request_tun_fwd"]
|
|
3223
|
+
proj.analyses.CompleteCallingConventions(cfg=cfg, recover_variables=True, analyze_callsites=True)
|
|
3224
|
+
d = proj.analyses[Decompiler](f, cfg=cfg.model, options=decompiler_options)
|
|
3225
|
+
|
|
3226
|
+
self._print_decompilation_result(d)
|
|
3227
|
+
text = d.codegen.text
|
|
3228
|
+
|
|
3229
|
+
# find all ifs
|
|
3230
|
+
all_if_stmts = list(re.finditer("if \\(.*?\\)", text))
|
|
3231
|
+
assert all_if_stmts is not None
|
|
3232
|
+
assert len(all_if_stmts) >= 2
|
|
3233
|
+
|
|
3234
|
+
# first if-stmt should be a single scope with a return.
|
|
3235
|
+
first_good_if = re.search("if \\(.*?\\)\n {8}return 0;", text)
|
|
3236
|
+
assert first_good_if is not None
|
|
3237
|
+
assert first_good_if.start() == all_if_stmts[0].start()
|
|
3238
|
+
|
|
3239
|
+
# the if-stmt immediately after the first one should be a true check on -1
|
|
3240
|
+
second_good_if = re.search("if \\(.*? == -1\\)", text)
|
|
3241
|
+
assert second_good_if is not None
|
|
3242
|
+
assert second_good_if.start() == all_if_stmts[1].start()
|
|
3243
|
+
|
|
3244
|
+
@structuring_algo("phoenix")
|
|
3245
|
+
def test_ifelseflatten_certtool_common(self, decompiler_options=None):
|
|
3246
|
+
bin_path = os.path.join(test_location, "x86_64", "decompiler", "certtool-common.o")
|
|
3247
|
+
proj = angr.Project(bin_path, auto_load_libs=False)
|
|
3248
|
+
cfg = proj.analyses.CFGFast(normalize=True, data_references=True)
|
|
3249
|
+
|
|
3250
|
+
f = proj.kb.functions["cipher_to_flags"]
|
|
3251
|
+
proj.analyses.CompleteCallingConventions(cfg=cfg, recover_variables=True, analyze_callsites=True)
|
|
3252
|
+
d = proj.analyses[Decompiler](f, cfg=cfg.model, options=decompiler_options)
|
|
3253
|
+
|
|
3254
|
+
self._print_decompilation_result(d)
|
|
3255
|
+
text = d.codegen.text
|
|
3256
|
+
|
|
3257
|
+
# If any incorrect if-else flipping occurs, then there will be an if-stmt inside an if-stmt.
|
|
3258
|
+
# In the correct output, there should only ever be 2 scopes (the function, and a single if-scope) of
|
|
3259
|
+
# deepness in the full function. To verify this, we check that no scope of 3 deepness exists.
|
|
3260
|
+
|
|
3261
|
+
scope_prefix = " "
|
|
3262
|
+
bad_scope_prefix = scope_prefix * 3
|
|
3263
|
+
|
|
3264
|
+
assert scope_prefix in text
|
|
3265
|
+
assert bad_scope_prefix not in text
|
|
3266
|
+
|
|
3267
|
+
# TODO: fix me, this is a real bug
|
|
3268
|
+
# To double-check the structure, we will also verify that all if-conditions are of form `if(!<condition>)`,
|
|
3269
|
+
# since that is the correct form for this program.
|
|
3270
|
+
# bad_matches = re.findall(r'\bif\s*\(\s*[^!].*\)', text)
|
|
3271
|
+
# assert len(bad_matches) == 0
|
|
3272
|
+
|
|
3145
3273
|
|
|
3146
3274
|
if __name__ == "__main__":
|
|
3147
3275
|
unittest.main()
|
|
@@ -6,6 +6,7 @@ import os
|
|
|
6
6
|
import unittest
|
|
7
7
|
|
|
8
8
|
import angr
|
|
9
|
+
from angr.analyses.propagator.vex_vars import VEXReg
|
|
9
10
|
|
|
10
11
|
from ..common import bin_location
|
|
11
12
|
|
|
@@ -48,6 +49,39 @@ class TestConstantpropagation(unittest.TestCase):
|
|
|
48
49
|
|
|
49
50
|
assert len(prop.replacements) > 0
|
|
50
51
|
|
|
52
|
+
def test_register_propagation_across_calls(self):
|
|
53
|
+
call_targets = [
|
|
54
|
+
"_0", # Resolved
|
|
55
|
+
"rdi", # TOP
|
|
56
|
+
"qword ptr [0xBAD]", # Unresolved
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
for target in call_targets:
|
|
60
|
+
p = angr.load_shellcode(
|
|
61
|
+
f"""
|
|
62
|
+
_0:
|
|
63
|
+
mov rcx, 0x12345678
|
|
64
|
+
mov rbp, 0xFEDCBA90
|
|
65
|
+
_11:
|
|
66
|
+
call {target}
|
|
67
|
+
mov rax, rcx
|
|
68
|
+
mov rdi, rbp
|
|
69
|
+
ret
|
|
70
|
+
""",
|
|
71
|
+
"AMD64",
|
|
72
|
+
)
|
|
73
|
+
cfg = p.analyses.CFG()
|
|
74
|
+
prop = p.analyses.Propagator(func=cfg.functions[0], only_consts=True)
|
|
75
|
+
regs_replaced = {
|
|
76
|
+
p.arch.register_names[var.offset]: val
|
|
77
|
+
for codeloc, replacements in prop.replacements.items()
|
|
78
|
+
if codeloc.block_addr >= 0x11
|
|
79
|
+
for var, val in replacements.items()
|
|
80
|
+
if isinstance(var, VEXReg)
|
|
81
|
+
}
|
|
82
|
+
assert "rax" not in regs_replaced # caller saved
|
|
83
|
+
assert regs_replaced["rdi"].concrete_value == 0xFEDCBA90 # callee saved
|
|
84
|
+
|
|
51
85
|
|
|
52
86
|
if __name__ == "__main__":
|
|
53
87
|
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|