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:

Programe de cercetare - - Articole adăugând funcționalitate la programul finit

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.

Programe de cercetare - - Articole adăugând funcționalitate la programul finit

Programe de cercetare - - Articole adăugând funcționalitate la programul finit

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.

Programe de cercetare - - Articole adăugând funcționalitate la programul finit

Programe de cercetare - - Articole adăugând funcționalitate la programul finit

Programe de cercetare - - Articole adăugând funcționalitate la programul finit

Asta-i tot! Avem un dosar de lucru. Notebook cu o funcționalitate îmbunătățită.

Programe de cercetare - - Articole adăugând funcționalitate la programul finit

Aici puteți descărca fișiere la articol: codul sursă, adăugați codul și rezultatul final.