Jump to content

Pidgin 2.6.6 on Windows 95 OSR 2.1?


Recommended Posts

Posted

I have been trying to get Pidgin 2.6.6, last version of Pidgin for Windows 98/ME to run on Windows 95 OSR 2.0. However during startup I get error about missing call kernel32.dll:virtualallocex

As far as I am aware that call is exclusive for the Windows NT family of operating systems and does not exist on Windows 9x. On 98 it starts without error and I got some sort of theory why: Windows 95 is identified as 4.00 by version number which is same as NT. Windows 98 is 4.10. I think for some reason program thinks it is on NT4 which 2.6.6 can also be run on and fails on that that call. Is there way to spoof version for single program under Windows 95 to show it as 4.10 instead of 4.00 or other way work around that issue? Any help will be useful


Posted

Only if the check looks into the registry can the version be spoofed. This is rarely the case.

Is this the installer or the app itself? And what is the full, exact text of the message (including title)?

 

Posted
4 hours ago, jumper said:

Only if the check looks into the registry can the version be spoofed. This is rarely the case.

Is this the installer or the app itself? And what is the full, exact text of the message (including title)?

 

entrypoint.PNG.cf929028f9d6ffe07ef19ccc535767e0.PNG

Installer works just fine. That is error it is creating. In English that says "file PIDGIN.EXE is linked to missing export function KERNEL32.DLL:VirtualAllocEx". What really baffles me here is that call does not exist on Windows 9x to begin with only on Windows NT and when I run it on vanilla Windows 98 or ME without kernel ex or anything else it starts up just fine. If program would rely on that call it would not start to begin with on 98. Pidgin 2.6.6 is last officially supporting 9x platform when using standalone legacy GTK runtime (https://web.archive.org/web/20110106073509/http://developer.pidgin.im/wiki/Installing Pidgin#CanIrunPidginonWindows98ME). I just though it may have something to do with fact 95 identifies itself as 4.00.1111 whereas 98 is 4.10.2222. 4.00 is also kernel number on NT 4.0 which made me assume for reason unknown executable is thinking to be under Windows NT platform. While I can use PSI 0.10 under Windows 95 to connect my Jabber server I prefer Pidgin since it support text mode file transfers if transfer proxy fails.

here is files I used

http://nokiamies.net/files/sw/pidgin-2.6.6-no-gtk.exe

http://nokiamies.net/files/sw/gtk-runtime-2.6.10-rev-a.exe

Posted

98, SE, and ME do have VirtualAllocEx, only 95 doesn't. Use ImportPatcher or Dependency Walker to find all missing functions. If there are only a few, I can write a wrapper.

 

Posted (edited)
40 minutes ago, jumper said:

98, SE, and ME do have VirtualAllocEx, only 95 doesn't. Use ImportPatcher or Dependency Walker to find all missing functions. If there are only a few, I can write a wrapper.

 

Interesting, I always though only NT had it. Well anyway it seems to be only be depend on VirtualAllocEx and VirtualFreeEx calls. Here is also dwi log from dependency walker I did under Windows 95 if you need it

pidgin.dwi

Edited by Nokiamies
Posted

I patched 6 bytes to convert the VirtualAllocEx call into a working VirtualAlloc call, 5 bytes for VirtualFreeEx to VirtualFree, and 3 bytes to update the checksum to ward off malware false-positives. Check your messages for an attachment.

Pidgin 2.6.6 (unpatched) does launch on my 98 system, but isn't stable unless I enable KernelEx and set it to Win2K mode. So more patches will probably be needed.

 

Posted
2 hours ago, jumper said:

I patched 6 bytes to convert the VirtualAllocEx call into a working VirtualAlloc call, 5 bytes for VirtualFreeEx to VirtualFree, and 3 bytes to update the checksum to ward off malware false-positives. Check your messages for an attachment.

pidgin.dll gave error about device not functioning. I decided to do full DLL check comparing 95 and 98SE and here is calls missing from important dll

IsDebuggerPresent:

program files/common files/gtk folder (gtk legacy runtime)
pango-querymodules.exe
libpangowin32-1.0-0.dll
libpango-1.0-0.dll
libgtk-win32-2.0-0.dll
libgthread-2.0-0.dll
libgobject-2.0-0.dll
libgmodule-2.0-0.dll
libglib-2.0-0.dll
libgdk-win32-2.0-0.dll
libgdk_pixbuf-2.0-0.dll
slibatk-1.0-0.dll
gspawn-win32-helper.exe

 

c:\program files\pidgin folder (install)
InterlockedCompareExchange:
pidgin.dll
libymsg.dll
libxml2.dll
libpurple.dll
liboscar.dll
libxml2.dll

2 hours ago, jumper said:

Pidgin 2.6.6 (unpatched) does launch on my 98 system, but isn't stable unless I enable KernelEx and set it to Win2K mode. So more patches will probably be needed.

 

Interesting. I have ran 2.6.6 on Vanilla Windows 98SE and ME for years without problems. Maybe it is cpu or ram related? I mostly tested it on Pentium 2/3 and K6 based systems. How did stability issue show up? Random bsoding or resource leak? Also I never tried it with less than 256mb ram.

Posted

I'm only seeing IsDebuggerPresent in libglib-2.0-0.dll. I think the others all import from libglib-2.0-0.dll.

With ImportPatcher you can patch:

  • IsDebuggerPresent=GetCurrentProcess or
  • IsDebuggerPresent=GetErrorMode

 

I'm seeing (right-click on folder, Find, Containing text) InterlockedCompareExchange in libxml2.dll and nspr4.dll. Try patching with ExitProcess for now. The code will need to be patched.

The instability is C Runtime Library errors upon second launch. Hopefully just my system.

 

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...