are
January 23rd, 2011, 14:44
Ok, so I've got this program that only works on windows 98 SE or before. It's DOS, and seems to be 16bit. The application is a business's point of sales system so it helps scan items and come up with prices for that item, (it also does inventory management, customers management, the works).
I've been trying to pull information out of it with some success... I need to use it's DOSy interface, and read it's DOSy plain text reports. It's grueling and inefficient and I can't figure out how to dump the whole database into plain text where I can peruse and parse the information. When I print out a report, it displays this loading screen showing the strings { SELECT, SORT, MERGE, PRINT } followed by the percentage of completion (It rifles down the list, you know what I mean). I didn't know it at first, this isn't my area of study, but I'm starting to think that sounds like database talk!
So, I've been studying database information systems and I'm wondering if it's possible that I might be able to override the programs built in SELECT query with my own, thus outputting what ever I want from what ever database they're using. Or maybe I should try to identify the database they're using and extracting the data through a ready-built frontend that allows you to do queries against the data.
So...
I've been trying to pull information out of it with some success... I need to use it's DOSy interface, and read it's DOSy plain text reports. It's grueling and inefficient and I can't figure out how to dump the whole database into plain text where I can peruse and parse the information. When I print out a report, it displays this loading screen showing the strings { SELECT, SORT, MERGE, PRINT } followed by the percentage of completion (It rifles down the list, you know what I mean). I didn't know it at first, this isn't my area of study, but I'm starting to think that sounds like database talk!
So, I've been studying database information systems and I'm wondering if it's possible that I might be able to override the programs built in SELECT query with my own, thus outputting what ever I want from what ever database they're using. Or maybe I should try to identify the database they're using and extracting the data through a ready-built frontend that allows you to do queries against the data.
So...
How can one identify the database system?
There's dozens of EXE files associated with this application. I think I found physical databases...
I used FileMon.exe and noticed access to CUSTSLS.G03 when probing year 3 sales by customer...
And Custmas.gsg seems to be the customer master list database (full of human readable string regarding customer's accounts)
What should I break point to get access to the SELECT command string?
I have zero experience working with 16bit apps. I'm very discouraged to not know what tools to pick, or how to use them. I remember reading a softice tutorial a long, long time ago, and I think I clung on to that binary, but I'm operating in a Virtual machine atm which I understand might complicate things. Visually, on the app, I am prompted with a "dialog box" that asks,
Caption: "Routing Ticket",
Message: "Route report to:"
And my options are "Printer" or "Mail" (mail writes a .rpt to the hdd).
I can use left arrow or right arrow to select either printer or mail and then hit enter. The following screen would display the progress screen (SELECT 100%, SORT 100%, MERGE 28%, PRINT 0%).
So what kind of a thing should I break on? For that matter, how do I get a list of things to break on from the .exe?
Or where would I find the hard-coded queries?
There are SO many files! It's prohibitively ridiculous. That's why I haven't just sat around perusing. But maybe there's a trick to it? To begin the program, you click START.exe. After that it's a mystery of hdd writes and reads.