PDA

View Full Version : how to make a maxscript trial?


versusfx
06-04-2008, 11:38 AM
Hi,

how to make a maxscript ( macroscript ) trial?

Thank you!

Bobo
06-04-2008, 12:55 PM
Hi,

how to make a maxscript ( macrostript ) trial?

Thank you!

Could you explain what exactly you mean by that?

versusfx
06-04-2008, 01:38 PM
Well, i want, after period of time, a script to not be evailable to use without a password for exemple ( like a trial software ). That`s all. You understand?

ZeBoxx2
06-04-2008, 02:03 PM
That's not nearly as easy as you might think, I think...

Do you want this to be after a certain time period, or after a certain number of actions?
If the former, you can use "getUniversalTime()" in 3ds Max 2008+ (not available in earlier versions without installing a [free] 3rd party plugin). That will get you the time in an actually usable format for that purpose (localtime is nearly useless because it will depend on the user's date/time format settings in Control Panel).
Edit: If it's "a certain time period of use", use "getLocalTime()" instead. "getUniversalTime" is more useful if you want it to stop working on a given date/time known to you (regardless of the timezone of the end-user).

If the latter, you'll have to write information away somewhere - to a file, to the registry (again, 3ds Max 2008+ only unless installing that [free] 3rd party plugin), whatever and read that back out.
Problem with that is that it is extremely easy to defeat unless you encrypt that value. See encryptFile for some built-in encryption functionality; this does require you write the plain value out first and then delete the original file, but that original file can be retrieved if somebody really wants to. So if going that route, try making your own encryption scheme in maxscript.

On the topic of encryption... you'll want to encrypt you script file using encryptScript() in 3ds Max r9 or later so that the users can't just change your source code and get around the limitation. You could do it for earlier versions (3ds Max 8 and before) but it's trivial to get the source code when using the older 3ds Ma encryption methods - using maxscript itself.
EncryptScript makes sure that everybody can still run your script without needing a separate 'key' to decrypt the file (which would be bad anyway as it would end up living as an actual file on the drive).

To make sure that users can't just exchange passwords, you also have to tie into some piece of information unique to their machine to base your passwords on. For example, hardwarelockID - although I think that's been deprecated (no more hardware dongles, after all), and I'm not sure what that does in newer max versions.

PEN
06-04-2008, 02:04 PM
This is a real pain to set up. You will need to store information some where about when it was installed or when the end date is. This could just be in an encrypted lic file if you wanted with the expire date. If the file doesn't exist it is locked and if it does but the date is past the date stored in the lic file then it is also locked.

PEN
06-04-2008, 02:08 PM
HardwareLockID still works unless the users are on a net work license with Max, in this case all the hardwareLockID's will be the same. Darned if I know what to do about that at this point.

ZeBoxx2
06-04-2008, 02:12 PM
yeah, similarly - max in trial mode returns -1 or so...

I don't think there's an easy way to get at most other hardware-ish bits and pieces. Can certainly simply try a whole combination of things... just expect users to write hatemail when changing something trivial breaks their license :)

LoneRobot
06-04-2008, 02:58 PM
most of my scripts stop working before 28 days anyway so it's never been a problem for me. ;)

Bobo
06-04-2008, 03:13 PM
Hi,

how to make a maxscript ( macrostript ) trial?

Thank you!


Keep in mind no protection is perfect, if somebody really wants to break your protection, he will. MAXScript was designed for scripting, which by definition is something you share. If you want slightly better protection, you would write a plugin with the SDK (and some russian guy will crack it the next day regardless).

So prepare for a big PITA and barely any useful results.

Also keep in mind you cannot encrypt MCR files (MacroScripts). You can encrypt an .MS file and let the MCR file launch that using FileIn().

ZeBoxx2
06-04-2008, 04:57 PM
most of my scripts stop working before 28 days anyway so it's never been a problem for me. ;)
laughing out loud :)
(yeah, 'lol' left the message too short. *shakes fist at draconianBB*)

Edit: Just editing this in here.. Just spotted what the deal with HardwareLockID was; it's broken on Max9x64.

MarcoBrunetta
06-05-2008, 04:52 AM
After some frustrating experiences with the encryptFile function (wich seems to screw up the script if it used inside an encrypted script....god know why), I am now trying to use all the fancy .NET stuff to encrypt a license file. I'll post some code once I get the darned thing to work (waaaaay to many stuff in .net abut encrypting).

Mr-BlueSummers
06-05-2008, 06:42 AM
I agree with the earlier posts; you cannot make something bullet proof 100% of the time. However, you can fool most people with a few little tricks. If I were protecting some intellectual property, I'd use a DotNet dll to extend the protection options beyond what MXS provides. It could check dates, check the number of times a macroscript was run, or whatever. The sky's the limit, and using a more robust language means having deeper OS access for stuff like hidden, encrypted, or otherwise obfuscated INI files.

Note, however, that in any event you'll probably be relying on the EncryptScript function which I'm told is the weakest link in any protection scheme. The deeper you integrate a compiled component (SDK or DotNet class library), the better off you'll be.

Tertium
06-07-2008, 05:39 PM
2Mr-BlueSummers
so you say not to use script at all? because - how can I protect it if potencial enemy READS MY SOURCE? :)
I though that new crypt algorithm (max9sp1+) is better, it isn't so?

And: plugin - be sure - will be hacked next day you upload it. .Net dll - also. One hope - encrypted maxscrypt is not so widespread as exe (and .net exe) files, and no so many people now how to hack it.
But - some of them work in Autodesk, so be aware! :)))

RappyBMX
06-07-2008, 06:09 PM
can anyone find out where this script stores the year, month and day ? :)

(this script will work in max 2008 and 2009 for sure don't know about older versions...)

http://www.box.net/shared/2w3h4dnz4o

ZeBoxx2
06-07-2008, 09:30 PM
can anyone find out where this script stores the year, month and day ?
Yes, yes they can.


[wrzncgac]
ngjw=2008
etdh=6
aocn=7


And editing a user's existing resources, regardless of how benign, is not only sneaky, but extremely frowned-upon. I'm glad I ran this in a sandbox, to be honest.

I don't want to turn this into some sort of contest; we've already mentioned that you -cannot- secure a MaxScript 100%. No more than you can a plugin, but at least with plugins you've got a whole lot more to work with.
I'll give you one tip, though; even if I hadn't used some of the readily available tools from Microsoft, it would have been easily found. You forgot to restore the datetime stamp.


(this script will work in max 2008 and 2009 for sure don't know about older versions...)
Max 9 dies; probably because you're calling a function not available in 3ds Max 9. Earlier versions won't read the file at all, of course.

RappyBMX
06-07-2008, 09:36 PM
i wasn't expecting for someone to use sandbox on this :)

ZeBoxx2
06-07-2008, 09:48 PM
would work the same without the sandbox - except without the sandbox you might try writing to a windows system file and, potentially, hose my system.

thatoneguy
06-07-2008, 10:45 PM
You could run a license server and expire it based on a WAMP or LAMP setup of some kind.

It would be subject to the usual weaknesses of encrypted maxscripts... but it would keep the casual offenders at bay.

Everytime the script is run it pings the database and if it's not an expired IP and machine ID then all is peachy.

RappyBMX
06-08-2008, 12:36 AM
You could run a license server and expire it based on a WAMP or LAMP setup of some kind.

It would be subject to the usual weaknesses of encrypted maxscripts... but it would keep the casual offenders at bay.

Everytime the script is run it pings the database and if it's not an expired IP and machine ID then all is peachy.

That's one way but i can think of a way to cheat that even if i know how to make just a part of the cheat but I'm pretty shure that a hacker or someone could figure that out :)... if u can find out what's the link that the script will ping or the ip ( there are a few ways doing that, one will be cheat engine ) you just add that to the local host file:

Windows Vista = C:\WINDOWS\SYSTEM32\DRIVERS\ETC
Windows XP = C:\WINDOWS\SYSTEM32\DRIVERS\ETC
Win 98/ME = C:\WINDOWS

and add the address that it will check in the host file something like:

license.MaxScript.com localhost


and the part that i dont know is how to replay that your ip is good to go.
( but i think by running a local server should do the trick )

ZeBoxx2
06-08-2008, 12:48 AM
yep* - besides, people hate applications that 'phone home' for licensing. We have a 'communication center' script that shows people there's updates to their software, new communiques from us, etc; but even that is disabled by default (despite the obvious advantages to both sides having it enabled).


* if an application phones home, people will set up a local server and make sure that it returns the correct response expected by the client software. It's certainly more difficult, but nowhere near impossible (case in point: all the unofficial game servers for online games on a subscription model. The only reason -those- aren't rife in the world is because they're usually also laggy, infested with cheaters, etc.)

Rorschach
10-16-2008, 12:56 PM
I don't know if anyone has seen this:

http://blog.duber.cz/3ds-max/checksums-in-3ds-max

Could this be used to generate serial numbers through the hardwarelockID?

ZeBoxx2
10-16-2008, 02:13 PM
yes-and-no.. MD5, like CRC32, is a checksum.. it's not an encryption method. Although it's still unlikely to you will get a matching MD5 at random, especially if you take the input length into account, it is possible.

However, generating a unique serial number based on some information isn't really the problem in MaxScript; it's making it robust enough against even the toughest hackers that is likely to be impossible.

If all you need is a unique serial number based on some information to keep casual hackers out, you might as well write your own routine to do so. Although it may be 'weak' from a cryptographic viewpoint, at least it'd presumably be a unique algorithm so they wouldn't be able to just go "maybe he's using an MD5 hash of my hardwarelockID *runs the pre-built code* oh imagine that!" :)

kees
10-16-2008, 02:41 PM
The only way to have fairly secure protection is if (parts of) your script is stored on a server and every time somebody runs your scripts, they would get bits and pieces of the script in memory, but they never actually have the entire script stored on disk.

Then every time a user requests to sue the script you can check if they are a valid user.

But guess how much legit users will like this method? not much...

Just about every other method ever created has been immediately cracked.
It is not worth your time. Put in a very simple time check or key check that is not to frustrating for legit users to deal with and not to much work for you to manage.
That is all you should worry about.

Somebody who does not want to pay, is not going to pay, no matter what protection you build in. You'll only frustrate yourself.

Unfortunately, you are in an industry that sees 'learning the software' as a legit reason to pirate software, amongst other things. And you can literally find a website for just about every max plugin/script ever created in 5 minutes on google.

So what you want to do is treasure the few users that actually do pay for your software.
For example for Lumonix, legit users can re-register their plugins every 30 days automatically on a website without any delays. This helps reduce the frustration legit users have with key-code, changing computers, etc.

In short, imo, don't bother with complex copy protections, they all fail or annoy legit users. Build in a small, simple time-key code check and expect to see your tool on many pirate sites in the first week your release it (if it is populair enough anyway)


Take care,

Rorschach
02-09-2009, 02:45 PM
Some hardwarelockid questions:

Is it always ten digits?
can it begin with a zero?
can it be a negative number? (apart from -1 which is max trial)
Do network licenses of Max really all share the same hardwarelockid? What to do then?

kees
02-09-2009, 03:28 PM
Yes, those using flexLM to do networking licensing share the same hardware lock ID.

You write your own function that generates a key for the machine.
I.e. extracting the MAC number from the network card.
That is pretty reliable.

But you need the maxSDK and do that via c++.
(It is easy to get that info though)


Or you can do a combo of the hardware lock ID and the user name on the computer.
Or whatever else creative you can come up with.

I would not spend too much time trying to come up with a bullet proof protection scheme because there is none.

ZeBoxx2
02-09-2009, 04:24 PM
MAC addresses can easily be changed, too.

If you want, you can get the MAC addresses of the machine, though;


allNICs = (dotNetClass "System.Net.NetworkInformation.NetworkInterface").GetAllNetworkInterfaces()
for nic in allNICs do (
print ((nic.getPhysicalAddress()).toString())
)

jifman
07-14-2009, 12:22 AM
Just had an idea, what would you guys think to having the entire script in a c# dll and have that dll return the script for maxscript to just parse, after the dll has checked the MAC address and all??

MarcoBrunetta
07-14-2009, 02:01 AM
That if all you are using for security is the MAC address check, it doesn't matter if you are checking it from a dll or maxscript....

JHN
07-14-2009, 08:04 AM
Just had an idea, what would you guys think to having the entire script in a c# dll and have that dll return the script for maxscript to just parse, after the dll has checked the MAC address and all??

Have you seen this pretty neat tool: http://www.red-gate.com/products/reflector/
It exposes almost all code in a dotnet dll, or exe or whatever dotnet file you come up with.

So trusting a dotnet dll is not the right way to go!

-Johan

dgsantana
07-14-2009, 08:50 AM
You can make it hard for a .net dll or exe to be reverse just by using something that i use in my .net programs. It is pretty cool, and easy.
http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx

Best regards,
Daniel

jifman
07-14-2009, 05:00 PM
oh rite, thanks for that guys, will have to rethink my entire licence system...... :(
might look into using a C++ dll instead

fajar
07-16-2009, 09:56 PM
Damned this thing is give me a new sensation!! how about make it free and hope somebody give us a donation for our work!!hehehehehe ....... couse you know and you already feel it , all the soft, app, all the the thing already cracked outside even the newest one... EX: the autodesk 3dsMax cracked even the soft isn't ready for public..
maybe you are already in the area.cracked.soft user... don't take it too hard!! just being practical here!!
Just like a BOBO said !!....if some cracker want it to crack it'll be done... and the final you'll be pain in the **** to see your closest friend using your soft/script without paying it!!couse BOBO maybe already feel this pain....many time....maybe!

but no matter how much the people using your cracked soft/script deep down inside they willingly to pay you ...may be respect or money for your hardwork if they had any!!

regard
take good care everyone!!

thatoneguy
07-18-2009, 10:29 PM
It will get cracked but lots of users also won't read the license which says they need to pay as long as it continues to work.

Case in point WinRar. Who here actually payed for a copy of something like mIRC and doesn't just close the "Your trial period is up! You must register!" window? I admit I'm guilty of this. But the annoying window is persuasive to nag me into paying to make it go away.

The best copy protection is pop up guilt.

fajar
07-21-2009, 08:58 PM
@thatoneguy

Yeah but it 'll be worked as long as the people who using it has religion/felt a guilt!! but you know somewhere out there many people just using the crack to remove the nag of guilt rather than buying it! you know it, no?

PiXeL_MoNKeY
07-21-2009, 09:49 PM
The only way to not get it cracked is to not release the software. Once others can access the code they can find a way around it. I have yet to see any kind of protection scheme that is unbreakable.

The other thing to remember is that people who are using cracks would probably do so no matter what. So its not like spending all your time protecting the tool will result in more revenue, as you will probably spend more time trying to create the code than added revenue you might recieve.

-Eric

fajar
07-22-2009, 05:42 AM
But protecting system has advantage , it's called up the good people to paying it! even they already got the crack!

PiXeL_MoNKeY
07-22-2009, 03:24 PM
But protecting system has advantage , it's called up the good people to paying it! even they already got the crack!Not really, if they have the crack, they will typically only pay for it if forced to by the law. Why would they pay for something if they can get it for free? You may be better off with asking for donations, or only making the latest releases available to those who donate. You are the one who has to make the decision on how much of your time is worth trying to stop pirates. If you are spending more time trying to protect your code than you spent to code it, you are at a loss.

-Eric

RappyBMX
07-23-2009, 12:54 AM
Not really, if they have the crack, they will typically only pay for it if forced to by the law. Why would they pay for something if they can get it for free? You may be better off with asking for donations, or only making the latest releases available to those who donate. You are the one who has to make the decision on how much of your time is worth trying to stop pirates. If you are spending more time trying to protect your code than you spent to code it, you are at a loss.

-Eric

forced by the law or if it's hard to crack it (sure it has to be pretty cheap)...if it's expensive they'll try harder ( ask someone for help ) or just give up.

a simple way to protect is to make a demo version...limited version...when you buy it you'll get the full version with a simple key... :)... better when someone buys it just encrypt it with their name so they can't realease it to hackers :)... even that can be fixed but still... :)

fajar
07-23-2009, 01:26 AM
@ rappy : Of course you already know the issue of onyxgarden 2, They already cracked even they dont really give demo in their website(only in 3 month), but still it happen!! the sure thing is All soft has a crack or some medicine.
@PiXeL_MoNKeY : you already in Area.crackedSoft.user.com hehehehehe..... I don't blame you or the other one. Couse if want to start big thing we need small thing. Like if we want to buy 3dsMax we need a cracked one before we can have ability to buy it and operate it to maximum (university student--->Pro)

Life is like RPG game so play a RPG game....... what it's meaning?

RappyBMX
07-23-2009, 01:36 AM
brazil r/s 2 it's uncrackable... till this day no crack for it !!!

fajar
07-23-2009, 02:47 AM
Are you waiting for it (crack) ? hahahhahahaha...

Hay rappy is your rappa script have an some new update yet? i'd like to see it and testing it since 1.54 ver!!

ZeBoxx2
07-23-2009, 03:14 AM
it's 5.10am and I wasn't going to peek back in 'til the weekend, buuuuuuuut...

Can everybody get back on-topic? The thread is clearly spinning into a warez discussion, including attempts at justifying piracy, which is against the CGtalk rules, for one.
( fwiw, imthatoneguy, I for one did buy mIRC, and not because it nagged, but because I was finding myself using it a lot. It was something like 15 quid (UK pounds) at the time - had to pay in guilders and have it sent to me by snailmail from germany on a diskette and everything - and I've used it for well over 10 years now. Less than half a cent per day - I think I'll live :) )

We've already concluded that everything can and will be cracked if somebody with an agenda wants to pour in the time to do so.

On the other hand, there are people who want to create evaluation versions of their scripts. The starter of this thread merely asked if this could be done, and how well it could be done. Most of that has already been answered. However, it should still be perfectly possible to come up with protection that will thwart casual users; encrypted scripts (post max9sp1) being a big part of that.

If anybody wants to discuss further techniques, or post an example or template of proper use, etc. that would be far more beneficial to this thread and scripters, than the last half dozen posts. Example code/templates would lower the 'time spent developing protection' and make it more worthwhile to implement in the first place compared to the time it might take somebody to eventually crack it. In that time, you might have gotten a few registrations via a paypal button, enough to make you not care much if it gets cracked - perhaps even enough to open the source, but that'd be up to the developer.

=====

To that end.. Rappy: encrypting with a name (if you could, out-of-the-box; you'd have to use a third party encryption solution / .NET) wouldn't help so much. Presuming it then gets decrypted using known techniques into plain old maxscript code, that code can then be spread around the studio / to others. So one key thing is to keep things reasonably encrypted. I wonder if decrypted scripts living in memory can be read out as a string from a hibernation file, for example.. that would be a simple approach even for casual users.

RappyBMX
07-23-2009, 02:28 PM
To that end.. Rappy: encrypting with a name (if you could, out-of-the-box; you'd have to use a third party encryption solution / .NET)
i wasn't referring to use the name for encryption... what i was saying is to add the buyers name... let's say in the about dialog... "This was bought by Santa Clause"... so you know who released it... i know it can be removed though...



Hay rappy is your rappa script have an some new update yet? i'd like to see it and testing it since 1.54 ver!!
i'm not working on rappatools for now... i haven't worked on it for a long time, i don't know when i'll start again...



I wonder if decrypted scripts living in memory can be read out as a string from a hibernation file, for example.. that would be a simple approach even for casual users.
so that's how you decrypt a script ? i know that the stuff inside the virtual memory cannot be encrypted !

ZeBoxx2
07-23-2009, 07:05 PM
i wasn't referring to use the name for encryption... what i was saying is to add the buyers name... let's say in the about dialog... "This was bought by Santa Clause"... so you know who released it... i know it can be removed though...
Well presuming it's encrypted and never gets decrypted (and then the string removed) and re-encrypted, that would work fairly well.

Keep in mind, though, that this doesn't prevent infringement (e.g. there's nothing stopping the person it was licensed to from giving it to a colleague/friend/whoever). In addition, although there's a 'name and shame' element involved, imagine if your customer ends up being pointed to as a 'pirate' even though all that really happened was their network was broken into and that file was part of the hacker's catch.. or a disgruntled employee spreads it on purpose to make his/her boss look bad, etc.

Even if the above is not an issue, you'll have to manually edit script files for each of the licensed users and keep their files separate. Imagine updating your script... you'll have to update all of those files and re-issue them. Erp? :)

so that's how you decrypt a script ? i know that the stuff inside the virtual memory cannot be encrypted !
I haven't decrypted a script since Max9 SP1 - and before that I've decrypted just my own test files. Suffice to say that pre-Max9 SP1, it wasn't particularly difficult to decrypt a script, using just maxscript itself.

But just for kicks I tried seeing if there's anything useful in a hibernate file at all by following this procedure:
1. encrypt a script on one system
2. copy the encrypted script to another system that has never touched the original script
3. enable hibernate (it was disabled on that machine already; otherwise.. disable, reboot, enable)
4. run that encrypted script
5. hibernate
6. reboot into another OS (Ubuntu Live CD in my case)
7. copy hibernate file
8. reboot
9. examine the hibernation file copy

Steps 6-9 are necessary because hiberfil.sys refuses to be copied otherwise - even using e.g. HoboCopy. At least on Vista - not sure about XP.

Here's the result... this is a chunk of the original script:

-- check if the sample image picked is valid (360x480)
fn checkSampleImage img = (
if (img != undefined) then (
local imageRequirements = "\r\n\r\nPlease pick or render a sample image between 360480 and 720960 pixels in size, with a 3:4 aspect ratio.\r\nExamples: 360480 384512 450600 540720 630840 720960\r\n\r\n( You can upload any additional example imagery to the server when you submit the material. )"
if ((img.width < 360) OR (img.height < 480)) then (


And here's the data around where the only mention of 'checkSample' was in the hibernation file:

TweakL +DotLoopw/ 2Z|xY PDDr awt  sf_matgery.checkSampleIm  age (getLastR>ered ()); _roll.Previewo  Y+Y z|Y  ecY X B O uttonText maY 6(
idSelection

There's a few bits and pieces you may recognize in there (I'm guessing CGtalk will strip some of it as well as it's a lot of non-ASCII chars), but obviously it's sufficiently garbled that you cannot infer any usable script code from it. There -is-, however, a chance that e.g. a variable name may survive. So any protection would do well not to use a variable named "isLicensed" as that would be a fair hint that one might want to set "isLicensed" to true.
Whether it warrants complete code obfuscation before encryption.. perhaps. Sure would be annoying to debug though (given that the user can only give maxscript error output with those same obfuscated names).

Edit: just to note - if anybody's curious whether the hibernation file -can- be ungarbled.. yes, but you'll need to know quite a few technical details to do so. 'fortunately' the 'security community' seem to have various utilities available to take the technical pains away. I've not checked if their output is any more useful, however.

PiXeL_MoNKeY
07-23-2009, 08:14 PM
@PiXeL_MoNKeY : you already in Area.crackedSoft.user.com hehehehehe..... I don't blame you or the other one. Couse if want to start big thing we need small thing. Like if we want to buy 3dsMax we need a cracked one before we can have ability to buy it and operate it to maximum (university student--->Pro) What do you mean by all of this? If you are acusing me of being apart of some pirating or cracking website, I take that as a serious insult. You need to think before you make insulting comments like that.

MarcoBrunetta
07-23-2009, 08:24 PM
What do you mean by all of this? If you are acusing me of being apart of some pirating or cracking website, I take that as a serious insult. You need to think before you make insulting comments like that.

It looks to me like it was just a joke that seems like an insult because of Fajar's obvious lack of mastery of the english language...

RappyBMX
07-23-2009, 08:43 PM
Imagine updating your script... you'll have to update all of those files and re-issue them. Erp? :)
you got a point there :)
-------------

hibernation file is one thing, but check this out http://www.hak5.org/episodes/episode-522 saved a dump with mdd now i have to figure out how to pull data out of it :D

fajar
07-23-2009, 10:30 PM
Hay pixelMonkey don't get mad so easly .it's not what I meant.I don't mean insult you,really.How can I insult if you already help me out so much?
forgive me if I do wrong, if what I say is wrong I never do that again OK?! I'll watch my l language here next time!

@marco: thank for explanation, you got a point there, yes I don't want to insulting everyone here!not to pixelMonkey or everyone!
@marco: mystery of english language , what's that?well, explain me... never heard that before!

Sorry to everybody if I touch you all!!
Hey rappy too !!

RappyBMX
07-23-2009, 10:32 PM
dude you got the wrong person... not me... PiXeL_MoNKeY

holycause
11-08-2009, 06:49 PM
check this out, it could help you ;)
http://stigatle.net/index.php/maxscript

versusfx
05-25-2010, 07:06 PM
check this out, it could help you ;)
http://stigatle.net/index.php/maxscript


SUPER! Thank you!

Thank you to all who answered me!

CGTalk Moderation
05-25-2010, 07:06 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.