Remko Weijnen's Blog (Remko's Blog)

About Virtualization, VDI, SBC, Application Compatibility and anything else I feel like


I just read an answer on StackOverflow with this code:

Unfortunately it lacked explanation, so what does this code do?

It reads offset $4 from the Thread Information Block (the top of stack) into eax and then offset $8 (stack base) into ebx.

Then it substracts the two and moves that into variable eu, that’s all!


About a year ago I wrote a checksum calculator for the Volkswagen RNS 510 navigation unit.

The checksum is a variant on Crc16 and is present either at the end of certain files (eg #CRC16:db1d) or as a special file with the name CRC.16.

The tool is a little exe that takes the filename as the only parameter.


Have fun with it!

RNS 510 Checksum Calculator (3710 downloads)
  • Filed under: Embedded

    I was working on a PowerPoint presentation that included screenshots that were using the Appear animation. I use it to only show a particular screenshot when I am actually talking about it.

    However when editing the slide, the screenshots hide the slide text which makes it difficult to edit it.

    And in the Animation Pane the pictures are shown as Picture1, Picture2 etc.


    So I wanted two things;

    1. Rename the object to a more meaningfull name in the Animation Pane
    2. Hide the screenshots when I want to edit the text in the slide.


    Read the rest of this entry »

  • Filed under: General

    I started using the i-Clickr PowerPoint Remote iPhone App for my presentations recently. I like this app as it shows me the current (or next slide), annations and previous/next buttons:



    Read the rest of this entry »

  • Filed under: iPhone

    Again an old war story, this time about timezone handling in Outlook/Exchange.

    I am not sure which year it was but I had just started to work for a new company and inherited an Exchange 5.5 Server.

    The mail had been migrated from an earlier version and calendar data was migrated from Schedule+.

    On the first change to Daylight Savings (DTS) all recurring appointments where shown one hour later (or earlier can’t remember) in Outlook. A manual change was not an option: there were over 2000 mailboxes each with a lot of appointments.

    We first tried a workaround by disabling DTS on the the workstations and then manually change the time when changing from and to DTS. 

    But this influenced the timestamps on externals mails and of course appointments with external parties.

    After a lot of (and I really mean a lot) of researching I found that Outlook stores all times in an appointment as relative (UTC) time.

    Upon display it uses an undocumented TimeZone descriptor field to convert to Local Time.


    Read the rest of this entry »


    I just found a very old backup file containing old source code for a few tools I wrote ages ago.

    This was in 1997 on my first job for a company called PTT Telecom (the Dutch Telecoms) and I wrote some tools to make life easier.

    They were all written in Turbo Pascal and supported Long Filenames when running under Windows ’95 (there was a trick to do that under DOS).

    The first tool was called Retreive Tool, it parsed a backup file from a private branch exchange (PBX) and could make reports about Licensing, the hardware in the PBX, Extension numbers and their hardware positions and so on.



    Read the rest of this entry »


    If you want to check if you are running on a Server Core edition of Windows you can use the GetProductInfo API.

    GetProductInfo takes 4 input parameters that can be obtained using GetVersionEx and the OSVERSIONINFOEX structure:

    No we call GetProductInfo:



    Read the rest of this entry »


    A while ago I started exploring the firmware of an RNS510 Navigation unit. The RNS510 is an OEM navigation system, manufactured by Continental Automotive and is used in several models of Volkswagen, Seat and Skoda Cars

    When the units is booting it shows a startup logo and I wanted to replace this logo with my own picture.


    Read the rest of this entry »

  • Filed under: General

    I needed to delete around 50 scheduled tasks from several machines in Altiris because something went wrong in on of the first jobs.

    It would have better if the jobs were configured to fail on error and not continue but they weren’t.

    Deleting the jobs from the Altiris console is very, very, slow. First the console asks for confirmation (after showing the hourglass for a long time):


    Then the actual delete can take a few minutes and then the next server and so on.

    I decided to delete the tasks directly from SQL.

    I know this is not preferred but I think in the end it’s safe enough because I found a stored procedure called del_event_schedule which looks like this:

    So al it does is a (transacted) delete from the table.


    Read the rest of this entry »


    I was digging around in termsrv.dll yesterday when I noticed that there are some (well 372 to be exact) SSL certificates inside the Terminal Server binary (termsrv.dll):


    Two of them seem to actually contain the private keys as well, but I am not 100% sure it may be just a certificate in another format.


    Read the rest of this entry »