ÜÜÜÜÜÜ Ü ÜÛßßÛÛÛÛÛÛÜ Ü Û ÛÛÛÛÛÛß ÜÜÛÛÛÛÛÛÛÛÛÛÛÛÛß ÜÜÜÜÜÜÜÜÜÜ ßÜÛ Ü ÜÜÜÜÜÜÜÜÜ °ß ÞÛÛßÛÛ ÜÛÛßßß ßÛß ÜÜÛÛÛÛÛÛÛÛÛÛÛÛÛÜ ÛÛÛÛÜ ÜÛÛÛÛÛÛÛÛÛÛÛÜ ° ÛÛÝ ÞÛ ÛÛ ° ÛÛßß ÜÜÜÜÜÜÜÜÜ ßÛ Û Ü Ü Ûß Ü Û ÛÛ Û ßÛ ÛÛß Ûß ßÜÜ ÜÜÛÛß ÛÜ ßÝ Ü ÞÛÝ ÞÛ Û ÜÜÜÜÛÜÜÜÜÜ ÛÛ Û ßÜ ßÛÛ ßÛÛÛÛÛÛÛÛÜ ÛÛ Û ÛÜ ß° ßÛ ÛÛÜ Û ÜßßÜ Û ÛÛÛ °ßßßßßßßß²²Ü ÛÛ Ü Û ßÛÜ ° ÛÛ ßÜ ° ßÜ Û ÛÛÛ ßÛÛ ÞÛ ÜÛÛÛÜ Û ßÛÜ ÛÛÜ ßÜÜÜÜÜ ÜÜß ÛÛ ÛÛÛ Ü ÜÛÛ ÜÜ ÛÜ ° ÜÛÛ ßÛÛÜÜ Ü ÜÜÛÜ ßÛÛÜÜÜÜÜ ßß ÜÜÛÛÛ ÛÛ ÜÛ ß Üܲ²Û ß Û ß ÜÛÛ °ßßÛÜ ßßÛÛÛÛÛÛÛÛÛÛÜ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÜÛÛ ÛÛÛÛÛÛÛÛÛÛÛß ° ÝßÜÜÜÛÛßß ° kP°ßÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ÜÜ Ü Ü Ü Ü Ý ß ß ß Ü Üß ßÜÛ Ûßß Ûß± Ûß± Ûß± Ü ß ß Ü ß ÜßÜ Û ²ÜÜ ²ÜÛ ²ßÜ ²ßß ú ú ú-ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú P.P.L.X - 1.7O ú ú ú-ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú PCBoard Programming Langage eXtractor (C) 1995 Lone Runner Main Coding - Lone Runner Parts - The doC ú ú- EACH VERSION HAS ITS NEW STUFF, READ THIS DOC AGAIN ! -ú ú ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ READ BEFORE USING ! ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú You may use this program provided that : - You are not part of any federal group (i don't like federal groups ;)) - You are not part of Clark Development Company (nothing personnal...) - You planed to use it at home for personnal purposes only (no money here!) THE AUTHOR MAY NOT BE RESPONSIBLE FOR ANY CHANGE MADE TO ANY PROGRAM BY USING PPLX. Nobody will ever ever enter an action against Borland because they made Turbo Debugger or to V Communication because they made Sourcer. There is no more reason for PPLX author to be responsible for any law violation by using this software. If you don't agree with the above terms or if you are not in accordance with restriction use, you HAVE to delete this software IMMEDIATLY. Further use of this software will be considered as the acceptance of the above terms. ÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ DESCRIPTION ÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú PPLX is a PPE decompiler... working with PPE's up to 3.20 handling FUNCTIONS & PROCEDURES, and performing heuristic-like analysis, allowing you to detect backdoors, customize uncustomizable PPE's, or have a look into any PPE you choosed to use... See WHAT'S.NEW for release history. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ INSTALLATION ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú Hmm... copy PPLX.EXE to your UTILS\ or WHATEVERITISCALLED\ subdirectory, preferably in your PATH... ÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ USING PPLX ÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú PPLX FILENAME[.PPE] [/A] [/L] [/U] You may use wildcards instead of a filename... for example : PPLX C:\PCB\PPE\*.PPE /A or PPLX WEEKTOP.PPE /A /L /A (that replace the old /ANALYSIS) allows PPLX to make an heuristic analysis of the ppe beeing decompiled. If you decompile PPE's only to check backdoors, you will love this switch! Look at the end of the PPX file to see what we are talking about. /L tells PPLX not to delete the PPU (decrypted PPE) file after decompiling /U tells PPLX to only decrypt the PPE to the corresponding PPU file. Previously used /DEBUG switch has been removed from the release version *.PPU ÄÄÄÄÄ When decompiling a PPE 3.xx, PPLX creates a PPU file, that is in fact the PPE 3.xx decrypted to a 2.0. Sometimes, you can even run the PPU file after renaming it to .PPE (this can be usefull for some people still running PCB 15.1). However, this is not recomended because some codes (such as FINDFIRST or procedures & functions or many other things) wont be handled by the old PCB... I have no idea what PCB does in this case, but i believe that it would not be good (crash ?). Leaving the PPU (/L) or only decrypting the PPE to a PPU file (/U) can also be done if you want to have a look into the PPE... I don't know exactly what you can do with it but some people asked me those switchs. WARNINGS/ERRORS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Please, if you find a PPE that does not decompile, send it to me, uuencoded to my email address : lone.runner@nuxes.frmug.fr.net "x function(s) were declared but not defined..." This means that, in the original source code, a function was coded but not used. When PPLC compile the source, if a function is not used, it doesn't update an important field that holds the function coordinates... In this case, PPLX will not be able to detect the beginning of the function, and, if there are local variables, to declare them. The same problem may appear with procedures. "Unknown statement xxxx, dunno how to handle it... Skipping!" This means that an unknown statement was used, theorically, this cannot happen, but in real life, a corrupted PPE or an anti-decompilation trick can produce this warning. If an unknown statement is found, it is skipped, causing some next statements to be irrationnal... Code may redecompile correctly after some instructions but it is not likely that the code will be recompilable. "Unknown function xxxx, dunno how to handle it... Aborting!" This is a fatal error, an unknown function cannot be skipped, it is due to the same things (corrupted PPE, anti-decompilation trick) but cannot recover. "FATAL ERROR! ..." Any error message beginning with "FATAL ERROR" means that the PPE cannot be decompiled due to one of the following reasons : NORMAL REASONS (if they happen, send me the faulty PPE!) - An unknown anto-decompilation trick was used - You did not have enough memory - The PPE was corrupt - You used PPLX on a PPE compiled by a futur and unsupported PPLC (currently, PPLX can handle 1.0 to 3.20 which is the latest so far) SHITTY REASONS THAT SHOULD NOT HAPPEN BUT THEY DO BECAUSE YOU'RE STUPID (if they happen, keep your PPE :)) - You patched PPLX to make him do some misterious things (hmmm... ;)) - You traced PPLX during decompilation and changed a random variable. - You patched you PPE before decompiling it, just for trying to make a brand new anti-decompilation system. (Well... PPE's are encrypted, changing only one byte will fuck up the rest of the PPE unless you can decrypt it, patch it, and recrypt it...) FOR/NEXT/WHILE/IF/THEN/CASE/... ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Don't be surprised by a strange line of code, for example "If (1 < 0)" is often used to initiate a FOR/NEXT loop... This is due to PPLC that convert all loops to IF/GOTO... That's lame, yes, but that's the way PPLC does it... :( BACKDOORS ÄÄÄÄÄÄÄÄÄ Don't be shy ;) Decompile all your PPE's, and check the statements/functions usage report, a GetAltUser in a JOIN replacement may be strange ;) Use /A... PPE'S RUNNING DIFFERENT AFTER BEEING DECOMPILED & RECOMPILED ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Some PPE's (CSSC for example) compute a self check to see if they were decompiled and recompiled... It is not a big deal because you have the source so you can remove the self-check test. ANTI-DECOMPILATION SYSTEMS ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Sometimes, PPLX will report "Anti-decompilation system stripped!". In fact this happen when a suposed anti-decompilation system has been found. Depending on the anti-decompilation trick used, PPLX will remove or modify the line so it can be decompiled. Sometimes you won't even see the anti-decompilation in the resulting PPX file, sometimes you will have something like : INTEGER001 = INTEGER001 - * Just modify this line or remove it so the file can be recompiled. When PPLX remove the line itself, there is always a risk that this line was really used in the code. For example, if a coder put an anti- decompilation trick on a line that assigns a variable, he can always use the result of this assignation elsewhere in the code. Because the line has been stripped, the PPE will not run as before... Well... Get a life ! you have the code ! Don't expect me to do everything for you ! :) PPLC BUGS ÄÄÄÄÄÄÄÄÄ We all know this, PPLC is not bug free... unfortunatly, there are cases where PPLC bugs prevent a source from being decompiled correctly... In most cases, PPLX will detect the bug and place a warning in comments, so you can check easily what's going on... But sometimes PPLX will not detect the bug, simply because PPLC compiled the thing as another statement... In those cases, PPLX will decompile what is coded, and will not be able to guess that PPLC was wrong when compiling it... For example, try to compile : IF (!(A == B) && !(C == D)) THEN... and IF ((A == B) && !!(C == D)) THEN... Those two statements are compiled the axact same way by PPLC although they are not equivalent... However, PPLX will always decompile to the first case, wich is the most common one (who will put two NOT on the same test ?!!!) and, more important, the one that PCB actually execute... ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ WARNINGz / DISCLAIMER ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ This decompiler should work perfectly on your machine as it is the case on mine. However, some PPE may not decompile, due to some new anti-decompilation tricks that maybe will cause PPLX to crash... It is possible, also, that PPLX crash or fail to decompile a PPE because of a special instruction chain that i didn't manage to handle... In such a case, please mail me an uuencoded version of the PPE... þ Do what you want with this... You may use this program in any way you want, you may destroy it, burn it, eat it, smoke it, inject it, vomit it, kick it, suck it, piss it, shot it, print it with reversed lines, rename it to zip, arj, arc or whatever you want, try then to extract it, to pkzipfix it, you may also perform sort on it, uuencode, crypt it with PGP, play it on your GUS or even your SB, you may even decompile, modify it, you may do WHAT YOU WANT, but NO MEMBER OF AEGiS CoRP MAY BE RESPONSIBLE FOR ANY DAMAGE CAUSED BY THE USE OF THIS PROGRAM OR IT'S MODIFICATIONS... þ I don't ask any money for you to use PPLX, so don't expect support if you experience troubles with this program. If i have time, i will answer each email, but i cannot garantee this nor. Don't think it is because i have a big ego, but i simply don't have much time :) Anyway, be patient, answers may come a lot later than expected, but they may come... ÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ FINAL WORDS ÄÄÄÄÄÄÄÄÄÄÄÄÄ--ú ú ú þ Clark Development Company ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Still not decided to make OBJ code ? :) þ Shareware PPE Coders ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Well, sorry men, I also make PPE's, and very large ones that take many months of programming, but asking money for such pieces of crap is lame... þ PCB Sysops ÄÄÄÄÄÄÄÄÄÄ Remember ? -> NEVER change a copyright notice ! :) We have seen too many sysops changing PPE's authors name and doing such lame operations... respect the work of a good coder... don't be lame, let his name and notices... þ Captain Hook, Guru of the 71th dimention [PV ;)] ÄÄÄÄÄÄÄÄÄÄÄÄ Hmm... 2 minutes to remove your anti-decompilation system... well... i'm sure you can do better... Try again! :) þ Copyright-removers / Backdoor-creators / Lamers & Co ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Don't bother, go to hell immediatly, don't wait to die... thanks. þ Everybody ÄÄÄÄÄÄÄÄÄ Suggestions ? Contacts ? (legal only) * INTERNET ADDRESS CHANGED FROM v1.50 AND BEFORE!!! * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Write to : lone.runner@nuxes.frmug.fr.net NOTE : You CAN now send UUENCODED files, i'll receive them :) Also, it is possible that you don't have the *LAST* version of the decompiler since i release new versions when i find bugs, that means that there is no periodicity for new releases of PPLX. For this reason, mail me to ask the last version of the decompiler before telling that it is impossible to decompile a PPE :) Although i will try to make new versions as soon as bugs are found, i cannot garantee that i will release one each time i found a new PPE that don't decompile... But please, PLEASE !!! Don't ask me to explain the PPE format :) Oh yes, of course, SOURCE IS AVAILABLE... for 1.000.000$ Cash Only. If you want to support AEGiS CoRP ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ You want to legalize marijuana ? jason.bourne@nuxes.frmug.fr.net You want to play paintball and break your leg ? gandalf@nuxes.frmug.fr.net You want to trash norton commander ? the.doc@nuxes.frmug.fr.net Tha wan ta chad lak diss ? kloy@nuxes.frmug.fr.net You want to exchange raggae CDs ? new.id@nuxes.frmug.fr.net You want to kill Windows ? number.six@nuxes.frmug.fr.net You want to give hardware ? ;) lone.runner@nuxes.frmug.fr.net * PGP KEY CHANGED FROM v1.50 AND BEFORE!!! * ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Here is the revocation certification for my OLD key (so you know this version is not a fake :) ) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6 mQCNAi+5pPgAAAEEAL/3Dtnn0sq3tEqvFVcXOo6gZiWZzQ+6bNjPOpLv7Wfh58Mj fF/ySJBrJQjTv7CoHVrUxY/ev3VgBpgmmS6RKhZTdv+Grso6nDzoX1B7WSQGRqVW JkII6zchYbr3HpCbYf5M1ui4bZTG59SUQAj9fq8U9flWOyLZBGMxOUzkhwwdAAUR iQCVAgUgL/wReGMxOUzkhwwdAQFOVgP9Ew5THLYh6LlWig1yJnp4HV7kPZonCYHM vreXP118CoHQ0D3cWRhfGTvpS57GnfIiodOK8zlZ4sU+kUcGKLTuj9jiQGfyLjTc d9lX4LSTAMrkcafTntfHw1MEYZLmHjMy0CHS5w8U+wJkpZ2ufBa/qDSWBrEywTe4 VF1rOoSH+9i0L0ZyYW5jaXMgR2FzdGVsbHUgPGZyYW5jaXMuZ2FzdGVsbHVAZWxl Y3Ryb24uZnI+iQCVAgUQL7lXS2MxOUzkhwwdAQFCbAP/Q5sYOEdcY+uL7MLG2hpJ 0uLN3mwcpfT2e1/xNp//jhqAg845MrgRytkJ+gVrBNyj9PkpBO6coQQggOVsPu50 UF+OU5jIHCl7JrWcIUBPp/WzNZTiqzP19txa9lghJkZzFZxPK1OZ/1u2X4hfvj/V O6L90x6UaqhPYIMFR7YfYc8= =U+IQ -----END PGP PUBLIC KEY BLOCK----- And here is my BRAND NEW KEY ! (much more nice looking isn't it ? ;)) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6 mQCNAi/8EHAAAAEEAKmS4/mymaVeyczvrKdr4sSdj8vKXHWz7SOK5wcI3S/bkIzk cF7b0/V35uP5ItStUxNsU54zRDS9snl3MH4/9wgcpky/GEGVAeuC0suybpBOLiJP JKUkffhk2jlB7qFB8+dQhMjBc1iUST8rDSuID7t7ChqdY2xHihxaVwFGSpdVAAUR tB5sb25lLnJ1bm5lckBudXhlcy5mcm11Zy5mci5uZXS0C0xvbmUgUnVubmVy =sqjP -----END PGP PUBLIC KEY BLOCK----- ÄÄÄÄÄÄ--ú ú ú þ SOAP ÄÄÄÄÄÄ--ú ú ú Do you know SOAP ? No ??!!? Well... SOAP stands for "State Of the Art for PCBoard", it is a fast-growing internationnal network dedicaced to PCBoard. For now, SOAP is distributed in France, Spain, Italy, Denmark, Germany and Switzerland, and many groups has joined (like AEGiS, TNT, ECR and more). The purpose of this net is to create a big meeting place for all sysops that have interests in PCB (PPE Coding, Configuration problems, Interfacing, Ansi/ascii art, etc...) There are also group-restricted confs for PPE group members. An echo file is under develoment and should spread all productions from all groups on SOAP and more... If you want more infos (Conf list, etc...) see the Soap Infopackage included into PPLX archive. See ya in a SOAP Conf ! ÄÄÄÄÄÄÄÄ--ú ú ú þ GREETS ÄÄÄÄÄÄÄÄ--ú ú ú Gandalf/Infiny/AEGiS - Still working on this LiNUX proggy? ehh? :) The doC/AEGiS - Hey! Can't you do anything else than playing on your brand new P5? :) Chicken/Tools4Fools - Hey... Captain Hook fucked both of us ! Seems like more and more people can decrypt and recrypt a PPE... We'll have some work... btw... i don't know about you, but i did not have anything else to do ;) Number Six/AEGiS - C&C rulez... Ingeneers rulez ! :) New ID/Massive Posse - Yo pignou(f)! :) On t'a attendu a la GP9! nabok! Jason Bourne/AEGiS - Legalize... Stop Nuclear Testing... Ferem/MWB/AEGiS - Hope to hear again from MWB soooon ! :) Kloy / (´RT - Are you dead ? Qube / Tools4Fools - Hope to see you in another party! dunno where but i look forward to it! Unfortunatly i won't be at TP5... but i'll try to see with later parties... Hope also to see your board back soon! Turbo-D / Triloxy - Stop drinking, man...! :) Speed Freak / Triloxy - MOD Selection suxx ! :) Medicus / Keen Like Frogs - Don't worry, i'll reply to your mail... i'm just a little busy... but i don't steel your disk, i'll mail you one back as soon as i have some time ;) Maybe with the next release of PowerPPL... All (good ;)) PPE Groups - Go on, continue to release new products, and feel free to chat with AEGiS members, write to aegis.corp@nuxes.frmug.fr.net ! Greets also to all my contacts over the PPE scene, all sysops from the boards where i usually log, all people that already or will send me email about PPLX, reporting problems or just telling they use it... :) At least, greets to Marie-Pierre, Florentine, Andrea, Iwona, Charlotte, Camille, Dominique, Alexandra, Line, and all the nice girls who i gorget their names (shame on me), and who will, for sure, never see this file :) _.Lone Runner _ _ _ ___ ___/\ _________/\ /\_____________/\________________ ___ _ _ \/\______________ / _ \/ _________ / ______________________ / __________ / _/ __/ \ ____)___\/ \ \_/ \/\___________ \/_ \ \ \_ \ \_ \__ \_ \_ / / \______\ /____________/________________/_____________/____________/kP ú-------`------'---------------------------------------------------------ú