being a complete noob in reversing I may have taken on too much here--I have an old piece of software, cadcam, that is still good and functions well but is limited in the size of a number it can allow to be stored for a tool number--this may not make sense to some--here is more detail.
The software has a form that allows you to input a tool number--that number is limited to 999 as a maximum, I have got olldbg 2.01 and I have so far tracked down some values but still have an awful lot to learn as I cannot ever find teh exact number I enter when I say use 99999999 as the tool number which causes an error box.
That said I have dug around in the background and found the numbers for the tool library (tools you make and decide to save for future ref) are stored in ms access db backend--now access I know, I have found how it stores the numbers for saved tools in a long int field, it happily takes 99999999+ (which I would expect). as a test i changed a tool number here to a 99999999 number and restarted the program--it now displays 57599 as the tool number--I may be wrong but I think the software was written and a 2 byte int declared where as I need a 4 (16 bits: maximum representable value 216 − 1 = 65,535).
I am wondering if there is anyway to change the acceptable number to make it bigger somehow--how would I really go about it--I am always keen to have a go even when I know nothing lol.
Some further information as I try a little digging and learning. The current answer could very well be right as the software is 10 years old but upon digging I have managed to follow some of the code as I try to teach myself more, I can speculate that the locations are limited for the number as there are only 2 areas where there is any actual possibility of working with it. The tool number is nothing special and is the simple end of a one to many relationship as the to9 number is just an identifier for any possible number of operations under that top number. (Again speculation)
As it happens, the code when executed takes the number and passes it to Microsoft user code to return the number of “characters” in the text box, say 8 put in 1234 then it returns 5 (num char + null char) so I see wax change to 5 and then moves this to a mem location. Then it calls ntdll and checks something is not too long, this I am tying to work out. I can se a cmp of something to 4 and a call to message a but I am not good enough to follow most of this yet.
As I learn more I hope to find the location in the dll file where it gets its cmp value from and change it to 1 char more than my desired max digit. If that stops the message box appearing I know it will write a bogus number to the db in the background which I have already confirmed is able to store a long int (ms access db file) as it does not handle numbers larger than 65635 or something like that, more investigation.
I have been looking for more in depth reverse engineering texts but seems hard to find. I will keep learning and digging because of the challenges it poses and report back for more help on this as required. Thanks for answers given as it does trigger other thoughts.