Ojee, ik loop te ver voor de muziek uit
Met “testjes” doelde ik op zogeheten ‘conditionele sprongen’ in programmacode. In dit geval in de buurt van de ‘string’ - de bijbehorende mededeling - die erop wijst dat op die plek in het zoekprogramma van de CD-foongids gechecked word of de CD-foongids zich als bijna of helemaal “ge-expireerd” moet beschouwen.
Dtgwin.exe zegt daar als het ware tegen zichzelf: ok, ik ben de versie 2e kwartaal, is het al 15-10-2005 of niet, zoja, jammer dan. Anders misschien bijna? Gaan we Germ waarschuwen… Is het nog lang niet zo ver dan vervolgen we op zijn verzoek het starten van de applicatie.
Iemand die dat probeert te volgen met een hulpprogrammaatje, hier WDasm, ziet van dit soort ‘steenkolen-Engels’:
[code][…]
:0062633C 8BC7 mov eax, edi
:0062633E E8D9020000 call 0062661C
:00626343 84C0 test al, al
:00626345 744D je 00626394
:00626347 6A02 push 00000002
:00626349 6A02 push 00000002
:0062634B 8B470C mov eax, dword ptr [edi+0C]
:0062634E E8FDC6E8FF call 004B2A50
:00626353 83C4F8 add esp, FFFFFFF8
:00626356 DD1C24 fstp qword ptr [esp]
:00626359 9B wait
:0062635A 8D55BC lea edx, dword ptr [ebp-44]
- Possible StringData Ref from Code Obj ->“dd”-“mm”-“yyyy”"
:0062635D B8FC646200 mov eax, 006264FC
:00626362 E81970DEFF call 0040D380
:00626367 8B45BC mov eax, dword ptr [ebp-44]
:0062636A 8945CC mov dword ptr [ebp-34], eax
:0062636D C645D00B mov [ebp-30], 0B
:00626371 8D55CC lea edx, dword ptr [ebp-34]
:00626374 33C9 xor ecx, ecx
- Possible StringData Ref from Code Obj ->"Deze versie van De Telefoongids "
->“zal expireren op %s.”[/code]
De kunst is dan om te bepalen of soms gewoon te “raden” waar de beslissing genomen wordt, in dit geval of je nog geholpen gaat worden of dat men je om je eigen bestwil niet meer met verouderde gegevens wil laten werken.
Ter hoogte van “744D”, “je 00626394” is dat bekend geworden, “je” wil zeggen “Jump If Equal”.
Hier gaat het programma, ik neem aan na een elders in de meegeleverde dll’s uitgevoerde vergelijking van de systeemdatum met de gestelde einddatum, wel of niet verder met wat het aan het doen is of het “springt” naar een plaats verderop, bijvoorbeeld om je mee te delen dat het afgelopen is, kijken of je “OK” klikt en dan te sluiten.
Door bijvoorbeeld “74” in “75” te veranderen kan iemand proberen het omgekeerde te bewerkstelligen, “Jump If Not Equal”. Andere mogelijkheid, verander het in “EB”, “Jmp” altijd ongeacht welke uitkomst.
Door het origineel van dtgwin.exe, om het veilig te stellen een andere naam (“dtgwin.org”) te geven en in plaats daarvan een kopie (“dtgwin.exe”) te patchen kon ik even uitproberen of ik de logica daadwerkelijk kon beinvloeden. Dat leek het geval te zijn, de CD-foongids startte zonder klagen terwijl het virtueel al herfstvakantie was, dus zogenaamd eind oktober. Maar het was toen al tandenpoetsen-en-naar-bed, dus ik heb behalve de datum voor- en achteruitzetten verder niet getest.
Dit was vast meer dan je wilde weten en voor het overige, dit alles is natuurlijk academisch, je hebt er niets aan want het mag helemaal niet: