Posted 15 years ago
·
Author
IMVU is a chat\messenger program like MSN hotmail etc. It's an MMO chatting game that it's values are server sided. In order for someone to h4c|< it he should program a program based on it's database. Another way is to use CE. But the values CE gives you are changing over time. We have to find a way to h4c|< server sided games like WoW.
In order for creating a working h4c|< you must understand that all servers have to start another program which is granting access to the Internet making it public. These files are mostly .bat files. using cmd
( start--> run-->cmd ). IMVU is online every day so the server computer could be linux,solaris,mac that allows the computer to be turned on every day but without burning the hard disk, so imvu uses like 4 programs to start IMVU running on public logon,world,a community service ( this program allows it to run on net) and another program that is rooms and host.
So enough with the easy stuff let's go to its structure
The IMVU client is written primarily in Python, with time-critical components such as the 3D renderer written in C++. Since the client is a cross between a normal interactive Windows program and a real-time game, the main loop looks something like this:
This structure assumes that no exceptions bubble into or out of the main loop. Let's imagine that updateAnimations() has a bug and occasionally raises an uncaught exception. If running the client with a standard command-line python invocation, the program would print the exception and stack trace to the console window and exit. That's all great, but our users don't launch our client by invoking python from the command line: we use py2exe to build a standalone executable that users ultimately run. With an unmodified py2exe application, uncaught exceptions are printed to sys.stderr (as above), except there is no console window to display the error. Thus, the py2exe bootstrap code registers a handler so that errors are logged to a file, and when the program shuts down, a dialog box shows something like "An error has been logged. Please see IMVUClient.exe.log."
From a crash reporting standpoint, this is not good enough. We can't be asking our users to manually hunt down some log files on their hard drives and mail them to us. It's just too much work - they will simply stop using our product. (Unfortunately, most of the software out there asks users to do exactly this!) We need a way for the client to automatically handle errors and prompt the users to submit the reports back to us. So let's rejigger main() a bit:
This time, if a bug in updateAnimations() raises an exception, the top-level try: except: clause catches the error and handles it intelligently. In our current implementation, we post the error report to a Bugzilla instance, where we have built custom tools to analyze and prioritize the failures in the field.
This is the main gist of how the IMVU client automatically reports failures. The next post in this series will cover automatic detection of errors in our C++ libraries.
Credits go to a researcher This time, if a bug in updateAnimations() raises an exception, the top-level try: except: clause catches the error and handles it intelligently. In our current implementation, we post the error report to a Bugzilla instance, where we have built custom tools to analyze and prioritize the failures in the field.
This is the main gist of how the IMVU client automatically reports failures. The next post in this series will cover automatic detection of errors in our C++ libraries.
Credits go to a researcher Chad Austin.
He gives an example of the errors\crashes so we can understand IMVU structure and the way it is programmed with python and C++
I hope this helps people in future hacking of IMVU. Proof or no? you decide.
PM me for more information and projects
In order for creating a working h4c|< you must understand that all servers have to start another program which is granting access to the Internet making it public. These files are mostly .bat files. using cmd
( start--> run-->cmd ). IMVU is online every day so the server computer could be linux,solaris,mac that allows the computer to be turned on every day but without burning the hard disk, so imvu uses like 4 programs to start IMVU running on public logon,world,a community service ( this program allows it to run on net) and another program that is rooms and host.
So enough with the easy stuff let's go to its structure
The IMVU client is written primarily in Python, with time-critical components such as the 3D renderer written in C++. Since the client is a cross between a normal interactive Windows program and a real-time game, the main loop looks something like this:
def main():
while running:
pumpWindowsMessages() # for 1/30th of a second
updateAnimations()
redrawWindows()
This structure assumes that no exceptions bubble into or out of the main loop. Let's imagine that updateAnimations() has a bug and occasionally raises an uncaught exception. If running the client with a standard command-line python invocation, the program would print the exception and stack trace to the console window and exit. That's all great, but our users don't launch our client by invoking python from the command line: we use py2exe to build a standalone executable that users ultimately run. With an unmodified py2exe application, uncaught exceptions are printed to sys.stderr (as above), except there is no console window to display the error. Thus, the py2exe bootstrap code registers a handler so that errors are logged to a file, and when the program shuts down, a dialog box shows something like "An error has been logged. Please see IMVUClient.exe.log."
From a crash reporting standpoint, this is not good enough. We can't be asking our users to manually hunt down some log files on their hard drives and mail them to us. It's just too much work - they will simply stop using our product. (Unfortunately, most of the software out there asks users to do exactly this!) We need a way for the client to automatically handle errors and prompt the users to submit the reports back to us. So let's rejigger main() a bit:
def mainLoop():
while running:
pumpWindowsMessages()
updateAnimations()
redrawWindows()
def main():
try:
mainLoop()
except:
error_information = sys.exc_info()
if OK == askUserForPermission():
submitError(error_information)
This time, if a bug in updateAnimations() raises an exception, the top-level try: except: clause catches the error and handles it intelligently. In our current implementation, we post the error report to a Bugzilla instance, where we have built custom tools to analyze and prioritize the failures in the field.
This is the main gist of how the IMVU client automatically reports failures. The next post in this series will cover automatic detection of errors in our C++ libraries.
Credits go to a researcher This time, if a bug in updateAnimations() raises an exception, the top-level try: except: clause catches the error and handles it intelligently. In our current implementation, we post the error report to a Bugzilla instance, where we have built custom tools to analyze and prioritize the failures in the field.
This is the main gist of how the IMVU client automatically reports failures. The next post in this series will cover automatic detection of errors in our C++ libraries.
Credits go to a researcher Chad Austin.
He gives an example of the errors\crashes so we can understand IMVU structure and the way it is programmed with python and C++
I hope this helps people in future hacking of IMVU. Proof or no? you decide.
PM me for more information and projects