Programe de cercetare - - Articole adăugând funcționalitate la programul finit
Scopul nostru este de a adăuga funcționalitate pentru software-ul pregătit (compilat). De fapt, această tehnică poate adăuga funcționalitate la orice program, puteți adăuga, de asemenea, tot ce gândesc. Această descriere nu a fost destinat pentru a crea un produs software util, scopul a fost de a demonstra posibilitatea de a adăuga tehnologie de cod în programul compilat. Scopul nostru - pentru a adăuga o nouă caracteristică pentru Notepad standard de. Am adăugat o funcție a fost selectată posibilitatea de a evalua expresii. Pentru a face mai interesant, posibilitatea de calcul a fost împrumutată de la un alt program.
Deci, există:- Calculator total v2.02 - TCalc.exe, dimensiunea 36,864 bytes
- Notepad - notepad.exe standard (Windows XP), dimensiunea 66,048 bytes.
Adăugați funcționalitate una față de alta.
Ordinea acțiunilor noastre vor fi:- TCalc.exe inginerie inversă
- Adăugarea codului și datele din notepad.exe
- Scrierea de cod cu aplicatii de interacțiune cod
TCalc.exe inginerie inversă
Cel mai simplu și cel mai eficient mod de a scoate afară codul - pentru a prelua funcția dorită, se introduce un program de testare și a alerga compilarea. Este evident că noi nu primesc nimic drept decât lista de mesaje de eroare, dar această listă poate lucra deja. De exemplu, în cazul în care compilatorul scrie că există o funcție, atunci trebuie doar să-l adăugați la programul de testare, iar dacă nu avem date suficiente, ce le adăugați. Trebuie avut în vedere faptul că, atunci când adăugați o nouă listă de coduri cu erori pot crește, dar în cele din urmă tot codul necesar va fi adăugat. Locuri de munca, desigur, nu una plăcută, dar cu puțină răbdare, rezultatul nu va dura mult timp.
Voi descrie câteva greșeli, pe care i-am petrecut timp. În primul rând, IDA Pro nu face prieteni cu recunoașterea și constante în echipe schimburi de a lucra cu numere fracționare. Cod de genul:
Ar trebui să arate astfel:
Eu pot recomanda, de asemenea, un apel 4015A0 funcție ușor de curățat - acest lucru nu se va schimba nimic, deoarece nu există informații de depanare.
Fișierul se întâlnește, de asemenea, de câteva ori, cu declarație comutator zona de date, la sfârșitul procedurii
Am ieșit din situația, după cum urmează:
Dar este posibil, de exemplu, pentru a înlocui cele 8 comparații și să urmeze salturi condiționate.
În plus, nu trebuie să uităm să se conecteze bibliotecile necesare
includ masm32 \ includ \ msvcrt.inc includelib masm32 \ lib \ msvcrt.lib
Pentru a numi atof funcții, _CIacos, _CIasin adăugați prefixul "crt_".
Adăugarea codului și datele din notepad.exe
Următorul pas este de a deschide Notepad.exe Tools PE și să încerce să aranjeze secțiunile în memorie așa cum apar ele în programul nostru de testare. Noi o facem prin manipularea câmpurilor de dimensiune virtuală și Virtual Offset fiecare secțiune. În conformitate cu secțiunile standard PE în fișierul pe care trebuie să meargă unul câte unul. Am primit acest lucru:
M-am dus după cum urmează: doar adaugă secțiunea fals așa-numitele în locurile în care le primesc pauze. Este doar o secțiune plină cu zerouri în memorie și nu ocupă spațiu pe disc.
Scrierea de cod cu aplicatii de interacțiune cod
Acum este timpul pentru a scrie o interfață între un notebook cu sursa noastră adăugată. Este necesar să se găsească un loc gol în fișierul nou (nu e greu) și să adăugați codul la care va lua expresia, și trece-l la o funcție pentru a calcula și apoi de ieșire rezultatul înapoi în notebook-ul. Am decis că voi folosi spațiul de la sfârșitul unei secțiuni de cod pe care am introdus în programul de testare, în cazul în care, la sfârșitul codului a rămas secțiuni care nu vor fi utilizate într-un caiet, acesta vom înlocui. După cum sa dovedit, acest lucru nu este cea mai bună soluție, și stoarce codul în spațiul nerevendicat sa dovedit dificil: codul primit octet pentru octet, este mai bine să aleagă un loc gol, cu o marjă.
Noi modifica interfața notebook-ului nostru. M-am dus după cum urmează: pur și simplu adăugați un nou element din meniul „Format“. Puteți face acest lucru orice program care vă permite să editați resurse. Am luat Restorator-lea. Noul element de meniu trebuie dat un identificator unic pe întregul meniu. Am dat numărul 34.
Asta-i tot! Avem un dosar de lucru. Notebook cu o funcționalitate îmbunătățită.
Aici puteți descărca fișiere la articol: codul sursă, adăugați codul și rezultatul final.