PofoliaPofolia ile paylaşıldı

Proceedings of the ACM on Programming Languages· 2026Q1

ReFun: EVM Bayt Kodunda Fonksiyon Sınırlarını Yeniden Yapılandırma

ReFun: Reconstructing Function Boundaries in EVM Bytecode

Yichuan Li, Wei Song, Jeff Huang, Hans‐Arno Jacobsen

Kısa özet

ReFun adlı yeni bir araç, EVM bayt kodundaki fonksiyon sınırlarını %94,3 doğruluk ve %95,5 geri çağırma ile yeniden yapılandırarak, fonksiyon çağrıları ile prosedür içi atlamalar arasındaki belirsizliği aşamalı iyileştirme ve olasılıksal çıkarım kullanarak çözmektedir.

Yapay zekâ ile başlık ve abstract'tan üretildi; tam metin okunmaz.

Ana noktalar

  • ReFun, fonksiyon çağrılarını prosedür içi kontrol transferlerinden ayırarak EVM bayt kodundaki fonksiyon sınırlarını yeniden yapılandırır.
  • Yaklaşım, potansiyel çağrıların aşırı tahmin edilmesi, kural tabanlı akıl yürütme ve olasılıksal çıkarım yoluyla aşamalı iyileştirme kullanır.
  • ReFun, 8.696 gerçek dünya Solidity sözleşmesi üzerinde %94,3 doğruluk ve %95,5 geri çağırma elde eder.
  • Araç verimlidir, sözleşmelerin %82'sinde sekiz saniye içinde fonksiyonları tanımlar.
  • ReFun'un çıktısı, sözleşme ayrıştırma ve klon tespiti gibi sonraki görevlere yardımcı olur.

Yapay zekâ ile başlık ve abstract'tan üretildi; tam metin okunmaz.

Özet (abstract)

Recovering the structure of a Solidity smart contract from its deployed bytecode is a prerequisite for various downstream analyses, such as control-flow graph construction, decompilation, and clone detection. A central step in this task is identifying private functions. However, since all source-level function boundaries are completely lost after compilation, the major challenge of this task lies in how to differentiate function calls from intra-procedural control transfers, because both are implemented via the JUMP/JUMPI instructions. We observe that although jump-based control transfers are superficially uniform, their context information is different. Some contexts provide definitive evidence of an intra-procedural control transfer or a function call, which inspires us to address this problem through progressive refinement rather than naive binary classification. Specifically, we first construct an over-approximated set of potential function call sites based on EVM execution semantics, and then narrow them down using rule-based reasoning. The remaining uncertain cases are finally resolved through probabilistic inference over suggestive contexts. For each identified function, we further analyze the instructions before each jump to determine its target and reassemble scattered code fragments into a continuous instruction sequence. We implement our approach as an open-source tool, dubbed ReFun, and evaluate it on 8,696 real-world Solidity smart contracts across multiple Solidity compiler versions and optimization settings. The experimental results demonstrate that ReFun achieves 94.3% precision and 95.5% recall in function recovery, and it is also efficient, completing function identification and separation for 82% of contracts within eight seconds per contract. Finally, we show how ReFun is applied to the downstream tasks, including contract decompilation and clone detection.

Yazarların özeti; kaynağından alınmıştır. Proceedings of the ACM on Programming Languages, 2026 · DOI ↗

ÇıkarımlarPremium
Makaleye SorÜcretsiz hesapla

Ücretsiz hesapla devam et

Makaleye Sor ile bu makaleye günde 3 soru ücretsiz; makaleyi kaydet, kaynakçasını al, ilgi alanına göre her gün yeni özetler. Çıkarımlar Premium.

Web'de ücretsiz devam et

Google ya da Apple hesabınla giriş; kart istemez. Bu makaleye geri dönersin.

Telefonda:

Alan: Bilişim Sistemleri

Information SystemsComputer Science