Link to home
Start Free TrialLog in
Avatar of TallyxZ
TallyxZ

asked on

How to change CPU String in BIOS post, reverse engeneering?

Hello, first of all I apologize for my english, it's not my first language.

I'm posting here because your fellows of Hardware couldn't deal directly with the matter at hands, anf they've suggested to me trying again in this section.

I want to change the CPU string posted by the bios. The reason is because a close friend of mine has a computer shop and he has different lines of computers, one of them are overlocked ones (tested very hard to be stable) and he wants the bios to post something like "Intel Q9550: 2,83@3,2Ghz" instead of "Intel Q9550: 2,83Ghz" (the AMI bios doesn't show up the actual speed). The computers are sold fairly, as he explicitly inform that they're OC ones and they offer the best bang per buck, but most of his customers doesn't understand anything about bios, OC... and the only thing that they see is 2.83Ghz in bios post and 2.83Ghz in right-click My Pc, so here's the problem.

I've spend hours and hours reading about this (I'm a casual programmer, C, Java...) but I've not idea about assembly language;  I cannot find a solution. I have arrived to the conclusion that CPUID string (Vendor...) resides in the own CPU, and the only thing the BIOS do is identifying the code associated with that processor and retrieve the information from it, but I am not sure at all, maybe I missunderstood.

I know we can add codes to the CPU patch of the BIOS but I don't know where to find the Strings associated to it. Googling I've reached an application called "Microcode Update Utility for Linux" (http://www.urbanmyth.org/microcode/) that, on the fly, changes the place of memory where this info is stored, so when the OS call for cpu info, it's given whatever we want. This seems that can be useful at changing the strings showed by the OS and other programs, but I've the question if I can launch a boot loader based in Linux, run this code and then pass the control to Windows (i think this is what lilo or grub do isn't it?), I also don't know how to edit the microcode and replace somethings, I know they can be found in http://downloadcenter.intel.com/Product_Search.aspx?Prod_nm=microcode&page_nbr=2&lang=eng .

However, this solution only works partally, we still have the bios post problem, but, really... we can live without it.

The best way will be to reverse engineering the BIOS module (what of them? I also don't know it), I'm lost, can you throw some light onto this matter, or at least direct me to the right way?

Thanks in advance.
Avatar of Julian Parker
Julian Parker
Flag of United Kingdom of Great Britain and Northern Ireland image

Personally I think it may be better to create a custom bios and just use the O/S to read the values.

http://www.biosman.com/custom.htm
I agree with jools, except I wonder if they (biosman) can actually do what you want. It looks to me like their business is mostly in standard pre-configuration, with logo changing as an extension. No harm in asking them though.
LILO & GRUB are boot loaders. You would need to boot all the way to running Linux to use the utilities you found. The chanegs would be lost when rebooting to Windows. Whlle in Linux, the Bogomips measurer should show the increased speed. But I guess that's not much use to you :(
Avatar of TallyxZ
TallyxZ

ASKER

I don't think that biosman could do such a thing... I've talked yesterday to someone really working with AMI bios (mods, assembly...) and even him doesn't know how to start with it. There's a software that is intended exactly to do this job, but unfortunately it works only in AMD.

About the linux program... what a pity... you're right, lilo and grub don't load any kernel, so it'll be unable to run the code... isn't anyway to load a mini-version and, afterwars, pass the control to a windows system? I'm afraid the answer is no, but I'd like to hear it from you and linux developers.

I know how to modify standard parameters in BIOS setup, logo, retail info... but I don't know what way to follow in this matter, I've decompressed and "WinHexed" every module of the bios and, at least in plain text, there's nothing about CPU models. In one of them called "Single Link Arch Bios" I've found this string: "Unknown .Genuine Intel(R) .Processor.Intel(R) Pentium(R) 4 Processor.Intel(R) Celeron(R) Processor.Intel(R) Xeon(TM) Processor.Intel(R) Xeon(TM) Processor MP.Mobile Intel(R) Pentium(R) 4-M.Genuine Intel(R) Processor (Engineering Sample)".

I think model/speed is either coded in another way (encrypted?) or that it's stored in the own chip, so my only way is to write some software to catch BIOS calls made from the SO and third-party software and replace its content. Is this "affordable" to do? Do I have to learn assembly to do that?
ASKER CERTIFIED SOLUTION
Avatar of Duncan Roe
Duncan Roe
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
hey TallyxZ how you convert those hex value to ascii..when i open a bios in hex editor it only shows data in hex decimals and that is unredable, can you tell me how can i modify a bios data and make it readable .