GIDForums  

Go Back   GIDForums > Computer Programming Forums > Miscellaneous Programming Forum
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
 
 
Thread Tools Search this Thread Rate Thread
  #1  
Old 18-Aug-2003, 04:57
BobbyDouglas's Avatar
BobbyDouglas BobbyDouglas is offline
Regular Member
 
Join Date: Aug 2003
Posts: 789
BobbyDouglas has a spectacular aura aboutBobbyDouglas has a spectacular aura about

Rebase - Must Get!


Programmers, you must check this out. Saves HOURS of work. I finally got a copy of it

Rebase is a command-line tool that you can use to specify the base addresses for the DLLs that your application uses.

The base address of a DLL is the location in virtual memory where the loader attempts to place the DLL. It is generally specified at link time. If a DLL cannot load at its base address because the memory is already occupied, the loader places the DLL elsewhere in virtual memory, then updates all calls into the DLL to reflect the new base address. Making these changes can be time consuming, because the image must be copied to the pagefile and modified for the new address. If you have a large application that uses many DLLs, it is important for each DLL to have a different base address to minimize load time. You will receive the following warning from the loader if a DLL is relocated:

LDR: Automatic DLL Relocation in ProcessName.
LDR: DLL ImageName base ImageBase relocated due to collision with ExistingImage.

When you pass all the DLLs for your application to Rebase, it bases each DLL at a unique address. You should not pass your .EXE file to Rebase. It is the first thing to be loaded, so there is no chance that something else can already be loaded at its default load address.

The system DLLs are currently based in memory from 0x70000000 to 0x78000000 (0x68000000 to 0x78000000 on MIPS). Therefore, you should base your DLLs from 0x60000000 to 0x68000000. One possible scheme is to choose a base address based on the first letter of the DLL name.
First letter Base address
A - C 0x60000000
D - F 0x61000000
G - I 0x62000000
J - L 0x63000000
M - O 0x64000000
P - R 0x65000000
S - U 0x66000000
V - X 0x67000000
Y - Z 0x68000000

It is best to base DLLs from the top of the address range down, instead of from the bottom up. Dynamic memory is allocated from the bottom up and if a DLL tries to load where dynamic memory has been allocated, it will be relocated, just as if a DLL was loaded at that address.

To use Rebase to base your DLLs, use the following syntax:

rebase [options] image-names

Rebase has the following command-line options:

-binitial_base
Use the specified initial base address. It is mandatory that you use either the -b or -i option.
-icoffbase_filename
Read base addresses from the file coffbase_filename. It is mandatory that you use either the -b or -i option.
-ccoffbase_filename
Write the list of base addresses to the file coffbase_filename. The filename extension is not included. Use -C to include filename extensions.
-d
Perform a top-down rebase.
-llogFilePath
Write image bases to log file.
-z
Allow rebasing the system file.
-Rimage_root
Set a root directory for use by the -G, -O, -N options.

-Gfilename
Group specified images together in address space. May be used multiple times. Specify a root directory with the -R option.
-Nfilename
Leave specified images at their original addresses. May be used multiple times. Specify a root directory with the -R option.
-Ofilename
Overlay images in address space. May be used multiple times. Specify a root directory with the -R option.

-xsymbol_dir
Extract debug information into separate .DBG file before rebasing. Use symbol_dir to place the .DBG files are placed in the directories symbol_dir\EXE or symbol_dir\DLL, depending on whether the source is an .EXE file or a .DLL file. To specify the current directory for the symbol directory, use a period (.).

-p
Used with the -x option. Remove private debug information when creating .DBG files.
-a
Used with the -x option. Extract all debug information into the .DBG files.

-f
Strip relocations after rebasing the image. Causes failure to load.
-s
Just sum image range.
-q
Minimal output.
-v
Verbose output.
-?
Display command-line syntax.
Attached Files
File Type: zip rebase.zip (26.6 KB, 289 views)
 


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Rate This Thread
Rate This Thread:

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

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Network Sites: GIDNetwork · GIDApp · GIDBlog · Learning Journal by J de Silva, The

All times are GMT -6. The time now is 16:04.


vBulletin, Copyright © 2000 - 2014, Jelsoft Enterprises Ltd.