Bios zugriff per C++



  • Moin!

    Ich hätte da eine frage zum thema Bios!
    Ist es möglich in C++ ein Prog. zu coden mit dem man auf das Bios zugreifen (oder es sogar konfigurieren) kann?
    Meine kentnisse sind im bereich auf Hareware zugriffe leider etwas beschränkt.
    Ich habe schon überlegt ein Assemblercode in mein Programm zu integrieren jedoch würde ich gerne wissen ob es auch anders geht! (tutorials zu dem Thema wären nicht schlecht)

    Danke im vorraus!



  • Verschoben nach "Rund um".



  • Hi,

    das funktioniert nicht!
    Wäre aber auch schlimmm ... 😮

    cu

    P84



  • gibt es nicht schon solche programme wo man von windows aus das bios konfigurieren kann (hat viele vorteile, man kann hilfen anbieten, profiele speichern usw.)



  • Das geht natürlich auch mit C oder C++.

    Es sei denn, du hast ein Betriebsystem dazwischen, dass das erschwert.

    Unter Windows2000 benötigst du einen Devicedriver, den du z.B. hier bekommst:

    http://www.entechtaiwan.com/files/TVicHW32.chm



  • Original erstellt von Geo:
    **Das geht natürlich auch mit C oder C++.
    **

    Wenn das möglich wäre, könntest Du dein Mainboard nach einer Virus-Attacke wegschmeissen. 😉

    Dein Tool dient nur zur Konfiguration von Treibern und hat nicht mit dem BIOS zu tun.

    Die Boardhersteller bieten oft Tools fürs BIOS-Update an, z.B. aflush.exe.
    Aber damit kommst Du nicht an die Konfigurationsdaten.



  • Dein Tool dient nur zur Konfiguration von Treibern und hat nicht mit dem BIOS zu tun.

    Mit der Konfiguration von Treibern hat es nun garnichts zu tun. Bitte gründlicher lesen.

    Das ist ein allgemeiner Treiber, mit dem du direkt auf Speicher und Portadressen zugreifen kannst.

    Beispiel:

    //The following is an example how to get a pointer to the ROM BIOS area:
    
    char *pBios;
    
    HANDLE HW32 = NULL;
    
    HW32 = OpenTVicHW32( HW32, "TVICHW32","TVicDevice0");
    
    if (GetActiveHW(HW32)) {
    
         pBios = (char*)MapPhysToLinear(HW32,0xF8000,256); 
         //256 bytes, starting from 0xF8000
    
           //...pBIOS session...
    
           UnmapMemory(HW32, 0xF8000,256); // undo mapping
    
           HW32 = CloseTVicHW32(HW32);     //  close the driver
    
      }
    
      else ... // failed
    


  • Ähhh Prof84......... 😃

    Haste schonmal was über den CIH virus gehört? 😃 😃

    Wenn net dan guck ma hier->http://agn-www.informatik.uni-hamburg.de/vtc/warn/w95cih.htm

    Und das iss der alte für Win95 der neue (CIH 1106) iss angeblich noch fieser und funzt auch unter XP!

    Aber ich will keinen Virus schreiben sondern ein Tool mit dem ich die Bios
    einstellungen auslesen und ggfs. verändern kann. (das das geht zeigt mir ein Programm das ein bekannter hat, mit dem er zb. die CPU Höhertakten kann!)



  • Ähhhm ... ich hab zwar nichts über einen neuen CIH Virus gehört, aber das bezweifle ich doch mal ganz stark. Klar gibt es Viren, die unter XP laufen, aber nicht mit der Technik, die der CIH damals benutzt hat. Der CIH war Vorreiter der Ring-0 Viren, die nur unter Win9X funktionierten.

    Ein Treiber sollte eigentlich schon in der Lage sein auf die Ports (und damit auch auf das CMOS) zugreifen zu können. Schließlich laufen Treiber im Godmode (Ring-0 ) 😃



  • Hallo,
    es gibt tatsächlich Tools (u.a. auch illegale), die es ermöglichen auf das Bios zuzugreifen und in C++ geschrieben worden sind. Leider gibt es im Internet soweit ich weiß kein Tutorial, das dieses Gebiet ausführlich erklärt (höchstens Quellcodes von einpaar illegalen Programmen).



  • was sollen den illegale Programme sein? Programme für die man keine Lizenz besitzt?

    /me dachte immer es gibt keine illegalen Programme (darüber streitet man sich doch auch bei DeCSS)



  • Original erstellt von kingruedi:
    **was sollen den illegale Programme sein? Programme für die man keine Lizenz besitzt?

    /me dachte immer es gibt keine illegalen Programme (darüber streitet man sich doch auch bei DeCSS)**

    Damit meine ich Programme, die das Gesetz nicht beachten und die Programmierer sich durch Computersabotage (§303b StgB) oder anderem strafbar machen. Illegale Programme wären "Trojanische Pferde", jede Art von Viren und andere Tools.



  • nein, nur die Anwendung ist strafbar! Weder das Programm, noch das schreiben eines solchen Programmes!



  • Bezüglich BIOS-Flash:

    nicht "aflush.exe", sondern "aflash.exe". 😉



  • Original erstellt von kingruedi:
    nein, nur die Anwendung ist strafbar! Weder das Programm, noch das schreiben eines solchen Programmes!

    Hängt das nicht irgendwie mit dem Programmierer zusammen? 😕 😕 😕



  • Natürlich, wenn jemand einen Virus schreibt, dann will er ihn auch idr. einsetzen. Aber trotzdem ist das programmieren eines Virus nicht strafbar. Der kauf einer Waffe ist ja auch nicht strafbar (okay, ist ein schlechter Vergleich, weil man dafür ja einen Schein braucht, fürs programmieren (noch ;)) nicht :))



  • Beispiel:
    Wenn jemand einen Trojaner ins Internet stellt, den er programmiert, dann kann es doch nicht sein, dass nur der sich strafbar macht, der es herunterlädt und es benutzt.



  • nein, nur der der es benutzt macht sich strafbar, nicht der der es runterlädt 🙂

    Ich versteh aber nicht wo da dein Problem ist. Ich bin froh deswegen, stell dir mal vor jemand verklagt dich, weil du ein Programm geschrieben hast, was vielleicht mit ganz positiven Absichten veröffentlicht wurde, aber mit ein paar veränderten Zeilen eine "Bombe" ist und Computer lahm legen kann.

    Naja, trotzdem ist man wohl nicht davor geschützt verklagt zu werden http://www.heise.de/newsticker/data/anw-04.03.03-004/



  • Ich weiß gar nicht, warum mir das hier nicht schon früher eingefallen ist. Ich hab vor einiger Zeit ich damit angefangen im Internet nach diesem Thema zu "googlen".
    Ich bin auf ein QBasic bzw. QuickBasic- Programm (um es zu kompilieren) gestoßen, dass einen Zugriff auf das BIOS hat, sofern es das AMI BIOS ist:

    seed = reg(0) AND &HF0 
    
    PRINT "Calculating." 
    FOR count = 1 TO 6 
    PRINT "."; 
    bioschar = reg(count) 
    decchar = 0 
    IF bioschar <> 0 THEN 
    DO 
    decchar = decchar + 1 
    pass = 0 
    FOR bit = 0 TO 7 
    IF (&HC3 AND 2 ^ bit) = 2 ^ bit AND (seed AND 2 ^ bit) = 2 ^ bit THEN 
    pass = (pass + 1) MOD 2 
    END IF 
    NEXT bit 
    seed = INT(seed / 2) + pass * 128 
    LOOP WHILE seed <> bioschar 
    bpass$ = bpass$ + CHR$(decchar) 
    ELSE 
    count = 6 
    END IF 
    NEXT count
    

    Nach dem Tutorial, wo der Code hier drinstand, berechnet es das Passwort des BIOS.

    Dos kann mit einigen kleinen Tricks auch auf das BIOS zugreifen, mittels "debug". Wenn man das mit system() von C++ kombiniert, sollte das glaub ich gehen.

    debug
    o 70 2E
    o71 FF
    Q
    

    Das muss man im Dos eingeben, und das BIOS ist gelöscht (und es funktioniert mit allen BIOS Typen). Ich habs noch nicht ausprobiert, wie man das mit system() kombinieren kann.

    QBasic bzw. QuickBasic verschafft uns eine weitere Möglichkeit auf das Bios zuzugreifen, diesmal das Bios zu löschen:

    10 OUT &H70,17
    20 OUT &H71,0
    

    Mit Assembler kann man natürlich auch darauf zugreifen. Vielleicht kann man das ja mit C++ kombinieren, soweit ich weiß geht das, hab aber keine Ahnugn davon:

    mov dx, 070h
    mov al, 02Eh
    out dx, al
    inc dx
    xor al, al
    out dx, al
    

    Dieser Code bewirkt ebeenfalls das das Bios gelöscht wird (zumindest alle Daten verloren gehen, die dort gespeichert wurden).

    [ Dieser Beitrag wurde am 05.03.2003 um 09:49 Uhr von pAngel editiert. ]



  • das Programm debug schreibt übrigens einfach nur die Opcodes in den Speicher und führt sie aus, also kann man gleich inline Assembler nehmen. Aber ich denke, dass man sich doch sehr mit dem BIOS auskennen muss, was man benutzt


Anmelden zum Antworten