Gnutella Forums  

Go Back   Gnutella Forums > Current Gnutella Client Forums > LimeWire+WireShare (Cross-platform) > LimeWire Beta Archives
Register FAQ The Twelve Commandments Members List Calendar Arcade Find the Best VPN Today's Posts


View Poll Results: Limewire is...
the best GNUTELLA client 3 30.00%
the only real GNUTELLA client 5 50.00%
an example of real quality 4 40.00%
my favourite software! 2 20.00%
Multiple Choice Poll. Voters: 10. You may not vote on this poll

 
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old March 4th, 2002
Apprentice
 
Join Date: December 22nd, 2001
Posts: 9
cg1h3r0 is flying high
Default Ads Update

How to Remove the Adverts from LimeWire (A step-by-step guide)

LimeWire is a cool gnutella clone in java , from version 1.6 to 2.2.1 they have added a lot of stability useful features, and something that is really annoying , an advert banner . As a practise on how to tweak java software, use the following steps to remove this "nerving, blinking pain in the butt" java control.

First of all you as the ambitioned future java hacker need the following tools:you can search for the actual download locations at google and google:
· JAD , the Java Disassembler, use the -dis option for the opcodes, use without options for the source!
· The gnu tools ,.ZIP and UNZIP
· A good text editor (ultraedit or xemacs) with hex editing and search facility
· A good book on the Java Virtual Machine or at least a list on jvm opcodes ( I used Java Virtual Machine from Matthias Kalle Dallheimer)
Step 1:
· Unpack the Java Files from Limewire.jar with
unzip LimeWire.jar
Step 2:
· Decompile them to source code (jad *.class) ,
Step 3:
· Grep for the Tooltip of the shared files display " The number of files you are sharing ", you will find it in StatusLine.java
The corresponding code fragment is as follows:
public StatusLine()
{
super(new BorderLayout());
labelAvailable = true;
myCurrentPlayingFile = null;
currBeginIndex = -1;
myIDT = null;
fileToPlay = null;
iterations = 0;
myPlayer = new BasicPlayer(this);
myPlayThread = new PlayThread();
myPlayThread.start();
createConnectButtons();
sharingLabel = new JLabel(" ");
sharingLabel.setHorizontalAlignment(0);
sharingLabel.setToolTipText("The number of files you are sharing.");
setStatistics(0L, 0L, 0L, 0);
setDisconnected();
setBorder(BorderFactory.createLoweredBevelBorder() );
JPanel centerPanel = null;
JPanel leftPanel = null;
if(GUIMediator.shouldShowAds())
{
leftPanel = new JPanel(new FlowLayout(0, 0, 15));
centerPanel = new JPanel();
BoxLayout bl = new BoxLayout(centerPanel, 0);
} else
{
leftPanel = new JPanel(new FlowLayout(0));
centerPanel = new BoxPanel(0);
}
leftPanel.add(switchedPanel);
leftPanel.add(sharingLabel);
add(leftPanel, "West");
if(GUIMediator.shouldShowAds())
{
cbanner = new CBanner();
centerPanel.add(cbanner);
add(centerPanel, "Center");
}
if(!CommonUtils.isMacClassic())
{
JPanel mediaPanel = constructMediaPanel();
add(mediaPanel, "East");
myIDT = new InitialDisplayThread();
myIDT.start();
}
myInstance = this;
}
· Nearby you will find the conditional statement for the ad display , our aim is to disable this function, therefore take care that it will be always false

Step 4:
· Disassemble GUIMediator.java, take a look at the function:
public static boolean shouldShowAds()
{
return CommonUtils.isWindows() && SHOW_ADS;
}

· We are getting nearer, what the hell is SHOW_ADS ?
· It is a constant , at is set true
....
private static GUIMediator _instance = null;
private static boolean SHOW_ADS = true;
public static final int YES_OPTION = 101;
public static final int NO_OPTION = 102;
.....
· We want to have it set to false, and have the adverts sent to hell

Step 5:
· We have two possibilities to change the constants, the first is to alter the decompiled source code and recompile with SHOW_ADS set to false, this solution is risky, because a lot of characteristics a class loader (with additional context checks) might check are potentially changed , therefore we go for the alternative, and patch the classfile of GUIMediator.class
· static boolean constants are always filled in the class static constructor, opcode iconst_0 means putting true on the stack, and iconst_1 means false, therefore we have to exchange these opcodes.

static
{
// 0 0:aconst_null
// 1 1utstatic #2 <Field GUIMediator _instance>
// 2 4:iconst_0
// 3 5utstatic #132 <Field boolean SHOW_ADS>


· A look into the opcode map shows ,that we have to patch the following code sequence
· change
($04, $B3, 0, $84) iconst_1, putstatic $0084
to
($03, $B3, 0, $84) iconst_0, putstatic $0084
· Search for $04 $B3 $00 $73 in 1.8b, or for version 2.0.2 search for $04 $B3 $00 $84 and exchange the $04 by $03
· In 2.2.1 search for $04 $B3 $00 $8e and exchange the $04 by $03
· The file can now be patched with the hex mode of ultraedit
· For verification purposes decompile the patched class-file, it should now show, if it doesn't go back to step 1
....
private static GUIMediator _instance = null;
private static boolean SHOW_ADS = false ;///!!!!!!!!
public static final int YES_OPTION = 101;
public static final int NO_OPTION = 102;
.....

Step 6:
· Now we have to get the patched GUIMediator.class back to the LimeWire.jar
· Make a Backup-Copy of LimeWire.jar (does not apply to the brave guys!)
· Now update the jar with

zip LimeWire.jar com/limegroup/gnutella/gui/GUIMediator.class


Step 7:
· Now do some clean up and remove the unpacked class files to make sure that the java class loader gets the files from the jar and not from the unpacked directories under com/limegroup/....



Step 8:
· Start LimeWire and enjoy the empty space where once the ads appeared.
· Now you learned how to defend against unwanted actions on your system and take an closer look to the inner workings of the software that is consuming your cpu cycles.

Now Have fun with a real cool limewire


Your CGIH3R0 (cg1h3r0@gmx.li)

Last edited by cg1h3r0; March 4th, 2002 at 03:06 PM.
  #2 (permalink)  
Old March 5th, 2002
Morgwen's Avatar
lazy dragon - retired mod
 
Join Date: October 14th, 2001
Location: Germany
Posts: 2,927
Morgwen is flying high
Default

Hmm...

I think you poll is one sided!

Morgwen
  #3 (permalink)  
Old May 25th, 2002
MamiyaOtaru's Avatar
Code Mangler
 
Join Date: March 25th, 2002
Location: Wyoming
Posts: 143
MamiyaOtaru is flying high
Default

Why the hell would you want to decompile the class files, when the java files themselves are already available at limewire.org?

The whole source is available there, and in it, the ads are already disabled.

But for those that like hugely complex methods to do simple stuff, there you go. Man, I always wanted to mess with opcodes instad of just downloading the source and setting showads to true and hitting compile..

Congrats though, a truly rube-goldbergian method hehe
  #4 (permalink)  
Old June 26th, 2002
Apprentice
 
Join Date: December 22nd, 2001
Posts: 9
cg1h3r0 is flying high
Default

You're right, but not everybody wants

- install a complete java development kit
- download the source distribution
- go thru the build process
- set up the classpath

just to change a single bit ! Altering the Bytecode can be an
alternative when there's nothing new to code just
to alter existing functionality...

And by the way it is often the faster method, because
everything is already on your harddisk, ....

But if you are a jaaa-vaaa guy just hitting compile is ok ...

Yours
Cg1h3r0
  #5 (permalink)  
Old June 26th, 2002
Member
 
Join Date: December 3rd, 2001
Location: East Coast USA
Posts: 67
JohnReam is flying high
Default Why don't you just pay the $9 ???

Pay
  #6 (permalink)  
Old July 23rd, 2002
leftalive
Guest
 
Posts: n/a
Default

Why don't you just delete the "ads" folder (thats in the limewire folder) on your hard disk?
  #7 (permalink)  
Old July 27th, 2002
Gnutella Muse
 
Join Date: May 19th, 2002
Location: Moselmetropole
Posts: 166
Freiluft is flying high
Default

Wow! Am I glad I have a Mac! Solution: find lib folder. Find ads. move contents to trash. Enjoy the pale blue that doesn't flash at you. In case they get tricky later on, I have a lovely blue graphic file that I can rename to match any advert they throw at me.

You get a strange error when you update, but the program runs fine.

I should also add that I will NOT pay simply not to be irritated by obnoxious animated adverts. Nor will I pay for features removed from software to make an "enhanced" version.

I would pay for LW Pro for a solid hashing feature that can download files with different names. I think that would be a legitimate dividing point for the free and pro versions.
  #8 (permalink)  
Old August 1st, 2002
LimeWire User
 
Join Date: August 1st, 2002
Location: CH
Posts: 20
ErikB5 is flying high
Default

Quote:

I would pay for LW Pro for a solid hashing feature that can download files with different names. I think that would be a legitimate dividing point for the free and pro versions.
Mmm, interesting. I use LW 2.5.4 Pro and I believe my client doesn't do this solid hashing. It often restarts a download when the name changes, but the size of the file is the same. I'm not going to say it does it in 100% of the case, but it does it often enough to make it annoying and space eating.
  #9 (permalink)  
Old August 21st, 2005
asdfgh1224's Avatar
Limewire beta tester 4.22
 
Join Date: August 9th, 2005
Location: USA,PA,EAST COAST
Posts: 119
asdfgh1224 is flying high
Thumbs down

i dont see ads on limewire and hey look you get free music and stuff so why remove the ads?
  #10 (permalink)  
Old August 21st, 2005
et voilà's Avatar
+Modérateur à ses heures+
 
Join Date: July 26th, 2002
Location: Le Québec
Posts: 2,904
et voilà is a great assister to others; your light through the dark tunnel
Default

asdfgh1224: this is a thread from 2002, please look at the dates to not revive those threads
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Update warning error - which one to update to? Lord of the Rings General Mac Support 0 November 30th, 2005 07:56 AM
Update LimeWire PRO update Sam9 General Windows Support 1 July 29th, 2004 10:49 AM
Pro update ask if I want to buy pro even though I have it already stevenangel General Mac OSX Support 1 July 1st, 2004 10:12 AM
pls update FAQ Matamoros LimeWire Beta Archives 0 May 12th, 2004 11:22 AM
update? Unregistered Connection Problems 1 June 5th, 2002 05:08 PM


All times are GMT -7. The time now is 05:31 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.