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

Posted on 2009-04-18
Last Modified: 2013-12-16
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" ( 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 .

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.
Question by:TallyxZ
    LVL 19

    Expert Comment

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

    Expert Comment

    by:Duncan Roe
    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 :(

    Author Comment

    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?
    LVL 34

    Accepted Solution

    In the Linux world, you can never categorically say "no 0ne has done that" because someone might have. But I'd say with 99.99% confidence no, you cannot load Linux and have it pass control to Windows.
    I suspect the CPU id is in the chip. There is a get cpu id assembler instruction. I think it returns a number rather than a string. I don't have an up to date manual so maybe it returns a string. Either way it doesn't matter - you want to append to it, not to modify it.
    I think you would need a specialised software tool, like a user_level bios environment emulator and you would have to learn assembler (or get your hands on actual bios source, which may well be written in a higher-level language). Then you could debug your way through the code and find the part you want and append your CPU ID extension

    Featured Post

    What Should I Do With This Threat Intelligence?

    Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

    Join & Write a Comment

    Introduction We as admins face situation where we need to redirect websites to another. This may be required as a part of an upgrade keeping the old URL but website should be served from new URL. This document would brief you on different ways ca…
    The purpose of this article is to demonstrate how we can upgrade Python from version 2.7.6 to Python 2.7.10 on the Linux Mint operating system. I am using an Oracle Virtual Box where I have installed Linux Mint operating system version 17.2. Once yo…
    Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
    Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

    732 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    23 Experts available now in Live!

    Get 1:1 Help Now