How to fake Windows XP Service Pack 2.

If you use Windows Server 2003 with Service Pack 2 like a workstation (as described in many nice tutorials like this) you can be quite sure that all applications designed for Windows XP could run without problems.

However there is a number of applications which refuse to install as designed for Windows XP with Service Pack 2 or later. A similar problem also exists with application which refuse to install over Winsrv2k3 on a x64 platform, while they would install without any problems on WinXP x64.

You can try to trick out these install programs by using a little utility called Application Verifier by Microsoft. Just download and install the correct version (if unsure, choose ApplicationVerifier.x86.msi).

Once installed, do as follows:

  1. Start Application Verifier;
  2. Go to File then Add Application (or press CTRL+A);
  3. Choose the .exe file that you want to trick (eg. setup.exe);
  4. From the Tests pane on the right, deselect all items;
  5. Expand Compatibility and tick HighVersionLie;
  6. Right-click on HighVersionLie and select Properties;
  7. Put the following values then press OK:
    Setting HighVersionLie on Application Verification

    • Major version: 5
    • Minor version: 1
    • Build number: 2600
    • Service pack major: 2
    • Service pack minor: 1
    • Suite mask: 0
    • Product type: 1
    • CSD version: (leave empty)
  8. Click on Save;
  9. While Application Verifier is still running, start the application.

When the application will call the GetVersion of GetVersionEx API function, it will return the fake values (in this case 5.1.2600 SP2.1, ie. Windows XP Professional SP2).

This works without problems for Adobe Photoshop CS3 setup program, as described in this article. Some other programs may use additional checks, such as AVG Antivirus, and hence they won’t work anyway.

For further details on parameters you could use to fake other Windows versions and/or platforms, please refer to OSVERSIONINFOEX structure on this MSDN article.

Estemporanea VIII.

Scene I: I don’t like the widescreens but the widescreens like me.

Perché io posso capire che 1280×800 sia una risoluzione un po’ strana. Però non è normale che sia GNOME che KDE si imputtanino e facciano finta che la risoluzione sia 1024×768 e mi mostri barre e finestre a 3/4 dello schermo… e tutto il resto dove lo mettiamo?

Scene II: I don’t like the bills but the bills like me.

Su Radio Radicale: «Abbiamo deciso di non candidarci alle elezioni politiche per non partecipare al banchetto dell’illegalità che caratterizza questo che ormai non è più uno Stato di Diritto; pertanto ci presenteremo solo alle amministrative con la Lista Bonino».

Vabè.

Dieci minuti dopo: «Pur sostenendo Rutelli in queste elezioni amministrative abbiamo comunque nostre caratterizzazioni specifiche».

Sostenendo chi?

Nudo per far divertire un po’ gli amichetti.

English abstract: yes, you came here because that thing about "naked4friends.com" is a virus/worm. Of course. At this moment there are still no infos about how to remove it. I don’t have time to test this on my PC. In case you may try to come back tomorrow. In the meantime just close your Windows Live Messenger application in order to avoid further infection of people in your contact list.

Vorrei capire da dove è sbucato ‘sto virus-o-non-so-cos’è che da ieri sera fa sì che un’infinità di contatti MSN mi rompa i maroni ogni dieci minuti con questo messaggio:

Emoticon con il tuo volto:-O http://naked4friends.com/?=$indirizzoMSN

Ma soprattutto mi chiedo com’è possibile che tutti ‘sti babbioni siano stati capaci di farsi infettare così facilmente. Anche perché, in realtà, se vado su quel sito risulta sempre un errore HTTP 403 (Service Unavailable) e non mi fa scaricare nessun file eseguibile "strano".

Boh.
Mi informerò.

[No, non mi metterò a dire la solita solfa tipo «non scaricate quel file!», tanto gli stolti restan sempre stolti e i traumatizzati restan sempre più furbi.]

Ah, per la cronaca: pare che, per colpa di questo blog, oggi alle 14.30 dovrò spiccicar qualche parola coi cari giuovincelli di Fuori Frequenza (in streaming o via Controradio su 97.3 MHz). E non da solo, ma – attenzione attenzione – con DisasterSofia. Non mi assumo alcuna responsabilità, sappiatelo.

ASCII-Art #1. Airstrike over the mourning crowd.

      Che succede?
                              Zitto e corri!
      oO                  OO
     .##.                //.
______db________________/\__________________

Perché ormai c’è una rassegnata ostinazione. E se in questo periodo la Grande Sfiga Universale sta lanciando continuamente degli spilli sulle mie gonadi, le dimostrerò che stoicamente resisterò a questi suoi attacchi alle s… Vabbè.

Potrei raccontarvi di 160 Km percorsi contro i mulini a vento, oppure di auto in sovrapressione, e altre fantastiche avventure. Ma mi limiterò a spiegare l’ultima.
Una chicca per gli smanettoni.

Ho alcuni PC messi in rete tra loro in modalità mista (in parte via Ethernet e in parte via Wi-Fi). Di questi mi interessano in particolare due. Uno lo chiamiamo GROOVE (192.168.0.2), ed è quello che regna sovrano, l’ammiraglia della flotta, insomma il più figo (anche perché, oh, l’ho pagato mica poco). L’altro si chiama VECTOR1 (192.168.0.253), altresì detto "il serverino" per via del fatto che, pur essendo vecchiotto, lavora alacremente come server HTTP, FTP, DNS, DHCP e tanti e tanti altri.

Ora. Dati i nomi a queste due bestiole è necessario spiegare che finora tutti i computer della rete si son sempre visti senza problemi. In particolare Groove guardava Vector1 e Vector1 guardava Groove. Tanto si son visti che alla fine si sono innamorati. Hanno sempre lavorato fianco a fianco. Per esempio, su Vector1 ho i siti, da Groove li modifico, poi punto il browser su Vector1 per visualizzarli. E altre cose così. A questo punto credo anche che abbiano fatto anche un matrimonio via Ethernet, e non vi dico che ho pensato quando ho visto certe collisioni qualche tempo fa sullo switch che li collega.

Poi Groove è partito per un’operazione chirurgica. Gli dovevano trapiantare per la seconda volta un alimentatore nuovo (e porca miseria quanto m’è costato ndr).

Al ritorno non è stato più lo stesso.

Ora Groove vede tutti (ma dico tutti) i computer tranne Vector1. Vector1 vede tutti (ma dico tutti) i computer tranne Groove. Di conseguenza: Groove e Vector1 non si vedono. Non si pingano, qualsiasi richiesta va in timeout, non si vedono con nessun protocollo. Un casino.

Io so cos’è successo.
Credetemi, Oxi lo sa che il mio computer ha un’anima.
E anche parecchio incazzusa.
È per questo che me lo sento.
Groove e Vector1 hanno divorziato.
Hanno divorziato, capite?

Serio. Mi rivolgo agli smanettoni che passano di qui, tipo quelle faccione da smanettoni di ABS e Bruno (a proposito Bruno, ho riletto poco fa il post con cui ci siamo conosciuti ^^). Secondo voi cos’è successo? Ma soprattutto: chi è che sta facendo lo stronzo dei due? Perché lo stronzo c’è, sicuro.

/* Considerate che a livello software non è cambiato nulla, e non ho firewall attivi, solo AVG. Nessun filtro IP o cose di questo genere. Ah, può essere utile sapere che sul serverino ho Big Brother, e ogni tanto ho scoperto che tenta una richiesta FTP su Groove… e Groove la vede! Però poi non riesce a rispondere. È come se Groove recepisse un messaggio dall’iperspazio però poi non sapesse a chi indirizzare la risposta. Boh. Dimenticavo: il DHCP però funziona (Vector1 è il server DHCP). */

Testa o croce v.2.0

Avete tante idee per stasera e sono tutte sostanzialmente indifferenti? O magari sapete benissimo cosa fare ma state facendo finta di essere indecisi per convincere gli altri a decidere a caso e tentare la fortuna nella speranza che esca quello che vorreste voi? O dovete scegliere cosa fare della vostra vita ma ritenete più opportuno che sia il caso a deciderlo? O, più semplicemente, siete indecisi fra più di due possibilità?

Lasciate stare i campionati di testa o croce. Noi abbiamo una soluzione più semplice.

Il Decisore è un piccolo script PHP che si preoccuperà di prendere le varie opzioni che avete inserito, ordinarle casualmente, e poi di nuovo, e poi di nuovo per un altro numero imprecisato di volte. Dopodiché il computer fa il tocco e chi esce si becca un punto. Poi di nuovo. E di nuovo ancora per tante volte quante ne avrete specificate nel campo "Tentativi".

Dopodiché usciranno i risultati della giocata con relativo vincitore.
E voi saprete che fare stasera.

No, non ringraziatemi. Anzi sì, così il mio ego ne sarà grato. =P

Qua la mano, cumbar’… to’, la mano scumbar’!

Ovvero: volevo inviare una mail a hubrys però ho pensato che: 1) se gli avessi mandato un messaggio privato per spiegarglielo Splinder si sarebbe mangiato il codice HTML che serviva senza far capire una cippa al destinatario, come accadde con Ossimorosa, e 2) alla fine è una cosa che può interessare anche altri.

Ovvero, ancora: se nel post precedente avevo ricercato quel minimo di comprensibilità, adesso non ci capirete na mazza pe’ ddavero.

Allora.

Capita, in una pagina HTML, quale può essere appunto il proprio blog, di avere dei blocchi di testo che occupano un po’ troppo spazio. Ad esempio, c’è chi ha molti link ad altri blog, c’è chi invece mette da parte una lista di link ai vari post che fan parte di una serie (ad esempio la tragica Telecomachia ^^), e così via.

Ebbene, noi vi possiamo aiutare. Dove noi sta per io e il DHTML, che a sua volta sta per Dynamic HyperText Markup Language, che a sua volta sta semplicemente per combinazione di CSS, Javascript e HTML (anzi, XHTML perché noi siamo fighi e usiamo le ultime novità del mercato).

Premesse generali, sostanzialmente inutili in questo contesto, ma che posson sempre servire in futuro.

Il CSS serve a definire molto più facilmente le proprietà di un oggetto HTML. Ad esempio, mettiamo di voler rendere un paragrafo di testo rosso. Senza CSS avremmo scritto:

<p>
 <font color="red">
  Questo è il testo che diventa rosso.
 </font>
</p>

Invece noi che siamo bravi e vogliamo fare i fighi che tra l’altro risparmiano pure un po’ di spazio, scriveremo:

<p style="color: red;">
 Questo è il testo che diventa rosso.
</p>

Voi direte: l’effetto è lo stesso, allora che ci frega? In verità vi dico, questa cosa ha un suo senso, ma se non lo capite in questo post come se fosse una rivelazione divina non ve lo potrò spiegare altrimenti, anche perché se no a quest’ora lavorerei alla Jackson Libri e voi comprereste libri da 700 pagine per la modica cifra di 50 euro (ehi, ci devo pensare…).

Ok, ve lo dico. La vera utilità del CSS risiede nelle classi. Sono una cosa fighissima: mettiamo il caso di avere 10 paragrafi disseminati qua e là, e noi vogliamo che siano mostrati tutti alla stessa maniera. Per esempio, questi 10 paragrafi, al contrario degli altri, devono essere tutti gialli su sfondo nero.

Ciao! Sono un paragrafo giallo su sfondo nero!

Per renderli così dovremmo scrivere qualcosa tipo:

<p style="background-color: black; color: yellow;">
 Ciao! Sono un paragrafo giallo su sfondo nero!
</p>
<p style="background-color: black; color: yellow;">
 Ciao! Sono un altro paragrafo giallo su sfondo nero!
</p>
<p style="background-color: black; color: yellow;">
  Me' basta. Fate finta che io sia già il decimo.
</p>

Sai che rottura se decidiamo, all’improvviso, di cambiare qualcosa, tipo mettere uno sfondo verde anziché uno sfondo nero? Se invece ci inventiamo una classe, e la chiamiamo, chessò, pippo, ci risparmiamo un altro po’ di rotture. La prima rottura che ci risparmiamo consiste nello scrivere, invece, così:

<p class="pippo">
 Ciao! Sono un paragrafo giallo su sfondo nero!
</p>
<p class="pippo">
 Ciao! Sono un altro paragrafo giallo su sfondo nero!
</p>
<p class="pippo">
  Me' basta. Fate finta che io sia già il decimo.
</p>

Chiaramente dobbiamo anche spiegare a qualcuno ‘sto pippo che mi rappresenta. Questo lo andiamo a fare all’inizio del codice HTML, nella sezione compresa fra <head> e </head> (intestazione), e più in particolare in uno spazio delimitato da <style type="text/css"> e </style> (che troverete già, bello come il sole e pronto per essere manipolato):

p.pippo
{
 background-color: black;
 color: yellow;
}

A questo punto, se volessimo cambiare qualcosa, ad esempio appunto lo sfondo, faremo una semplice modifica alla definizione di pippo anziché andare a modificare dieci paragrafi:

p.pippo
{
 background-color: black;
 color: green;
}

Ok, smettetela di scorrere la pagina: la parte interessante è qui.

Esiste una proprietà del CSS chiamata display, che può assumere alcuni valori. Quelli che servono a noi sono block e none. Senza scendere nei dettagli, se impostiamo display: block, l’oggetto viene mostrato, se mettiamo invece display: none, l’oggetto c’è ma non si vede.

Piccolo esempio:

Fai clic qui per mostrare/nascondere il testo.

Per prima cosa dobbiamo inserire una piccola funzione Javascript, possibilmente nell’intestazione (cioè, come detto prima, quella sezione del codice HTML compresa fra <head> e </head>). Il codice l’ho rubato a Trentamarlboro, che ringrazio e con cui mi complimento davvero se per caso è lui l’autore, vista l’implementazione semplice ma efficace:

<script type="text/javascript">
function toggle(id) {
 if (document.all) {
  if (document.all[id].style.display == 'none') {
   document.all[id].style.display = '';
  } else {
   document.all[id].style.display = 'none';
  }
  return false;
 } else if (document.getElementById) {
  if (document.getElementById(id).style.display == 'none') {
   document.getElementById(id).style.display = 'block';
  } else {
   document.getElementById(id).style.display = 'none';
  }
  return false;
 }
}
</script>

Successivamente dobbiamo modificare tutte quelle parti del codice HTML che vogliamo modificare. Per esempio, prendiamo quello che avrebbe dovuto fare hubrys per la serie della Telecomachia (mi permetto di aggiustarlo un po’ perché in realtà ci sono dei piccoli errori nel codice originale):

<div class="boxSidebar">
<h2 class="sectiontitle">Biastemario:</h2>
<h3>TELECOMACHIA</h3>
<a href="http://...">Prima puntata</a><br />
<a href="http://...">Seconda puntata</a><br />
<a href="http://...">Terza puntata</a><br />
...
</div>

In questo caso diventa:

<div class="boxSidebar">
<h2 class="sectiontitle">Biastermario:</h2>
<h3>
 <a href="javascript: void(0);" onClick="toggle('biast_telecom');">TELECOMACHIA</a>
 </h3>
<div id="biast_telecom">
  <a href="http://...">Prima puntata</a><br />
  <a href="http://...">Seconda puntata</a><br />
  <a href="http://...">Terza puntata</a><br />
  ...
</div>

In questo modo apparirà più o meno come segue:

Biastemario:
TELECOMACHIA

 

Ok. Attendo notizie.

How to remove Win32:dialer-520

I’ve found a dialer on my system, for which I haven’t found enough info around the Internet. So I’ve thought that it would be useful to share the procedure I’ve followed in order to remove it from a Windows XP computer.

This dialer is generically called Win32:dialer-520. My antivirus did not find it, so I’ve had to found it heuristically (indeed, I’ve had to look for strange startup items via Spybot Search and Destroy). Looking around on forums I’ve found that some other antivirus are able to discover it, however they can’t delete the related files.

The problem, in fact, is that this dialer works in a very odd way. It installs a file, in this case called winzwr32.dll, in the %windir%system32 directory (usually C:WINDOWSsystem32). This is a DLL library, so it does not work as a process itself (that is, a standalone program such as explorer.exe), hence it does not compare in the list of processes in Task Manager. A DLL just contains some functions that do something when invocated from another program.

In other words, this dialer is almost invisible. The only thing that makes you alerted is the fact that it randomly creates a program called xxxxx.tmp.exe (where xxxxx is a sequence of random alfanumeric characters) in the %TEMP% folder, then runs it.
This program opens a pop-up window asking you to create a modem connection to an unknown ISP, informing you that you’ll have to pay just 15 € per call (whoa!).

As a natural consequence, I had to find which program called this DLL. This program is winlogon.exe, that is the program that controls the logon and logoff procedures in Windows XP. This process is critical, so it must be loaded before anyone else and must be one of the last to be closed; thus it cannot be closed when someone is logged onto the system. It also can load some DLLs, such has the one that notifies messages through shiny baloons and so on.

The dialer installer silently adds some keys in the Windows Registry in the following path: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonNotifywinzwr32. These keys tell winlogon that it has to open winzwr32.dll, and do some things when system is starting up and some others when it is shutting down. Among these things there is the task of checking if someone deleted these keys, in order to restore them.

This means that:

  • The winzwr32.dll file cannot be deleted because it’s in use. This file is always loaded, even in Safe Mode.
  • If we try to delete that keys in the registry, in order to avoid letting winlogon load this DLL at next reboot and then be able to delete the file, the DLL will be invocated during the shutdown phase, will discover that the keys are deleted, and will recreate that before rebooting, hence making useless the changes.
  • As winlogon.exe is among the very first things loaded into the system, there is no easy way to tell Windows to delete the file before loading winlogon (better: I’m sure there is one, but I can’t find the way).
  • We would need to unmount the hard disk containing the operating system and plug it into another Windows XP system in order to avoid booting the "infected" system at all, then to be able to delete the unwanted files.

By luck I’ve found an easier way. But, before explaining it you must be warned. 1) You must be administrator of the computer in order to be able to do that. 2) Please notice that these info are provided for didactical purposes, but you accept to use at your own risk. 3) No liability for any damage due to following these steps.

If that’s ok, just follow these steps.

  • Go to Start, then Run…, then type regedt32 and go to OK;
  • Follow this path: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonNotifywinzwr32;
  • Delete the following values: DLLName, Startup, Shutdown;
  • Right-click on winzwr32, then go to Permissions… and click on Advanced;
  • Select SYSTEM, then click View/Edit…;
  • Set on Deny the following values (hope translation from the Italian version is correct): Set value, Create subkeys, Owner write.
  • Click on OK, then again on OK, then reboot;
  • After rebooting, go to Start, then Run…, then type cmd and go to OK;
  • Type del %windir%system32winzwr32.dll then press Enter. Et voilà! The file has been deleted!

In order to clean up the system, you should also come back to regedt32 and delete the winzwr32 key (although it now wouldn’t work in any case). Also you may want to delete the *.tmp.exe files located in the %TEMP% folder (usually C:WINDOWSTemp).

For any further question just ask …and hope I’ll be able to answer.