The real way to modify ndreg.xrg is not done like the "[GUIDE] 9Disciples ndreg.xrg update" thread. The strings (specifically ndc info, etc) in ndreg.xrg are XOR'd. For example, "localhost-9d" in base 16 (hex) is:
6c 6f 63 61 6c 68 6f 73 74 2d 39 64
In order to put that in your ndreg.xrg you have to XOR each with 0xDC. So 6c XOR dc = b0 (you can do this with your calculator). This "localhost-9d" becomes:
b0 b3 bf bd b0 b4 b3 af a8 f1 e5 b8
There are two places for the server IP in the ndreg.xrg. The D9 Server address is "202.43.39.25", thus if you convert that to base 16 you get:
32 30 32 2e 34 33 2e 33 39 2e 32 35
XOR'd it becomes:
ee ec ee f2 e8 ef f2 ef e5 f2 ee e9
So if you want to modify your unmodified D9 ndreg.xrg, just search for the XOR'd server address and change with the XOR'd localhost-9d. They are the same length so you don't have to modify the string length. That's right, there's an offset in each field that indicates how long the segment is. You can change that yourself or use a string length that is same as the server's IP and not have to change it, like I did.
Edit:
I use Python for converting and xor'ing the string (and removing the 0x so I can paste into my hex editor), this can be accomplished in a nice 1-liner:
' '.join(hex(ord(c) ^ 0xdc)[2:] for c in "localhost-9d")
If you don't have Python and don't want to install it, just go to codepad.org and select python then paste the code and submit. As seen here:
[Only registered and activated users can see links. Click Here To Register...]