VB/VB.Net [Help] SwfDotNet - Erreur log4net

Inscrit
22 Février 2020
Messages
26
Reactions
18
#1
Salut amigos,
Ne trouvant pas de bonne lib python pour décompiler du swf, j'ai fait un petit tool en recyclant le code de swfUnpacker de Maxou pour décompiler les maps et stocker les mapdata dans des fichiers txt que je pourrai exploiter en python.
Du coup j'ai dû me forcer à apprendre le vb.net sur le tas et j'arrive pas à débugger un truc tout con :
log4net error.png
J'ai vu que la version de la dll log4net dans le dossier est pas la même, 1.2.10 mais impossible de trouver la dll 1.2.11 sur le net et quand j'installe avec NuGet et cherche la dll dans son dossier, il m'indique quand même la version 1.2.10 ce couillon…

Voilà sorry j'ai pas trop l'habitude de manipuler ces dll, je suis sensé faire quoi ? Modifier les sources de SwfDotNet, changer la version référencée et recréer une dll ? Y a pas un truc plus simple à faire ? Merci d'avance si une âme charitable vient m'aider, d'ici là je continue de chercher mais ça me fait perdre un temps de zinzin vu que je peux pas avancer sur mon projet tant que j'ai pas réussi à décompiler ces fichues maps...

VB.Net:
Imports SwfDotNet.IO
Imports SwfDotNet.IO.Tags
Imports SwfDotNet.IO.ByteCode
Imports SwfDotNet.IO.ByteCode.Actions
Imports System
Module Program
    Sub Main()
        Dim file As New IO.StreamReader("C:\Users\geralt\MapData\swf_file_names.txt")
        Dim name As String
        Do
            name = file.ReadLine
            If name IsNot Nothing Then
                UncompressSwf(name)
            End If
        Loop Until name Is Nothing
        file.Close()
    End Sub


    Public Function Gettok(ByVal GettokText As String, ByVal GettokStr As String, ByVal GettokNum As Integer) As String

        Dim GettokTmp As String() = Nothing

        GettokNum = GettokNum - 1

        GettokTmp = GettokText.Split(GettokStr)

        Gettok = GettokTmp(GettokNum)

    End Function

    Public Sub UncompressSwf(ByVal file_name As String)

        Dim swfReader As New SwfReader("C:\Users\geralt\Desktop\MapData\maps\" & file_name)

        Dim swf As Swf = swfReader.ReadSwf()
        Dim tagsEnu As IEnumerator = swf.Tags.GetEnumerator()

        While tagsEnu.MoveNext()

            Dim tag As BaseTag = DirectCast(tagsEnu.Current, BaseTag)

            If tag.ActionRecCount <> 0 Then

                Dim sb As String = ""
                Dim enum2 As IEnumerator = tag.GetEnumerator()

                While enum2.MoveNext()

                    Dim dc As New Decompiler(swf.Version)
                    Dim actions As ArrayList = dc.Decompile(DirectCast(enum2.Current, Byte()))

                    For Each obj As BaseAction In actions
                        sb &= obj.ToString() & vbCrLf

                    Next

                End While



                Dim map_data As String = Gettok(sb.ToString, "'", 30)
                Dim map_id As String = Gettok(Gettok(sb.ToString, "push", 14), " ", 2)
                Dim map_x As String = Gettok(Gettok(sb.ToString, "push", 16), " ", 2)
                Dim map_y As String = Gettok(Gettok(sb.ToString, "push", 18), " ", 2)



                Dim efileName As String = "maps/" & Gettok(file_name, ".", 1) & ".txt"
                Console.WriteLine(efileName)
                Dim writer As New IO.StreamWriter(efileName)
                writer.Write(map_id & "|" & map_data & "|" & map_x & "|" & map_y)
                writer.Close()

            End If

        End While

    End Sub

End Module
 
Inscrit
22 Février 2020
Messages
26
Reactions
18
#2
Yo, après avoir passé ma journée à chercher des solutions (ouais c'est dur putain…) et essayer plein de combines de merde, j'ai fini par trouver la bonne. Après avoir trouvé la bonne dll (google > bing omg) en version 1.2.11 une erreur avec des dll du Framework .Net subsistait du coup gros bordel, j'ai fini par faire :
Projet Windows Form en .Net 4.0 (au lieu d'une app console) -> package NuGet swfdotnet -> remplacer la dll log4net 1.2.10 par la 1.2.11 et bingo !! Quel bordel ce langage, Python m'a manqué de ouf :'(

Allez, c'est du passé maintenant, go next !
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#3
Merci du partage,
SwfDotNet est une lib sympa même si obselète.
 
Haut Bas