Dezasamblare rusească

Dezasamblarea face parte integrantă din lumea programării, cum ar fi arheologia, istoria lumii umane. Și dacă cel de-al doilea a trecut deja de mai multe etape de dezvoltare - de la codarea mașinii la bloc-modular în limbile de nivel înalt și acum a trecut la nivelul programării sistemului în limbile vizuale, prima este încă călcată în prima etapă. La urma urmei, SOURSER este încă amintit. Și în același IDA PRO, care este considerat cel mai bun, o persoană încă mai are de rezolvat probleme elementare - pentru a determina manual unde sunt octeții și unde sunt codurile. Și este timpul să treceți la dezasamblarea bloc-modulară cu ieșirea de texte lingvistice de nivel înalt. Motivul împiedicării pe teren este ideologia nereușită a dezasamblării (liniară) în acestea, și a altor dezasamblători. Reprezentând dezasamblarea mea RD16.exe, încerc să demonstrez o nouă ideologie de dezasamblare (mozaic), care permite rezolvarea acelorași sarcini mai eficient și mai calitativ. Cred că perspectiva dezvoltării dezasamblării este deschisă.







Istoria nașterii

Originea dezasamblării rusești este destul de veche. A început în perioada sovietică, când IBMok nu mai aveam, dar au apărut primele calculatoare de amatori. În special, "Specialist", dacă cineva își amintește. Apoi, pe baza lui am făcut computerul meu "Specialist_MX", cu RAMDISK, cu "sistem de operare", asemănător cu "Norton", cu unități de disc. A reușit să replice în toată țara. Atunci m-am confruntat cu nevoia de dezasamblare. Pe de o parte, aceasta este o practică excelentă de învățare a limbajului de asamblare, iar școala de a învăța să scrie despre ea. Pe de altă parte, este o modalitate convenabilă de a adapta programele la noile nevoi. Și când a venit la programe mari precum LAYOUT, BASIC, atunci era nevoie de un disassembler mai puternic. Atunci am scris prima mea dezasamblare. În el am aplicat apoi și mi-am elaborat ideologia de dezasamblare și cu succes. Cu toate acestea, atunci nu am crezut că ea a fost ceva special, a luat de la sine.

Totuși, este timpul, "Specialistul" a murit liniștit. Și am trecut deja la echipamente mai moderne. Sa întâmplat așa că primul lucru pe care l-am întâlnit a fost dezasamblarea SOURSER. Și atunci am scuipat. Pentru a pune bazele unei dezasamblări automate ideologia absolut greșită, literalmente la exact opusul. Cu toate acestea, pionierii ar trebui să fie tratați cu respect. Este întotdeauna mai greu pentru ei. Atunci am decis să nu las ideea mea să moară, să o transfer la un computer modern.







Calea nu a fost ușoară și nu rapidă. Pur și simplu era de neconceput să scriem o bibliotecă de comenzi. Informația nu era suficientă. A trebuit să iau de la SOURSERa versiunea 1.07. Dezasamblat utilizând versiunea 3.07. A suferit o mulțime de săptămâni înainte de a primi un text acceptabil. Și mai mult timp, multe programe nu puteau fi atinse, până când nu s-au rezolvat toate OFFSET-urile și alte lucruri.

Ca rezultat, sa născut RD16, în care doar biblioteca de comenzi a rămas din SOURSERa. Setul de procesoare este, de asemenea, păstrat, totuși, toți nu au verificat, nu a fost nimic de făcut. Cu toate acestea, acum tipul de procesor este determinat automat. Ca rezultat, acum puteți face aceeași lucrare cu RD16 într-o seară. Apropo, nu este greu să-ți verifici programele cu un disassembler. Multe erori din program devin vizibile. Da, și gunoi plutește puțin. Se întâmplă că procedurile utilizate anterior și apoi dezactivate rămân.

Ideologia dezasamblării

În SOURSER, principala atenție a fost acordată primei funcții - automatizarea. Cu toate acestea, eficiența muncii în mașină a fost scăzută. Da, și unde ar putea lua cu un algoritm liniar primitiv - să decodeze solid toate octeții din fișier și apoi să ghicească unde sunt codurile reale și unde sunt cele false. Chiar și o persoană nu rezolvă doar această problemă. Apoi, de cele mai multe ori, aplică mai degrabă metoda de "pătrundere științifică", prin inspirație. Și cum poate o mașină să învețe această inspirație?

În IDA PRO a fost deja acordată atenție celei de-a doua funcții - interactivitate. Și au dezvoltat o resursă puternică pentru munca manuală. Cu toate acestea, algoritmul primitiv al muncii a rămas în general același. Prin urmare, o mare parte a acestei resurse este destinată să compenseze munca ineficientă a mașinilor.

Toate programele constau din două părți - zona codului și zona de date. Iar sarcina de dezasamblare este în primul rând să dau seama ce și unde. Nu este rezonabil să încărcați o persoană cu această lucrare. Prea rutină și voluminoasă. Prin urmare, diviziunea muncii trebuie să fie nu numai cantitativă, ci, mai ales, calitativă. În mod evident, o persoană este mai deșteaptă decât orice mașină. De aceea, el ar trebui să se implice în lucrarea cea mai inteligentă, lăsând mașina cu totul primitivă și rutină. Cu alte cuvinte, aparatul ar trebui să detecteze funcția mașinii de octeți de cod, iar persoana să ocupe funcția sa semantică.

Partea principală a programului, desigur, este codul, iar zona de date, ca atașament la acesta și, prin urmare, ca atare, este secundară. A fost această idee care a jucat o glumă crudă cu dezvoltatorii de dezasamblatoare. Ei și-au prezentat ideea dezasamblării sub forma unui principiu generalizat. Întregul program dezasamblat este REGIUNEA CODEI, iar sarcina mașinii în modul automat este de a dezvălui zonele de date. Și pentru ca mașina să rezolve sarcina în acest mod în mod clar și neechivoc, ar trebui să i se dea instrucțiuni clare și lipsite de ambiguitate. Iar voia lor, pur și simplu nu există cu acea ideologie. Deoarece lumea de dezasamblare și timp de marcare.

Ideologia rusească

În plus față de procesul principal, există concurent, paralel. De exemplu, nu este lipsit de importanță identificarea etichetelor OFFSET. Aici, dezasamblatorul primește instrucțiunea - atunci când întâlnește comenzile care se referă la memorie, acordă atenție registrului care este folosit pentru aceasta. Apoi, întoarceți-vă înapoi și găsiți locul în care a fost ultima descărcare din acest registru și, în acest loc, lăsați-vă o instrucțiune suplimentară - auto-offset. În următoarea trecere va fi elaborată. Desigur, mașina nu reușește întotdeauna să rezolve această problemă, așa că la a doua trecere mașinii i se dă instrucțiunea - toate locurile de încărcare a registrelor fără o marcă de auto-înscriere ca fiind problematică, pentru a ajuta persoana.







Articole similare

Trimiteți-le prietenilor: