Skip to content

Latest commit

 

History

History
49 lines (42 loc) · 2.21 KB

README.md

File metadata and controls

49 lines (42 loc) · 2.21 KB

lysis-java

Lysis - SourceMod .smx decompiler

This is an improved Java port of BAILOPAN's sourcepawn decompiler Lysis. Originally written C#.

Original repository

Building

This project uses Gradle to build. Run gradlew jar to download all dependencies and build a runnable jar which will be located in build/libs. Run gradlew eclipse to generate an eclipse project for editing.

Changes in this fork

  • Support for new opcodes
    • genarray / genarray_z (dynamic arrays)
      • tracker_pop_setheap
      • tracker_push_c
      • stradjust_pri
    • sysreq_c (operations on 2 float constants)
    • dec (decrement global variables)
    • neg (negating variables)
  • Fix load_both opcode
  • Support conditional returns (|return cond1 && cond2;|)
  • Support storing conditions in a variable (|new var = cond1 || cond2;|)
  • Printing of Extension: and SharedPlugin: plugin dependency structs
  • Correctly show |new| or |decl| when declaring local variables
  • Support plugins compiled with old sourcemod 1.0 compiler (codeversion 0x0101)
  • Work around malicious alteration of section names table to still load tampered binaries
  • Better handling of multidimensional arrays
  • Displaying of float constants as floats in lots of cases
  • Support switch-cases with multiple values |case 1, 2, 3:|
  • Fix not displaying complex logic chains after calculating them (|if(cond1 && !cond2 || cond3)|)
  • Support non public functions to return strings
  • Handle global variables in call-by-reference parameters and variadic argument lists
  • Replace all float operators with inline syntax
  • Fix displaying of string arrays
  • Replace \x03 etc. chat color codes with readable string in strings
  • Fix displaying global string's size in cells instead of bytes
  • Try to fetch some type info out of format specifier strings in methods with variadic arguments
  • Fix displaying constant array indices as bytes instead of cells
  • Fix bad coalescing of stores with an operation
  • Fix error with switches without a default case
  • Display variables correctly which are only used once

And probably more..

Try it in your browser!