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.

Files changed (40) hide show
  1. angr/__init__.py +1 -1
  2. angr/__main__.py +30 -5
  3. angr/analyses/cfg/cfg_fast.py +128 -3
  4. angr/analyses/decompiler/ail_simplifier.py +8 -0
  5. angr/analyses/decompiler/clinic.py +6 -2
  6. angr/analyses/decompiler/decompilation_options.py +9 -0
  7. angr/analyses/decompiler/optimization_passes/__init__.py +4 -0
  8. angr/analyses/decompiler/optimization_passes/multi_simplifier.py +0 -12
  9. angr/analyses/decompiler/optimization_passes/optimization_pass.py +8 -5
  10. angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +2 -25
  11. angr/analyses/decompiler/peephole_optimizations/eager_eval.py +14 -2
  12. angr/analyses/decompiler/region_simplifiers/ifelse.py +19 -10
  13. angr/analyses/decompiler/region_simplifiers/region_simplifier.py +4 -2
  14. angr/analyses/decompiler/utils.py +8 -5
  15. angr/analyses/propagator/engine_ail.py +3 -1
  16. angr/analyses/propagator/engine_vex.py +45 -0
  17. angr/analyses/propagator/propagator.py +24 -15
  18. angr/analyses/reaching_definitions/engine_ail.py +1 -1
  19. angr/analyses/stack_pointer_tracker.py +55 -0
  20. angr/callable.py +4 -4
  21. angr/engines/light/engine.py +30 -18
  22. angr/knowledge_plugins/propagations/propagation_model.py +4 -0
  23. angr/knowledge_plugins/propagations/states.py +54 -4
  24. angr/lib/angr_native.dll +0 -0
  25. angr/procedures/definitions/__init__.py +2 -1
  26. angr/procedures/definitions/ntoskrnl.py +9 -0
  27. angr/procedures/win32_kernel/ExAllocatePool.py +12 -0
  28. angr/procedures/win32_kernel/ExFreePoolWithTag.py +7 -0
  29. angr/procedures/win32_kernel/__init__.py +3 -0
  30. angr/storage/memory_mixins/__init__.py +1 -1
  31. angr/utils/funcid.py +128 -0
  32. {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/METADATA +6 -6
  33. {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/RECORD +40 -35
  34. tests/analyses/cfg/test_cfgfast.py +24 -0
  35. tests/analyses/decompiler/test_decompiler.py +128 -0
  36. tests/analyses/test_constantpropagation.py +34 -0
  37. {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/LICENSE +0 -0
  38. {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/WHEEL +0 -0
  39. {angr-9.2.79.dist-info → angr-9.2.80.dist-info}/entry_points.txt +0 -0
  40. {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.79
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.79
21
- Requires-Dist: archinfo ==9.2.79
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.79
26
- Requires-Dist: cle ==9.2.79
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.79
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=1hDKCHV5WU-92kCqJB-WuVkZO28N6APe3LTVIuMzl7g,3851
2
- angr/__main__.py,sha256=kdqGysHrVO1vaW6VC6v_OTmlCO7R1-eZpiEhArmi978,1095
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=X9LC_A4XxdCcCWLqbyZyU1YKBrTKNCeJAJJBGXU83vE,6012
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=rL8wF12Fe3P-RXAzk4caMYapB63tYX_qs-EO6E5l1n8,26228
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=jaF4UXjld_GX9JdN87noJhaD5c0vvo8lcURv3xHa2RI,210389
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=ZHXNxaR9yLRFbYaczolSbc1vQ1s__EhTi9fumkv8AcM,59030
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=F2mcZKD0xuEFFXxQAlVQ8dnOTAP-YVCPW8pFeq8YwEo,72531
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=EtLBv9XG3chXmceT3irru3K7jJhguv8JilWYCHdTWyQ,7668
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=jzODnWygARpEdPLBRfgcWzEjsYS6X5W-aa_-tSODj7k,24386
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=inyWh1QXeFfA9JBnFsK6E-3PrCBTKuNJT8O_70Pz2KE,2794
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=Ez7ye4j2VUfELxRPkNQQIY-gF9Q9SkTZxH5jt301Rx8,10968
131
- angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=ESHMebQSc08DcvFjN3i5vird_t-L2Jb6qHeIxGADlDs,7747
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=BRl9s9DzEMSKugR7-N5OBukyNcoN2Y_vWbziXqF4nmE,13231
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=9FXjKuBWC2oDo3tPkNOhiSOD0C_P7vA83DAp7qJfnIU,8684
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=_1_XtnjNeRfGHlyMfKs18gjtfqnrsdVTdYhaqLRwZaE,3098
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=A0fnV-t1A6IR5Q6pQvv53DvITUJifvlq6gFj83BJwyk,8077
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=VOZstY-jD0-EGnWWqjZZw51o9vdkJd9LinPe3rGu1uw,62429
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=HPzS5CXLdFHoKM7_nulgqguwZCyv3Iaut2avsi6cvkM,10132
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=2pwScw6VbWH-hit3qBRuoSNDxhk9OV7oBDY3gIxrnlQ,15555
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=dAI4hIFdg7iFcEQz1UXay4e215jQQy9PagOqXScw2GY,44787
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=XB9y81fxGiIFvCnXstQA-BsEWLCHk0oR6a3gobj1Dgo,40265
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=dcO9dLaEeGl5F3tv-TzEBkdRewh3Iykuo6Bhht_NNHo,2607
464
- angr/knowledge_plugins/propagations/states.py,sha256=xF69UXBSKqdpWHt7iw5Q_x_Of7TaXDBv1w5XS1U6BeM,35896
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=wNtDTQv01n7sYKMAYCufrdKLyTZyoryGhAPUwdKyW8Y,19209728
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=7-kYE3R18vjmBgqzdcbEQkdlIc2cPA7EwWHLpX9KIyU,27702
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=vblWOZgrDQ1j5_BaSGrS2wseBdp73HO295_WH6Sd-ZU,11881
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=dNfrTP5-9WY3ofOnROJsu_mJzNbFEf5x568FPvv3YdE,1809
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=oozwFA2j8PeHWqcVgWx9B41QDQprN9foyqTJqNfhSYc,39793
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=KIgOa_2xm4mc_gLHg24FToPFUcVZiCbuB-kYUJd3Dqo,140753
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.79.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1414
- angr-9.2.79.dist-info/METADATA,sha256=LxvGZly4vzhzSGI_nGL-0XEZlf03uAge8ivhIgT3w4A,4856
1415
- angr-9.2.79.dist-info/WHEEL,sha256=6iYPr8vTHsyDK75jr9X0V3I9wPSVmtwr_8fdATBciGk,98
1416
- angr-9.2.79.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1417
- angr-9.2.79.dist-info/top_level.txt,sha256=EGgw8HjaUI9JWd6w70Tzkn1AcyKTMJTVJ9OpWyaOewk,11
1418
- angr-9.2.79.dist-info/RECORD,,
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