Details for this torrent 

uTorrent 1.8.2 build 14458 with DHT patch
Type:
Applications > Windows
Files:
3
Size:
525.27 KiB (537881 Bytes)
Tag(s):
utorrent dht private patch
Uploaded:
2009-04-14 18:10:38 GMT
By:
schoenewelt
Seeders:
0
Leechers:
1
Comments
3  

Info Hash:
E4EAF81600D69EE2A512FFACFECFFEDA451D607E




(Problems with magnets links are fixed by upgrading your torrent client!)
This patch removes the restrictions on torrents marked as private, allowing
uTorrent to use DHT, Peer Exchange and Local Peer Discovery to look for new
peers when it is normally not allowed.

In its internal data structures, uTorrent uses four bits in one byte of data
per torrent to record these settings.


       bit #   7   6   5   4   3   2   1   0
               \   |   |   /   |   |   |   |
                 not used      |   |   |   DHT enabled (default: 1)
                (set to 0)     |   |   |
                               |   |   private torrent
                               |   |
                               |   Peer Exchange enabled (default: 1)
                               |
                               Local Peer Discovery enabled (default: 1)


When a torrent file is added, uTorrent checks the "info" section for an
integer value named "private". If it's set to 1, it marks the private torrent
bit in the byte shown above, which forces the other information in this byte
to be ignored.

This byte is also saved in the resume.dat file (a bencoded file that uTorrent
uses to save its state) as an integer value named "dht".

The patch works by storing the private torrent flag in bit 7 instead of bit 1
so that all the code in uTorrent that checks bit 1 to determine if this is a
private torrent will always find that it isn't. However, it writes the "dht"
value out to the resume.dat normally, so if you start an unpatched copy of
uTorrent your private torrents will still be private.

Here are the steps required to apply the patch; you will need UPX version 3.03
and a hex editor:

 1. Decompress the uTorrent.exe file using the following command:

     upx -d uTorrent.exe
     
 2. Open the uTorrent.exe file in a hex editor and change the following:

     position  old bytes                new bytes
     --------  ------------------------ ------------------------
          200  D0                       FC
         52F1  50 68 0C BB 45 00        E9 DA 4E 05 00 90
         855B  02                       80
         BCD3  8A 4E 41 80 E1 0A        E9 0D E5 04 00 90
        5A1D0  00 00 00 00 00 00 00 00  8B C8 80 E1 80 C1 E9 06
               00 00 00 00 00 00 00 00  0B C1 50 68 0C BB 45 00
               00 00 00 00 00 00 00 00  E9 12 B1 FA FF 8B C8 80
               00 00 00 00 00 00 00 00  E1 02 C0 E9 06 24 FD 0B
               00 00 00 00 00 00 00 00  C1 8A 4E 41 80 E1 0A E9
               00 00 00 00              DD 1A FB FF

 3. The digital signature is now invalid. Remove it from the file by deleting
    everything after position 8E000.
   
 4. Recompress the file using this command:

     upx --ultra-brute uTorrent.exe
     
 5. This will produce a file of size 264704 bytes. The patch is now complete
    and should be identical to the file in this torrent.

File list not available.

Comments

Sorry if this is a stupid question... do we need to follow the instructions on how to apply the patch if you have already done so and included the newly generated utorrent.exe in your torrent?

I don't understand why there are instructions on how to change the original file when it appears you have already done this?

Can anyone clear this up?
It's kind of a learning thing wombat45. Hey anonymous I was able to patch the original file just as you did. My question is how do you patch a newer version of utorrent? You can't use the same guide so what do you use? BTW nice post
This patch is specific to the particular build of uTorrent it's applied to as the code - at least the locations of - changes in each build, and there are relative jumps in the patch.

But the approach I used to make the patch was to un-UPX utorrent, load it into IDA Pro and look for the strings "private" and "dht", then follow the cross-references back to the code that uses them. From there it was clear to see how the private flag worked; I used some spare space at the end of the code segment to add some extra code to move the bits, and the functions were patched to jump to that code and back again. If you disassemble the patched and unpatched exes side by side you can see how this works.

Also see https://piratebayproxy.live/torrent/4859325, it's the same patch for the next build of utorrent.