TheBlasphemer 的个人资料Stuffplug 3 Development ...照片日志列表 工具 帮助

日志


3月19日

March 19th, memory searching done

0123 The Netherlands. Memory searching is finally done.

That header above was supposed to look JAG (or any other military series/movie for that fact) like, however the time being 01:23AM now kinda spoils that since 0123 looks stupid :P
Anyway, Reached another (what I'd call) milestone today. As some of you might know, most StuffPlug features are quite similar to patches. They look for certain byte-codes, and replace them. The only real difference being that patches do it on disk, and SP does it in-memory. There's a few more differences, but I'll spare you the details ;)
To keep StuffPlug compatible with future release of messenger, I've been using a memory search module that I wrote way back somewhere in SP-NG or something. It used a syntax like this:
{0x86,0xFF,0xB6,0x58,...}
It's split up in bytes, and each byte is prefixed with 0x to indicate it's hex. Also the 0xFF was used as a "wildcard" that would match anything. This screwed up a few features in the past because the numner -1 is represented in memory as FFFFFFFF, so I could never search for -1 as that'd end up being 4 wildcards ;)

Today, I decided I wanted a new memory search engine. I wanted the disadvantages of the old method gone:
- No more funky wildcard character that fucks things up
- Fast
- Easy to use and update for me
So I write this new method that takes this as an input:
{L"CEDPStealer",MEMPATTERN::TYPE_NORMAL,"74 ?? FF 75 E4 E8"},
The ? is now wildcards, and it can work on a per nibble (half a byte) basis too, that's the solution for easy to use and update :). Furthermore all search patterns are now stored in one place, and It's all written in such a way that I can easily add other memory-search routines later (see the MEMPATTERN::TYPE_NORMAL thing ;)), and I can easily cache offsets.
Yes, that's right, caching :D That means that StuffPlug will only have to search for patterns if you update your messenger, so StuffPlug might take a few seconds to start up the first time, and if you update messenger, but apart from that it will launch blittering fast :D

Apart from that I had a bit of a fight with the user-interface a while back. It just refuses to stretch 32-bit (alpha transparent) PNG files. I ended up just using normal PNG files. It's a bit of a let-down for me personally, as I consider it cheating. But it gives the same results so what the heck ;)

Last, but not least, I've seen someone comment in the last blog-post about becoming a beta-tester. To clear things up, I'll explain what I had in mind for testing StuffPlug.
The initial release will be divided up into 5 stages. Updates will probably have other stages, but for the first SP3, this is what's going to happen:
- Stage 1: Alpha. Only I and a few select people get to see it, and only for testing purposes. No getting into this stage unless I ask you ;)
- Stage 2: Private beta. Once I think the add-on is stable, I'll allow friends to test it. No getting into this stage unless you're a friend ;)
- Stage 3: Managed beta & Translating. If the selected group of testers has had time to test, I'll enlarge the number of testers. I will probably post a request for beta-testers on the stuffplug site, and I think I will also invite translators to join this beta so they can start translating. If you want to get in this stage, start thinking about what you'd write if I'd ask you why you want to be a beta tester :)
- Stage 4: "public" beta. In this stage I will allow messenger-sites to test Stuffplug and prepare re- and previews. If you want to get in this, you should have a popular messenger site :) Also the managed beta-testers will get permission to write previews and post screenshots.
- Stage 5: Released. :)

I hope that cleared everything up :)
It's now 01:37, and I think I should go to bed ;)

Goodnight,
TB
3月14日

First update. Plug-in taking shape.

Right, with "Taking shape" I don't necesarilly mean that it's almost ready for release. It's still very far from that. But I made some changes today that will load the installation path from registry and load the skin and language from the appropriate places, instead of the hard-coded one :)
I've also fought with the image-loading for most of the day. I thought that GDI-plus (image library included with XP) could simply load an image and pass it on to my GUI, but gawd, was I wrong!
It seemed right at first, however all alpha transparent images had a weird blue border around them. First I just thought that my images were wrong, however when Alex (someone helping me a bit with the design now Rolando is busy) sent me some new images it appeared that the blue border was not just something that I did wrong in copy pasting, but everything that was even slightly transparent got a blue blur :S It appeared GDIplus first blended the images over blue, and then passed them along to my program ;) Took me long enough to figure that out! Anyway, it's done now, and the images seem to be perfect now :D wheee! (Yes, I am very happy ;))
I said I was going to post some tools, but I can't upload on spaces, and it's a bit too late to fire up my FTP client, so that'll have to wait ;)
I have, however, uploaded some screenshots! They're in the photo-album under the "March 14th" album. Nothing revolutionary, just a few shots :) Will probably look nice once it's done, a whole photo album of the progress ;)
Anyway, not much to tell, I've fixed some things in the options thing, revised the directory structure, written something to pass options back and forth between the user interface and the program, done some work on the GUI itself, and spend most of the time getting that darn images to work :@
 
Tomorrow update will be more detailed. I'm tired now, and I haven't had enough sleep the past few weeks, so I gotta catch up :)
 
Bye,
TB
3月13日

Introduction

Right, an introduction, where shall I start...
Well, some of you might remember a blog that I made during the development of StuffPlug-NG. I didn't post a lot, except for some screenshots of new features. This was partly due to the late stage of development I had reached already. There wasn't much to blog about except features, because that was most that I did: polishing features...
 
But this blog is going to change that. I'm currently in a very early stage of StuffPlug 3: I've got it to add two buttons to messenger (one in the log-in screen, and one in the contact-list). I plan to add another one to the conversation windows, but frankly in my debugging sessions I haven't opened any conversations yet ;)
I've also got a very simple GUI, basically four buttons that don't do anything at this moment. I do however have everything figured out in my head, and I've already written a few test applications for the GUI.
On the back-end everything is pretty bare too. As mentioned, it can load into messenger, and that's about it. I've just written the routines to read options from the registry. I haven't tested them yet, but I'm pretty sure they'll turn out just fine ;)
 
Apart from that, a language loading mechanism, a menu in the contact-list, and something to load files from StuffPlug-packages (Will be used for packaging skins. either standard zip files, directories, or specially crafted SPP files). Development is currently going very very slow. I've caught myself quickly getting distracted, and getting four new functions done on a day is normal routine :( I'm hoping this will speed up once I hit the more interesting stuff.
 
So finally, what will this new version of stuffplug include?
I can't promise anything, but I have a few things on my mind that I want to write. Large display pictures and emoticons are most likely going to disappear. I might implement it if it isn't too difficult, but I feel the feature has lost its appeal now that messenger users without stuffplug can no longer see them.
Right, stupid me, you want to hear what features *will* be included in stuffplug! Well, the CE/DP Stealer is going to be back. I've also got a few leads on stealing dynamic display pictures and the likes, but I'll have to look into it to see if it's feasible.
Apart from that there'll be a DUI Spy. This will not be something for the normal user to use, but more for skinners. It will allow you to traverse the properties and such of all elements in a window much like in the Visual Studio Spy++ utility.
Also since I feel that Messenger Plus!'s plugin feature didn't quite cut it, I will try to implement my own plug-in architecture. It will probably be COM based, or callback based. It'll allow plug-ins to dynamically remove and add elements to the MSN windows, and loads more :) No more need for things like A-Patch to remove annoying buttons, just use a plug-in and you won't even breach the license agreement! :D
 
Alright, enough for now, at this time that's about all I have planned, but I am sure that as with earlier StuffPlug releases, features will show up along the way :)
 
Last but not least, what to expect from the next blog-post?
Well, everything I couldn't put in here! I feel like posting some pictures of what I have now, and possibly some of the tools I've written (like the SP-Packer, or the language encoder and decoder) to get everything familiar with the file formats. Of course it'll also feature an update on the coding progress! :D
 
I'm not going to distribute the link to this blog through the regular channels, so if you read this, and feel like sharing, go ahead! :D
 
Bye,
TB