What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » WLM Plus! General » How was Plus! done?

Pages: (4): « First [ 1 ] 2 3 4 » Last »
How was Plus! done?
Author: Message:
muttantegg
New Member
*


Posts: 11
40 / – / –
Joined: Feb 2007
O.P. How was Plus! done?
Hi! I just installed Plus! and was curious about how it worked.

I don't know much about windows programming... I was wondering if someone could explain to me how is it that Plus! attaches itself to Messenger when I run it. I looked at the original Messenger files and they didnt look changed after I installed Plus. :huh:

Thanks for your time.

(Oh, and if you answer this one Im sure more will follow... :$ Hope you don't mind me being curious)
02-17-2007 12:41 AM
Profile PM Find Quote Report
ShawnZ
Veteran Member
*****

Avatar

Posts: 3146
Reputation: 43
32 / Male / Flag
Joined: Jan 2003
RE: How was Plus! done?
it creates a "proxy" to the real msimg32.dll by placing a fake one in messenger's directory. along with, naturally, providing msimg32's functions, it also sneaks in a little load for msgpluslive.dll without messenger knowing any better.
Spoiler:
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
the game.
02-17-2007 12:47 AM
Profile PM Web Find Quote Report
muttantegg
New Member
*


Posts: 11
40 / – / –
Joined: Feb 2007
O.P. RE: How was Plus! done?
That explains it! ^^ And the detoured.dll too I suppose :)

Well, I guess I have one more question :D

How did Patchou ( ? ) figure out where he needed to attach Plus! and which calls to detour to make Messenger do all those shiny things like coloured nicks and voice clips? I look at it and it's a black box :S I have no idea what it's inner workings are.

Is there a manual for Messenger Live on the net for people doing mods? I don't think Microsoft would make it's source code available :P

Thank you for your answers, it's not often someone gives good replies to newbies...
02-17-2007 11:28 AM
Profile PM Find Quote Report
Baggins
Full Member
***

Avatar
B000ALFAZO

Posts: 387
Reputation: 13
29 / Male / Flag
Joined: Oct 2006
RE: How was Plus! done?
If you google 'messenger API' you might find some interesting information.

Some things that Plus! does can be done with this, but the rest need to be done using hooks.

Plus! hooks the windows and menus of Messenger to add the script menu and color thing.
02-17-2007 12:26 PM
Profile E-Mail PM Web Find Quote Report
muttantegg
New Member
*


Posts: 11
40 / – / –
Joined: Feb 2007
O.P. RE: How was Plus! done?
Right! I think I'm starting to understand :)

I'll do some research and find out how to add cool buttons and menus to a program window before I nag you with more questions :D

A big 'Thank you' to ShawnZ and Baggins!
02-17-2007 02:50 PM
Profile PM Find Quote Report
hmaster
Senior Member
****

Avatar

Posts: 716
Reputation: 24
33 / Male / Flag
Joined: Nov 2004
RE: How was Plus! done?
How To Hook Msn Messenger In Visual Basic -> http://forum.mess.be/index.php?showtopic=52
VB6 intro to the Messenger API -> http://forum.mess.be/index.php?showtopic=55
C# Examples -> http://forum.mess.be/index.php?showtopic=36

Most of them haven't been updated but they can give you a good start.


This post was edited on 02-17-2007 at 03:04 PM by hmaster.
[Image: sig.png]
02-17-2007 03:03 PM
Profile PM Web Find Quote Report
vikke
Senior Member
****

Avatar

Posts: 900
Reputation: 28
31 / Male / Flag
Joined: May 2006
RE: How was Plus! done?
He's using API Hooking, using the Detours library. For example, it could change the IAT table to fake Messenger call CreateWindow, while it calls Patchous CreateWindow instead. There are sereval other methods, check CodeProject.com for samples. I recommend HookImportedFunction API.
He's also made his own RichEdit interface for the color codes etc.
It's also done by normal Windows Message hooks.

Oh, yeah, he added the button by intercepting LoadResource, FindResourceW, SizeofResource. Then he fakes Messenger to load another/modifed copy of the window resources with a button added.

Hope this helps :).

This post was edited on 02-17-2007 at 04:02 PM by vikke.
02-17-2007 03:52 PM
Profile E-Mail PM Find Quote Report
matty
Scripting Guru
*****


Posts: 8336
Reputation: 109
39 / Male / Flag
Joined: Dec 2002
Status: Away
RE: How was Plus! done?
quote:
Originally posted by vikke
Oh, yeah, he added the button by intercepting LoadResource, FindResourceW, SizeofResource. Then he fakes Messenger to load another/modifed copy of the window resources with a button added.
If you mean the Toolbar buttons he patches the UFile in memory to add his own buttons.
02-17-2007 03:56 PM
Profile E-Mail PM Find Quote Report
vikke
Senior Member
****

Avatar

Posts: 900
Reputation: 28
31 / Male / Flag
Joined: May 2006
RE: RE: How was Plus! done?
quote:
Originally posted by Matty
quote:
Originally posted by vikke
Oh, yeah, he added the button by intercepting LoadResource, FindResourceW, SizeofResource. Then he fakes Messenger to load another/modifed copy of the window resources with a button added.
If you mean the Toolbar buttons he patches the UFile in memory to add his own buttons.

How do you define "patches"?
I'm like 80% sure he's intercepting LoadResource APIs. However thats a working way. My theory would be: Patchou patches the LoadResource APIs to pass the modified XML UIFILE which handles the windows, and from there he could write to memory, but he still needs to hook SizeofResource, so Messenger would allocate the right spaces, so we wont have a crash.

-vikke
02-17-2007 04:00 PM
Profile E-Mail PM Find Quote Report
muttantegg
New Member
*


Posts: 11
40 / – / –
Joined: Feb 2007
O.P. RE: How was Plus! done?
So if I understood this correctly :

Plus!, using a proxy msimg32.dll and the detoured.dll library attaches itself to Messenger. It then intercepts Messenger's API calls by changing the code in memory (not the file in the hard drive) to include some extra code. This way new menus and buttons are added (during CreateWindow or LoadResource), with code attached to them and present in MsgPlusLive.dll

Next it adds functionality to the SendMessage and ReceiveMessage events by hooking this functions (and by doing so, allowing Plus! to parse commands like /ping).

It's a little simple but I think it's what's going on. Did I forget something?
02-17-2007 04:24 PM
Profile PM Find Quote Report
Pages: (4): « First [ 1 ] 2 3 4 » Last »
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On