Sender: Received: from ([] (may be forged)) by (8.8.6/8.8.6/2.9) with ESMTP id NAA19596 for <>; Sun, 16 Nov 1997 13:33:07 -0500 (EST) Received: from ( []) by (8.8.5/8.8.5) with SMTP id TAA08730 for ; Sun, 16 Nov 1997 19:31:47 +0100 (CET) Received: (qmail 4274 invoked by uid 0); 16 Nov 1997 18:32:11 -0000 Message-ID: <> Received: from by with HTTP; Sun, 16 Nov 1997 10:32:10 PST X-Originating-IP: [] From: "pepper" To: Subject: script 1 of 2 Content-Type: text/plain Date: Sun, 16 Nov 1997 10:32:10 PST Hi whoever is there: FRAVIA is the greates page I ever found on the WEB. Helped me a lot and guess its time to say not only thank you but also to send some small "note". Have followed your instructions HOW and WHAT to send. Hope it will be interesting for more than only me. Pepper [PC] - "Script follows after next line" ============================================================== O'Basic - a real joke if used for Shareware Registration ! I found a nice tool from a German author: SysSave 3.2 which protects against crashes of the Win 95 Registry. Really fine. But more fascinating was the protection I never saw before. As usual asking for a name and a RegCode looked simple. Lets run WinIce and have a look using typical BPX like GetWindowTextA. The code we find looks crazy, like a Visual Basic program. But it is not VB. It is a kind of a script language called O'BASIC. And really we find OBENGINE.DLL which obviously does something similar as the well known DLLs for VB. Do we need a Decompiler and where to get from ? No, because O'BASIC works a bit different to VB. To shorten the story: set your BPX to enter somewhere in the code and then make a dump of the memory. Scroll up and down in a wide range and very soon you will see something in the Memory Window (NOT in the Code Window) which looks like clear Basic Source Code. Obviously the source code is saved in tokens like in VB cause the EXE-File does not show readable instructions. But during runtime the source is extracted before executed by OBENGINE.DLL So I call it a "Script Language". In the above mentioned sample we find in the memory dump: L# = Len(UserIn$) For I# =1 to L# Name#[I#]=Asc/Mid(UserIn$),I#,1) EndFor Reg# = 0 For I# = 1 to L# Reg# = Reg# + (Name#[I#]*I#) End For Reg# = Reg# + (SqRoot(Reg#)*SqRoot(Reg#)) Reg$ = Oct(Reg#) So simple like any Basic. UserIn$ seems to be the Name entered and Reg$ to be the RegCode. Lets try "Pepper" as Name and calculate the RegCode: 10636 - Bingo! A KeyGen now takes a few minutes. So what we learn is: if we have some unknown language using a DLL it's worth to make a memory dump during runtime... BtW: looking for the KeyGen ? Its out there as PC_SS32.ZIP by Pepper [PC] November 97 ______________________________________________________ Get Your Private, Free Email at