It-note hacking aplicații folosind ida pro și xvi32

Hacking aplicații folosind Ida Pro și Xvi32. Scrierea patch-uri.

De exemplu, am luat un program de consolă, pe care i-am dat ca o casă pentru sarcini de programare. Programul „gândește“, un număr de la 1 la 100, iar utilizatorul trebuie să-l ghicească. Mai puțin de 7 încercări de a ghici imposibil, din moment ce De fapt, nici un număr nu este ghici: programul are lungimea maximă a numerelor, nu învățate de către utilizator. Aceasta este, în cazul în care utilizatorul introduce numărul 30, programul spune că numărul necunoscut mai mult, și pune-l în intervalul de la 31 la 100. Dacă introduceți 90, atunci intervalul va fi 31-89, și așa mai departe, până când un număr rămâne, care și va fi „pus mai departe.“ Să încercăm să ne asigurăm că utilizatorul este întotdeauna în măsură să ghicească numărul prima dată.

1. Deschidem aplicația noastră exe-1.exe în debugger Ida Pro. Tipul programului - PE executabil. Raspuns „da“ la întrebarea referitoare la crearea segmentului importurilor.

2. Suntem acum utile fereastra «Dezasamblarea» și «Strings Window». Dacă acestea nu sunt deschise, se deschide prin intermediul View - Deschis Subviews.

a. Pe partea stângă există o săgeată care ne arată că dintr-o anumită bucată de cod, programul revine la concluzia că inscripția „ghici numărul“. Adică, am găsit la începutul ciclului. Dacă vă întrebați în cazul în care programul se întoarce la începutul buclei, face un singur clic pe inscripția «loc_4012CF:». Ea a subliniat în galben. Acum, dacă derulezi codul, putem vedea JMP-instrucțiuni, după cum sa menționat de galben, ceea ce duce la începutul ciclului. În plus față de acestea, este afișat ca „mai mare decât“ și „mai puțin“. Este clar că aici se afișează mesaje despre rezultatul greșit și a reveni la începutul ciclului.

b. În partea de jos există o linie, informarea cu privire la faptul că am ghicit numărul. Aceasta este, în cazul în care programul nu este „sări“ în porțiunile inferioare ale codului, se va ajunge la inscripția „Ai ghicit ... pentru încercarea!“. Scopul nostru - pentru a face programul rula până la această linie, indiferent de rezultatul.

5. Pentru a trece de la întâmplă, trebuie să înlocuim salturi condiționate. În acest caz, două jnz-instrucțiuni care 004012F9 observate la rând și 00401301. Înainte de fiecare dintre aceste date document este o comparație, care sunt în registrul EAX cu datele de la EBP. Apropo, cele două săgeți punctate ne permit să înțelegem ceea ce este cu adevărat de management al programului este trecut în jos pe undeva.

6. Este necesar să se înlocuiască declarațiile condiționale jnz pe baza declarațiilor NOP. NOP înseamnă „nu fac nimic și du-te la linia următoare.“ Pentru a avea o idee despre ceea ce va trebui să fie înlocuit, selectați una dintre instrucțiunile și deschideți fila „vizualizare HEX“

7. Acum, că știm unde și ce trebuie schimbat. Să deschidem programul XVI32 nostru și pentru a găsi octeții necesare.

Înlocuiți valorile din cele patru celule de 90 și de a salva programul.

8. Și acum - etapa cea mai interesantă - rula shki EXE-a modificat :)

Într-adevăr, vom introduce orice număr de ori și prima ghici un număr. Ea a lucrat!

Compilați acest fișier, puneți-l în folderul cu 1.exe vechi, executați. Programul este rupt.