peace-maker / lysis-java

Lysis - SourceMod .smx and AMXModX .amxx decompiler
110 stars 39 forks source link

DJump can't be cast to DJumpCondition #16

Open Headline opened 4 years ago

Headline commented 4 years ago

Observed in error logs for headlinedev.xyz/lysis

java.lang.ClassCastException: lysis.nodes.types.DJump cannot be cast to lysis.nodes.types.DJumpCondition
    at lysis.builder.structure.SourceStructureBuilder.buildLogicChain(SourceStructureBuilder.java:171)
    at lysis.builder.structure.SourceStructureBuilder.traverseComplexIf(SourceStructureBuilder.java:271)
    at lysis.builder.structure.SourceStructureBuilder.traverseIf(SourceStructureBuilder.java:359)
    at lysis.builder.structure.SourceStructureBuilder.traverseBlockNoLoop(SourceStructureBuilder.java:598)
    at lysis.builder.structure.SourceStructureBuilder.traverseBlock(SourceStructureBuilder.java:632)
    at lysis.builder.structure.SourceStructureBuilder.traverseJoin(SourceStructureBuilder.java:591)
    at lysis.builder.structure.SourceStructureBuilder.traverseIf(SourceStructureBuilder.java:402)
    at lysis.builder.structure.SourceStructureBuilder.traverseBlockNoLoop(SourceStructureBuilder.java:598)
    at lysis.builder.structure.SourceStructureBuilder.traverseBlock(SourceStructureBuilder.java:632)
    at lysis.builder.structure.SourceStructureBuilder.traverseJoin(SourceStructureBuilder.java:591)
    at lysis.builder.structure.SourceStructureBuilder.traverseIf(SourceStructureBuilder.java:402)
    at lysis.builder.structure.SourceStructureBuilder.traverseBlockNoLoop(SourceStructureBuilder.java:598)
    at lysis.builder.structure.SourceStructureBuilder.traverseBlock(SourceStructureBuilder.java:632)
    at lysis.builder.structure.SourceStructureBuilder.build(SourceStructureBuilder.java:636)
    at lysis.Lysis.DumpMethod(Lysis.java:132)
    at lysis.Lysis.main(Lysis.java:198)
peace-maker commented 4 years ago

It's hard to debug these without a test case.

Headline commented 4 years ago

Yeah I figured that would be the case, of course I don't keep copies of binaries on the web server. If I get any emails containing binaries that are failing to decompile I'll let you know. The same goes for #15

afwn90cj93201nixr2e1re commented 4 years ago

@peace-maker @Headline possible heap errors related to natives which are returns array. Like native []fmt in amxmodx.

afwn90cj93201nixr2e1re commented 4 years ago

@peace-maker @Headline изображение

PoC.

Also there's one more problem, for example in AmxModX there's public stock MaxClients, and any 0 symbol in file replaced with MaxClients, due it's the first created new. изображение Just.. you know.

And one more, there's not completed parsing of array of arrays. изображение изображение ending up with first symbol only. изображение

btw disassambler by ltrat works with that.