Hack32 v1.56 by Alexey Irbe (C) 1999

General

Hack32 has not been intended to be used by lamers or such, so this manual is brief. This program can search, edit and ôfreezeö certain values in virtual memory of any currently running process (to a certain extent). This version searches for integral and floating-point types of data, on the basis of exact match.

In this manual I will use the following terms relating to Hack32Æs main window:

Buttons

Process
Select a process to search in. You will be shown a tree of all running processes along with their non-child windowsÆ titles (if any). If a new process is selected, then all internal data structures are reset and only a new search is permitted.

New
Perform a new search in virtual memory of target process, searching for bytes and floats concurrently.

Next
Each next search uses the addresses found by a previous search, reducing the found addresses database.

Load
Loads previously saved table of items. If an item has been frozen at save time, its value is restored also, and the item comes to the table still frozen to the saved value.

Save
Saves the current table of items to a .H32 file including descriptions, addresses, items' states, and (for frozen items) the values.

Cancel
Only available during a search. Cancels the running search but preserves the amount of addresses found so far.

> (add)
Adds the selected addresses from the addresses list to the items list where they can be examined, edited and frozen.

Status bar

1st part: 'Busy' when a process is selected and running, and at least one item is present in the items list. In other cases 'Idle'. Target processÆ presence detection works only when æBusyÆ.

2nd part: During a new search, shows the current address being scanned. After completion of every search, the number of found addresses is shown here.

3rd part: Executable name of selected process.

4th part: After a process is selected, this will be the processÆ searchable memory size.

Window menu (Alt+Space)

Refresh rate
The interval between each memory refresh. Specifies how frequently the items in the list view are updated and frozen. Defaults to 250 milliseconds.

List box max items
Maximum capacity of the found addresses list. It is updated every time a search (new or next) is completed. Defaults to 100 items.

These values are stored in the system's registry and fetched every time Hack32 starts. The changed values activate immediately.

The items list

50 items can be stored in it. The items can be deleted by selecting them (multiple selection works too) and pressing 'Del'. While the list has keyboard focus, you can manually introduce a new address to the table by pressing 'Ins'. If an address is highlighted, you can press Alt+1 to Alt+8 to enter an address which resides at (address highlighted + x), where x belongs to 1..8.

The items' sorting works for the 'Address' column only. The value displayed in the 'Value' column for each item can be either 1(integer) or 4(float) bytes long; if you need to freeze an integer value to a value>255, you should manually enter the next address (higher byte) and freeze it also. To determine whether the value found is a byte or a float, try changing the value of an item to a value>255. If it is displayed in full, itÆs a float, else only the lowest byte of the entered value will be shown. Note that, for a byte address, if you enter a value which is more than 1 byte long, it will be written to the memory in full.

Not-so-obvious things

You can edit the items' labels by right clicking on them / pressing F2.
A value at an address can be edited by left clicking on it / pressing Enter.
Freeze an address to its present value by checking the check box next to the items' label by clicking on it / pressing space.
Alt+1 .. Alt+8 introduces an address which stands +1..+8 bytes off the selected one.
By pressing Ctrl+Alt+Z within any non-console program, Hack32 window can be put to the foreground.
It is not recommended for labels to be more than 32 chars long (they will be truncated when saved/loaded).
The progress bar will work properly only if the number of found items is less than 512K after a search.
Hack32 performs its searches in another thread with higher priority, so other processes may seem to run slower.
Generally, saved tables work fine with Win32 programs. For non-Win32 ones and some other proggies, however, the tables might not be valid, so rescanning might be required.
Although you can enter an integer value of up to 4GB as a search pattern, the program searches and shows the lowest byte only (quick, simple and reliable method). Floating-point data types are shown and searched for in full. However, change of value of a byte-address to a value greater than 255 writes more than one byte to consequtive addresses.
It is a rather bad idea to search for zeros, 256Æs, 768Æs, and so on (values with lowest byte zero) in the new search, because there is a whole bunch of zeros in memory, and the system will run out of resources trying to allocate enough memory for Hack32Æs database. You can, however, safely search for 0Æs in consequtive searches.
When entering a hexadecimal value, precede it with æ0xÆ as if in C++. Any invalid characters will be ignored, thus æ0xtybva4-/?Æ will be treated as æBA4Æ hex, and æ0Xt5ybva4-/?Æ as æ54Æ decimal, because of the uppercase æ0XÆ.
Supported operating systems: Win95/98, WinNT4.0 and Win2K (for process objects with security attributes allowing operations within them only).

Considering the present inability to operate certain functions in Hack32Æs table of items with keyboard only, the proggy can not be fuckinÆ considered ôdesigned for Windowsö after all J à