Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Ida pro versioni rus. IDA Pro është çmontimi më i fuqishëm në botë

Kushdo që ka provuar ndonjëherë të çmontojë një program pak a shumë serioz e di këtë mjeti më i mirë se IDA Pro nuk është gjetur. Kjo shpjegohet lehtësisht nga inteligjenca (vetë çmontuesi komenton kodin dhe njeh funksionet standarde të bibliotekës dhe sistemit), ndërveprimi (mund të ndërpresësh procesin e çmontimit në çdo moment, shto ndryshimet e kërkuara dhe më pas vazhdoni), mbështetje për gjuhën e vet të skriptimit (IDC), praninë e shtojcave (që ju lejojnë të kurseni dhjetëra orë kërkimi) dhe IDA SDK.
Një korrigjues shpesh përmendet si një "mjedis i ashpër" në krahasim me një çmontues, që kërkon që ju të jeni të përfshirë vazhdimisht, të provokoni mendime dhe të detyroheni të merrni vendime gjatë gjithë kohës. Duke punuar me IDA Pro, mund të siguroheni lehtësisht për këtë deklaratë: komoditeti dhe funksionaliteti i IDA Pro ju lejon të largoheni nga pyetja "Unë e di atë që dua, por nuk di si ta arrij atë" dhe të përqendroheni në problemi në çfarë mënyre të arrihet rezultati i dëshiruar duke përdorur aftësitë e IDA Pro".
Por përdorimi i një çmontuesi kërkon më shumë sesa thjesht njohuri dhe përvojë, ai gjithashtu vjen me një mori çështjesh etike dhe ligjore. Nuk është sekret që IDA Pro është një nga mjetet e preferuara të hakerëve - njerëzve që vjedhin programet e njerëzve të tjerë.

Sot, i dashur lexues, dëshirojmë të paraqesim në vëmendjen tuaj një intervistë me krijuesin e IDA Pro - Ilfak Guilfanov.

Intervistë

TanaT: Ju lutemi na tregoni pak për veten tuaj.

Ilfak: Pra menjëherë nga vetja? Epo, do të përpiqem. Shkova në shkollë në një fshat të vogël në Tatarstan, pastaj hyra në Moskë Universiteti Shtetëror ato. Lomonosov për Mekanikë dhe Matematikë. Shumë vend interesant, Jam shumë me fat që kam studiuar i rrethuar nga shumë njerëz të jashtëzakonshëm.

Dy vitet e para iu kushtuan studimit dhe studimit përsëri, mësova shumë gjëra të reja për veten time. Përfshirë kompjuterët. Kompjuterin e parë në jetën time e pashë në vitin e dytë. Në derën e mbyllur të Laboratorit Metodat Llogaritëse në katin e 13-të pashë një televizor me shkronja jeshile në ekran. U befasova shumë, sepse deri më tani televizorët shfaqnin vetëm fotografi, jo tekst. E dija që kompjuterët ekzistojnë diku, janë shumë të mëdhenj dhe llogaritin diçka, por për çfarë dhe si, kisha vetëm një ide të paqartë. Këtë ditë, kur pashë për herë të parë një terminal të lidhur me CM-4 (analog i PDP-11), fjalë për fjalë më ndryshoi jetën - terminalet ishin shumë të vogla, në vend të numrave kishte tekst në ekran, dhe gjithçka ishte afër, ju mund ta ndjeja, shtyp butonat ...

Mësova se teksti që ndryshon kaq shpejt në ekran mund të ndryshohet dhe për këtë duhet të shkruani "programe". Ekziston edhe një tastierë për futjen e shkronjave. Ju mund ta bëni kompjuterin të numërojë gjithçka për ju - nga zgjidhja e ekuacioneve kuadratike deri te gjenerimi i numrave të thjeshtë.

Unë isha tmerrësisht me fat - në atë kohë kishim një kurs programimi shumë interesant në Fakultetin e Mekanikës dhe Matematikës. Ky kurs u botua më vonë në formën e një teksti nga autori i tij, A. G. Kushnirenko, të cilit i jam mirënjohës për leksionet dhe sistemin e tij të shkëlqyer të mësimdhënies. Me pjesëmarrjen e tij u shkrua sistem të veçantë që studentët t'u mësojnë atyre bazat e programimit, pikërisht atë thelbin, pjesën më të rëndësishme, pa të cilën një programues nuk do të shkruajë kurrë. programe të mira... Zhvillimi i software për këtë kurs u krye nga studiues të rinj të LVM G. V. Lebedev, A. A. Vedenov, D. V. Varsanofiev, A. G. Dymchenko dhe të tjerë. përpunimi i informacionit. Edhe sot, unë do t'i rekomandoja të gjithëve që duan të mësojnë të programojnë të fillojnë me të.

Aktualisht jam duke punuar për kompaninë belge Datarescue, detyra kryesore është të vazhdoj punën për çmontuesin, përveç projekteve të tjera. Kam 2 programues të rinj si asistentë të cilët po ashtu janë duke punuar në projekt. Ne kemi gjithashtu programe që lidhen me sigurinë në internet (kriptografi) dhe rikuperimin e të dhënave.


Ilfak Gilfanov, themelues i IDA

IDA Pro në veprim. Vini re se emrat Win Funksionet API përcaktuar saktë



TanaT: A mundet IDA Pro të çmontojë bajtkodin Java dhe kodin e menaxhuar MSIL?

Ilfak: Sigurisht, IDA çmonton programet Java ose C #. Dhe ajo që është e jashtëzakonshme, mund të çmontojë klasat edhe në raste shumë të vështira, kur skedari hyrës ishte me të meta, por ende funksionale.


TanaT Ku e morët njohurinë dhe përvojën aq të nevojshme për zhvillimin e këtij lloj programi?

Ilfak: Unë kam treguar tashmë për studimet e mia në universitet. Përvoja erdhi me kalimin e kohës. Kodi që u shkrua në fillim të viteve '90, për mendimin tim, nuk është i përsosur, por funksionon, dhe për këtë arsye ne nuk do ta rishkruajmë akoma.
Dhe njohuria ... Epo, ju vetë e dini se si është jeta e një programuesi. Dihet se “duhet të vraposh gjatë gjithë kohës për të qëndruar në vend”. Ky thënie, si asnjë tjetër, i përshtatet zanatit të programimit. Libra për gjuhët e programimit, për dizajnin në përgjithësi, për logjikën dhe sistemet komplekse ... Unë veçanërisht do të doja të theksoja gjuhë funksionale dhe çudira të tjera, të cilat janë fakultative, por shumë të dobishme për t'u ditur. Libra interesantë për arkitekturën (kjo është arkitektura klasike, e cila lidhet me ndërtesat). Ato ofrojnë themelin - sensin e përbashkët që çdo program duhet të ketë një themel, një strukturë mbështetëse, një çati ... Më pëlqen arkitekti Christopher Alexander me librin e tij "Mënyra e përjetshme e ndërtimit".


TanaT: Skriptet për IDA Pro - Ide e mirë... Si lindi në kokën tuaj?

Ilfak: Epo, ideja duket se qëndron në sipërfaqe? Nuk ka asnjë program i madh, e cila nuk do t'ju lejonte ta programoni atë në një mënyrë ose në një tjetër. Për të qenë i sinqertë, doja të shkruaja një pjesë të përpiluesit (leksikor + analizë, siç përshkruhet nga Aho dhe Ulman), skenarët doli të ishin një arsye e mirë. Sot nuk do të shkruaja gjuhën time, por thjesht do të lidhja ato ekzistueset, për shembull Perl ose Python. Do të ishte edhe më e thjeshtë dhe do ta lejonte më shumë përdoruesit shkruajnë skripta.


TanaT: A është tepër vonë për të shtuar mbështetje për këto gjuhë skriptimi në IDA? Apo është jopraktike?

Ilfak: Ne nuk planifikojmë të mbështesim vetë gjuhët e tjera, por çdo përdorues i IDA mund ta bëjë vetë duke përdorur IDA SDK. Madje dëgjova me cep të veshit vepra të ngjashme për të lidhur Python me IDA.


IDA Pro nuk është vetëm një çmontues, por edhe një korrigjues. Mund të siguroheni duke parë foton



TanaT: Mund të na tregoni pak për IDA SDK? A ju lejon të shkruani vetë shtojca për IDA?

Ilfak: Po, me IDA SDK, ju mund ta zgjeroni IDA në çdo mënyrë të mundshme, të shtoni funksionalitete të reja, mbështetje për procesorë dhe platforma të reja. Ekzistojnë 3 lloje modulesh shtesë që mund të zhvillohen duke përdorur SDK: modulet e procesorit, ngarkuesit dhe shtojcat. Modulet e procesorit ju lejojnë të analizoni programet për procesorë të rinj. Ngarkuesit nevojiten për të mbështetur formatet e reja të skedarëve. Dhe së fundi, shtojcat ju lejojnë të zgjeroni funksionalitetin e IDA - kjo mund të jetë shtimi i komandave të reja ose përmirësimi i analizës duke instaluar mbajtës të ngjarjeve në IDA.

IDA API është një API mjaft komplekse dhe e pasur dhe ka rreth 1000 funksione. Jemi përpjekur ta bëjmë bazën e të dhënave të IDA plotësisht të aksesueshme dhe të japim kontroll të plotë mbi analiza. Sigurisht, një API kaq e madhe nuk është e lehtë për t'u mësuar. Prandaj, SDK përmban shumë shembuj të moduleve reale nga jeta reale... Përsëri, ju mund të gjeni shembuj në rrjet.


TanaT: Pa dyshim, IDA Pro është çmontimi më i fuqishëm dhe më fleksibël në botë. A është e këndshme për ty ta kuptosh këtë? Çfarë është IDA Pro për ju: një hobi / hobi apo një produkt profesional?

Ilfak: Filloi si hobi në vitin 1991, vetëm një hobi për mua dhe miqtë. Dhe ngadalë u rrit në diçka, dhe kjo përdoret nga shumë profesionistë në mbarë botën. IDA është tani program komercial, dhe, natyrisht, qëndrimi im ndaj saj ndryshoi. Paralelisht me zhvillimin e IDA-s jam i interesuar të bëj edhe projekte të tjera. Për shembull, problemi i rikuperimit të fotove nga media dixhitale në shikim të parë, kjo është një detyrë e thjeshtë, por për të arritur rezultate maksimale, kërkohej të zhvillohej një algoritëm jo standard, dhe programin që rezulton jep pikët më të mira(të dhëna nga testet e revistave kompjuterike). Puna në Photorescue ka krijuar një hobi të ri - fotografisë dixhitale, kështu që ky hobi mund të zhvillohet edhe në veprimtari profesionale, nje dite...


TanaT: Në cilat raste mendoni se një programuesi ka nevojë për interaktivitetin e IDA-s? Vetëm kur kodi është i koduar?

Ilfak: Jo vetem. Unë mendoj se ndërveprimi i IDA është tipari më i rëndësishëm i tij. Së pari, përdoruesi mund të ndryshojë menjëherë prezantimin e programit në ekran, gjë që është shumë e dobishme nëse analiza automatike e analizoi gabimisht funksionin. Ju gjithashtu mund të riemërtoni një funksion ose të shtoni një koment dhe të gjitha ndryshimet janë të dukshme menjëherë në ekran. Së dyti, sistemi i zhvilluar i navigimit ju lejon të gjeni pjesën interesante të programit pa kërkime të gjata sipas listimit.

Analiza e programit është disi e ngjashme me zgjidhjen e fjalëkryqeve: si më shumë informacion kemi, aq më e lehtë është të merret me mend fjalën tjetër. Sa më kuptimplotë të jenë emrat dhe komentet në listë, aq më e lehtë është të kuptosh logjikën e punës dhe në përputhje me rrethanat të riemërtosh funksionin e analizuar. Ne fillojmë praktikisht me fletë boshe kur të gjitha funksionet përveç atyre të importuara emërtohen si sub_1234. Ky emër i gjeneruar automatikisht nuk jep asnjë informacion rreth asaj që bën funksioni. Pastaj, në procesin e analizimit (preferoj analizimin nga poshtë lart, domethënë funksionet e nivel më të ulët) i riemërtojmë funksionet dhe kështu e bëjmë listën më të qartë dhe më të kuptueshme. Pa interaktivitet, kjo thjesht nuk do të ishte e mundur.

Natyrisht, interaktiviteti nuk është gjithmonë i nevojshëm. Për shembull, nëse na duhet të gjejmë kodin që ka disa veti në një koleksion të madh programesh, atëherë nuk duam t'i analizojmë të gjitha programet me dorë (imagjinoni që keni një familje programesh me 200 skedarë). Për raste të tilla, është më mirë të drejtoni IDA nga skedar grupi dhe ia besoni IDC-së analizën dhe gjetjen e kodit me interes: një skript ose një plugin.


TanaT: Duke folur për shtojcat. A mund të më thoni se ku mund të gjeni shtojca standarde (dhe ndonjë tjetër) për IDA?

Ilfak: Deri më tani, lokacioni më i aksesueshëm ka qenë grupi IDAExtensions në Yahoo. Me krijimin e një projekti të drejtuar nga cvs në sourceforge, shumica e shtojcave ka shumë të ngjarë të jenë të disponueshme prej andej.


WinGraph e bën të lehtë ndërtimin e një strukture programi



TanaT: Cila kategori njerëzish mendoni se është përdoruesi kryesor i produktit tuaj? Piratë / Hakerë apo Zhvillues?

Ilfak: Jo ata dhe jo të tjerët. Përdoruesit kryesorë janë specialistë në siguria e informacionit, kompanitë antivirus, dhe në përgjithësi specialistë të sigurisë.

Zhvilluesit dhe hakerët, natyrisht, përdorin gjithashtu IDA, por nuk janë klientët kryesorë. Unë në përgjithësi hesht për hakerat, absolutisht nuk dua që IDA të përdoret për të hakuar programe dhe do ta luftoj atë në çdo mënyrë.
Zhvilluesit nuk kanë gjithmonë nevojë për një çmontues. Duke pasur parasysh faktin se shumë nuk e dinë gjuhën e asamblesë, mund të themi se shumica e zhvilluesve nuk do të kenë nevojë për një çmontues. Përjashtim bëjnë specialistët e nivelit të ulët - shkrues të drejtuesve dhe sistemeve të ngulitura, të cilët janë të detyruar të punojnë në assembler.

Nuk e di pse hakerët konsiderohen si përdoruesit kryesorë të IDA në Rusi. Nëse IDA do të ishte e dobishme vetëm për ta, atëherë do të ndaloja së punuari në të pa hezitim.
Për ata që përdorin IDA për hakerim, do të them sa vijon: "të thyesh - jo të ndërtosh". Programet, si çdo produkt tjetër i veprimtarisë njerëzore, kërkojnë punë - dikush duhet të shpenzojë kohën dhe përpjekjet e tij për të shpikur, shkruar dhe testuar një program. Një hajdut është si një hajdut që pa diçka që nuk i përkiste dhe e mori. Jo sepse ai është aq i guximshëm dhe i zgjuar, ai arriti të hakojë programin, por thjesht sepse mbrojtja ishte e dobët ose zhvilluesi nuk i kushtoi vëmendje fare. Ku është trimëria këtu? Nuk më pëlqen aspak që IDA përdoret për qëllime të tilla.


TanaT: Pyetja lind menjëherë, sepse një çmontues i mirë nuk duhet të "thërmohet" që në truket e para "anti-çmontues". Rezulton se duke zhvilluar një çmontues dhe duke rritur inteligjencën + funksionalitetin e tij, ju e bëni jetën e një hakeri më të lehtë. Kontradikta?

Ilfak: Përkundrazi, dialektika. IDA e bën analizën e softuerit më të lehtë për të gjithë. Kjo do të thotë se mbrojtja e programeve po bëhet më e sofistikuar, po shpiken metoda të reja. Për shembull, si i qaseni një sistemi që përdor një qasje programimi të orientuar nga objekti me mesazh që kalon ndërmjet objekteve? Do të jetë pothuajse e pamundur të kuptohet ndonjë gjë nga lista, pasi kështu që përveç thirrjeve indirekte me numra mesazhesh, praktikisht nuk do të ketë asgjë.


TanaT: Sa kushton sot IDA Pro dhe a mund ta blej kudo në Rusi?

Ilfak: Po, IDA mund të blihet në Moskë nga Heliosoft. Adresa e tyre [email i mbrojtur]... Çmimet e sakta mund të mësohen nga përfaqësuesit e kompanisë, ato janë në rangun prej 266-795 dollarë, në varësi të versionit specifik.


TanaT: Cfare jane Kërkesat e sistemit IDA? Nëse flasim për IBM PC, cilat sisteme operative mbështet?

Ilfak: Versionet e para të IDA ishin krijuar për të punuar nën MS DOS me 640 kb memorie, kështu që gjatë dizajnimit të programit preferova zgjidhje që nuk kërkonin shumë memorie ose procesor të shpejtë. Tani, natyrisht, është joreale të drejtosh IDA në një të tillë memorie e vogël por çdo moderne kompjuteri do të bëjë... Si më shumë memorie dhe ç'farë procesor më i shpejtë, aq më mirë, sigurisht.

IDA punon nën MS Windows (çdo version), MS DOS, OS / 2. Shumica dërrmuese e përdoruesve punojnë nën MS Windows, kështu që ne nuk jemi as të sigurt nëse ka kuptim të vazhdojmë të mbështesim sisteme të tjera. Nëse dikush ka ndonjë mendim për këtë, ju lutemi dërgoni e-mail ( [email i mbrojtur]), do të donim të dëgjonim argumentet në favor të këtyre sistemeve.
Ndërsa IDA mund të punojë nën menaxhimi i tre sistemet operative, numri i platformave për të cilat mund të çmontojë skedarët është praktikisht i pakufizuar. Emërtoni pothuajse çdo modern sistemi operativ, dhe rezulton se IDA do të jetë në gjendje të analizojë skedarët e ekzekutueshëm për të. Nuk e mbaj më mend numrin e saktë të procesorëve të mbështetur nga IDA, por e di që janë më shumë se 32 të tillë: disa vite më parë më duhej të zgjeroja maskën e bit-it për listën e procesorëve (dikur ishte i gjatë, tani i gjatë , shpresoj se do të zgjasë për pesë vjet).


TanaT: Në çfarë drejtimi po përmirësoni aktualisht çmontuesin tuaj? A po shtoni mbështetje për procesorë të rinj apo po përmirësoni funksionalitetin?

Ilfak: Ne po shtojmë vazhdimisht procesorë të rinj dhe po përmirësojmë funksionalitetin. Sipas mendimit tim, sot IDA ka pothuajse gjithçka që ju nevojitet për të analizuar programet, me përjashtim të një gjëje themelore - analizën e rrjedhave të të dhënave dhe mundësitë që dalin nga kjo analizë. Ne mund ta zbatojmë këtë analizë për IBM PC, por ne vërtet duam të bëjmë diçka që do të funksionojë për çdo procesor. Përndryshe, mund të rezultojë se ajo që është bërë sot do të duhet të hidhet brenda pak vitesh ose të rishkruhet për përpunues të rinj. Nuk është sekret që procesorët 64-bit së shpejti do të jenë të disponueshëm për shumë njerëz, dhe ata nuk kanë gjasa të jenë të pajtueshëm. kodi binar me IBM PC.

V Versioni i funditËshtë shfaqur korrigjuesi IDA për MS skedarët e Windows, dhe në të ardhmen, ndoshta do të shtojmë module të reja korrigjuese - për Linux, për mikrokontrolluesit, do të bëjmë korrigjimin në distancë.
Sigurisht, një drejtim tjetër është lëshimi i kodit në një gjuhë të nivelit të lartë, për shembull, C, d.m.th. duke shkruar një dekompilues. Kjo është një detyrë e denjë dhe ne po punojmë për të. Ka shumë detaje që duhet të merren parasysh kur punoni me programe të jetës reale.
Duhet thënë menjëherë se dekompiluesi nuk do të jetë kurrë pjesë e IDA. Nëse (dhe kjo është "nëse" e madhe) do të bëhet dekompiluesi, atëherë vetëm si një produkt i veçantë.


TanaT: Një dekompilues C do të ishte një mjet i shkëlqyeshëm për shumë profesionistë të inxhinierisë së kundërt. A mendoni se kjo është e vërtetë?

Ilfak: Është e vërtetë nëse i vendosni vetes synime të arsyeshme. Nëse qëllimi është krijimi i një sistemi që do të prodhojë kod për kompilim dhe përdorim të mëvonshëm si pjesë e një programi tjetër, atëherë përgjigja është jo. Përkundrazi, një dekompilues i tillë mund të bëhet, madje edhe shumë i lehtë, por kjo nuk më intereson aspak. Një sistem i tillë do të ishte shumë i përshtatshëm për vjedhjen e kodit. Nëse dikush dëshiron ta bëjë këtë, atëherë të lutem, pa mua. Po, nëse kërkoni mjaftueshëm, mund të gjeni sisteme të tilla në internet.

Nëse qëllimi është që programet të kuptohen më lehtë, d.m.th. përfaqësimi i logjikës së programit në një gjuhë të nivelit të lartë në mënyrë që të jetë e lexueshme nga njeriu, atëherë detyra është shumë më e vështirë, por edhe e zgjidhshme. Ngarkesa e punës është shumë e madhe dhe tregu për dekompilues është i vogël. Ndoshta kjo shpjegon faktin se dekompiluesit e vërtetë janë të aftë të analizojnë programe reale, nuk ekziston?
Nga rruga, ekziston tashmë një dekompilues i vogël i bazuar në IDA. Është krijuar nga një student si tezë masteri. Ju mund ta gjeni sajtin duke e kërkuar me emër: desquirr.


TanaT Pak në mënyrë konfuze, edhe pse kudo thuhet se ju jeni krijuesi i IDA Pro, ai po shitet nga Datarescue. Mund ta sqaroni situatën?

Ilfak: Epo keshtu eshte. Datarescue shet IDA Pro. Nuk shes direkt, preferoj te bej programim, e bej me mire.


TanaT: A ekziston një version jo "Pro" i produktit tuaj?

Ilfak: Po, kam. Studentët, ose përdoruesit që vetëm herë pas here çmontojnë programet, mund të përdorin version falas IDA Freeware, i cili është i disponueshëm në internet, për shembull në Simtel. Ky version është versioni i plotë e cila ishte në shitje disa vite më parë. E vetmja gjë që mund të befasojë përdoruesit modernë, i mësuar të punojë me miun - kjo është një ndërfaqe teksti e programit, por thelbi i programit është i njëjtë. Një programues i vërtetë nuk i kushton vëmendje detajeve kaq të vogla si ndërfaqja e programit :).


TanaT: Ju lutem më tregoni nëse një version provë ose demo i IDA Pro është i disponueshëm diku?

Ilfak: Oh sigurisht. Ne po japim demo blerësit potencial- kompani serioze, agjenci qeveritare, etj. Menjëherë dua të vërej se Vasya Pupkin, e cila u regjistrua si FuRiOuSDaRkLoRd, dhe kërkon një version demo për herë të 5-të (sepse ai dëshiron "personalisht" të sigurohet që IDA t'i përgjigjet " lartë kërkesat "), ka shumë pak shanse për ta marrë atë. Kërkesa të tilla shkojnë drejt e në shportë.

Edhe pse ka raste qesharake. Për shembull, unë u godita nga një "pastor i varfër në Argjentinë" që dëshiron të përdorë IDA. Ai gjithashtu shkroi se do të lutej për ne nëse i dërgonim një program. Pyes veten se çfarë kishte nevojë për të çmontuar, jo Biblën? Ose një “student i varfër” që i duhej menjëherë të analizonte ndonjë mikrokontrollues të veçantë sepse “klientit i duhet urgjentisht”.


TanaT: Cilin nga konkurrentët mund të veçoni? A ka dikush që mund të konkurrojë me IDA?

Ilfak: Sinqerisht, nuk di çfarë të them.


TanaT: Shumë përdorues ankohen se nuk ka pothuajse asnjë dokumentacion zyrtar për IDA PRO dhe është mjaft e vështirë të mësosh se si të punosh me të, veçanërisht me gjuhën e skriptimit. Mund të komentoni?

Ilfak: Po është e vërtetë. Tashmë është e vështirë të çmontosh programet në gjuhën e asamblesë, thjesht nuk di ta bëj më lehtë (do ta kisha bërë :)). Unë mund t'ju këshilloj vetëm të lexoni faqet e ndihmës, të shikoni shembuj të skripteve IDC të ofruara me IDA, të kërkoni në internet për shembuj përdorimi. Sa i përket dokumentacionit, nuk ka asnjë dhe nuk ka gjasa të ketë në të ardhmen e afërt, për fat të keq. Ekziston një ndihmë kontekstuale e quajtur nga F1.

Çështja rëndohet edhe më shumë nga fakti se shumë përdorues nuk dinë çfarë të bëjnë, d.m.th. nuk di të analizojë programet. Shumë varet nga niveli i përdoruesit. Dikush nuk di gjuhën e asamblesë dhe duhet të shpjegohet se çfarë janë xor eax, eax. Të tjerët nuk e kuptojnë se çfarë është DialogProc, sepse ai kurrë nuk programoi në Windows. E treta nuk është e qartë pse numri i shtytjeve në funksion nuk përputhet me numrin e hapjeve. Por këto janë më raste të thjeshta... Në mënyrë tipike, një përdorues ngarkon një program në IDA dhe nuk di çfarë të bëjë. Nuk është e lehtë t'i përgjigjesh kësaj pyetjeje, sepse "çfarë të bësh" varet nga "çfarë dëshiron të marrësh".

Prandaj, vendosëm të bëjmë maksimumin në një mënyrë të thjeshtë- ne kemi F1 që përshkruan çdo ekip, çdo funksion në IDC. Përdoruesi, i cili e di se çfarë dëshiron të marrë, thjesht kalon nëpër listën e komandave dhe përpiqet të gjejë një grup që do të zgjidhë një problem specifik. Por për një përdorues që nuk e di do të jetë më e vështirë dhe ndihma, me siguri, duhet të konsistojë në mësimin e përdoruesit bazat e asemblerit, përfaqësimin e programeve në formë binare, teknikat tipike MS Windows, etj. Për përdoruesit e huaj, ne zhvillojmë herë pas here kurse të tilla. Nëse ka mjaft njerëz të interesuar, ne mund të organizojmë kurse në Rusi.

Asambleri i parë dhe në të njëjtën kohë interpretuesi i parë ishte pseudokodi dhe grupi i udhëzimeve të Kodit të Shkurtër, i zhvilluar në korrik 1949 nga amerikanët Pres Eckert dhe John Moshley për kompjuterin BINAC. Zgjidhja për çdo problem u shkrua fillimisht ekuacionet matematikore... Ato, nga ana tjetër, u përkthyen karakter për karakter në kode: nga "a = b + c" në "S0 03 S1 07 S2". Në fazën përfundimtare kodet morën një formë binare dhe çdo rresht pas hyrjes ekzekutohej automatikisht. E para detyrë praktike, të cilën e zgjidhi montuesi, është llogaritja e tabelave të zjarrit të artilerisë për balistitët amerikanë. Montuesit mnemonikë (me "MOV" dhe "ADD") nuk u shfaqën deri në mesin e viteve 1950. Autorët e montimit janë më të njohur për shpikjen e të parëve makinat informatike(në tuba vakum): ENIAC (1946), BINAC (1949) dhe paraardhësi i drejtpërdrejtë kompjuterë modernë UNIVAC I (1951). Fatkeqësisht, as Eskert dhe as Moshli nuk mbijetuan deri më sot.


TanaT: A e keni lexuar librin "Mendësia e çmontimit të IDA" nga Chris Kaspersky? Sot ky është i vetmi libër për IDA në Rusisht, kështu që do të doja të dëgjoja mendimin tuaj për të. Jeni njohur me autorin e saj?

Ilfak: Po, e njoh Krisin dhe ai m'u afrua me pyetje gjatë shkrimit të librit. Libri është po aq i mirë sa një referencë gjithëpërfshirëse për funksionet e IDC dhe synon lexuesin që kupton gjuhën e asamblesë dhe pëlqen të manipulojë bit dhe bajt. Sigurisht, këtë libër mund ta rekomandoj vetëm për këdo që dëshiron të kuptojë plotësisht IDC dhe të mësojë se si të shkruajë skenarë të mirë.

Por jeta nuk qëndron ende dhe që nga shkrimi i librit, versionet e reja të IDA kanë dalë në qarkullim. Janë shfaqur veçori të reja (për shembull, zhvillimi i plug-in-it nuk përfshihet në libër). Shpresojmë që Chris do të shkruajë një vazhdim me më shumë theks. programe moderne dhe probleme tipike hasur nga profesionistët aspirantë të sigurisë së informacionit.


TanaT: Pse nuk shkruani diçka si "Advanced IDA Pro Developer" s / Udhëzuesi i përdoruesve "? Në fund të fundit, askush nuk i di të gjitha ndërlikimet e IDA, IDA SDK dhe IDC ashtu siç i bëni ju. Mendoj se ky libër do të kishte shitur një Përveç kësaj, praktika e botimit të librave për produktet tona është mjaft e përhapur sot: merrni të njëjtin Microsoft Press ...

Ilfak: Nuk jeni i pari që e keni ngritur çështjen e librit. Ndoshta një ditë do të vendos, por nuk jam ende gati të shkruaj. Nëse shkruaj një libër, vështirë se do të ketë kohë për të përmirësuar IDA, kështu që tani për tani, le të presë librin :)


TanaT: Më lejoni t'ju bëj një pyetje personale: Unë nuk kam lexuar askund intervista me ju, nuk ju pëlqen t'i jepni ato?

Ilfak: Kjo është intervista ime e parë.


TanaT: Diçka që dëshironi t'u thoni lexuesve tanë?

Ilfak: Dua të them faleminderit për të gjithë ata që ndihmuan në zhvillimin e IDA - gjenerimin e ideve, ndarjen e kodit, regjistrimin e programit dhe thjesht mbështetjen fjalë e mirë... Shpresoj që në të ardhmen IDA të mbetet një mjet për profesionistët që e përdorin për qëllime fisnike.

Faleminderit për pyetjet.


TanaT: Dhe faleminderit shumë për përgjigjet kaq interesante. Fat i mirë për ju personalisht dhe për krijimin tuaj, IDA, shpresojmë që ky çmontues të vazhdojë të zhvillohet jo më pak intensivisht dhe me fryt.
  • Tutorial

Ky postim do të jetë vërtet interesant për ata që sapo kanë filluar të interesohen për këtë temë. Tek njerëzit me përvojë, mund të shkaktojë vetëm gogësira. Përveçse ndoshta...
Inxhinieria e kundërt në atë pjesë më pak ligjore, ku nuk ka të bëjë me korrigjimin dhe optimizimin e produktit tuaj, ka të bëjë gjithashtu me detyrën e mëposhtme: "të zbuloni se si funksionon për ta". Me fjalë të tjera, rivendosja e algoritmit origjinal të programit, duke pasur në dorë skedarin e tij të ekzekutueshëm.
Për të mbajtur bazat dhe për të shmangur disa probleme - "hakoni" jo diçka, por ... keygen. Në 90%, ai nuk do të jetë i paketuar, i koduar ose i mbrojtur ndryshe - duke përfshirë normat e së drejtës ndërkombëtare ...

Në fillim ishte fjala. Dyfishtë
Pra, ne kemi nevojë për një çelës dhe një çmontues. Sa i përket të dytës, le të supozojmë se do të jetë Ida Pro. Subjekti i paemërtuar keygen i gjetur në internet:

Pasi kemi hapur skedarin keygen në Ida, shohim një listë funksionesh.

Pas analizimit të kësaj liste, ne shohim disa funksione standarde (WinMain, start, DialogFunc) dhe një sërë funksionesh të sistemit ndihmës. E gjithë kjo funksionet standarde duke përbërë kornizën.
Funksionet e përcaktuara nga përdoruesi, të cilat përfaqësojnë zbatimin e detyrave të programit, dhe jo mbështjellësin e tij nga API-shnyh dhe thirrjet e sistemit, çmontuesi nuk njeh dhe thjesht thërret nën_numrat. Duke pasur parasysh se ekziston vetëm një funksion i tillë, ai duhet të tërheqë vëmendjen tonë pasi, me shumë mundësi, përmban algoritmin e interesit për ne ose një pjesë të tij.

Le të ekzekutojmë çelësin. Ai kërkon dy rreshta me 4 shifra. Supozoni se tetë karaktere dërgohen në funksionin e llogaritjes së çelësit menjëherë. Ne analizojmë kodin e funksionit sub_401100. Përgjigja e hipotezës gjendet në dy rreshtat e parë:

var_4 = dword ptr -4
arg_0 = dword ptr 8

Rreshti i dytë lë të kuptohet në mënyrë të qartë për marrjen e argumentit të funksionit në kompensimin 8. Megjithatë, madhësia e argumentit është një fjalë e dyfishtë e barabartë me 4 bajt, jo 8. Kjo do të thotë se funksioni ka shumë të ngjarë të përpunojë një varg prej katër karakteresh në një kalim, por ai thirret dy herë.
Një pyetje që sigurisht mund të lindë: pse është rezervuar një kompensim prej 8 bajt për të marrë argumentin e funksionit, por tregon 4, sepse ka vetëm një argument? Siç e kujtojmë, pirgja rritet në rënie; kur një vlerë i shtohet pirgut, treguesi i stivit zvogëlohet me numrin përkatës të bajteve. Prandaj, pasi argumenti i funksionit shtohet në stack dhe para se të fillojë të ekzekutohet, diçka tjetër shtohet në rafte. Kjo është padyshim adresa e kthimit e shtuar në pirg pas telefonatës funksionin e sistemit telefononi.

Le të gjejmë vendet në program ku ndodhin thirrjet në funksionin sub401100. Ka me të vërtetë dy prej tyre: në DialogFunc + 97 dhe DialogFunc + 113. Udhëzimet që ne jemi të interesuar fillojnë këtu:

Një pjesë relativisht e gjatë e kodit

loc_401196: mov esi, mov edi, ds: SendDlgItemMessageA lea ecx, push ecx; lParam shtytje 0Ah; wParam shtytje 0Dh; Msg shtytje 3E8h; nIDDlgItem push esi; hDlg thirrje edi; SendDlgItemMessageA lea edx, push edx; lParam shtytje 0Ah; wParam shtytje 0Dh; Msg shtytje 3E9h; nIDDlgItem push esi; hDlg thirrje edi; SendDlgItem MessageA pusha movsx ecx, byte ptr movsx edx, byte ptr movsx eax, byte ptr shl eax, 8 or eax, ecx movsx ecx, byte ptr shl eax, 8 or eax, edx shl eax eax, 8 or eax eax, shtyje eax call sub_401100

Së pari, dy funksione SendDlgItemMessageA thirren në një rresht. Ky funksion merr një dorezë elementi dhe e dërgon atë mesazhi i sistemit Msg. Në rastin tonë, Msg në të dyja rastet është e barabartë me 0Dh, që është ekuivalenti heksadecimal i konstantës WM_GETTEXT. Ai merr vlerat e dy fushave të tekstit në të cilat përdoruesi ka futur "dy vargje me 4 karaktere". Shkronja A në emrin e funksionit tregon se përdoret formati ASCII - një bajt për karakter.
Rreshti i parë është shkruar në zhvendosjen lParam, e dyta, e cila është e dukshme - në zhvendosjen var_1C.
Pra, pas ekzekutimit të funksioneve SendDlgItemMessageA Gjendja e tanishme regjistrat ruhen në stack duke përdorur komandën pusha, më pas një bajt i njërit prej vargjeve shkruhet në regjistrat ecx, edx dhe eax. Si rezultat, secili prej regjistrave merr formën: 000000 ##. Pastaj:

  1. Instruksioni SHL zhvendos përmbajtjen e biteve të regjistrit eax me 1 bajt ose, me fjalë të tjera, shumëzon përmbajtjen aritmetike me 100 heksadecimal ose 256 dhjetore. Si rezultat, eax bëhet 0000 ## 00 (për shembull, 00001200).
  2. Një operacion OR kryhet midis vlerës së marrë eax dhe regjistrit ecx në formën 000000 ## (le të jetë 00000034). Si rezultat, eax do të duket kështu: 00001234.
  3. Bajt i fundit, i katërt i rreshtit është shkruar në ecx "të lirë".
  4. Përmbajtja e eax zhvendoset përsëri me bajt, duke krijuar hapësirë ​​në bajtin e ulët për udhëzimin e ardhshëm OR. Tani eax duket kështu: 00123400.
  5. Instruksioni OR ekzekutohet, këtë herë midis eax dhe edx, i cili përmban, të themi, 00000056. Tani eax është 00123456.
  6. Dy hapat e SHL eax, 8 dhe OR përsëriten, me rezultat që përmbajtja e re e ecx (00000078) i shtohet "fundit" të eax. Si rezultat, eax ruan vlerën 12345678.
Pastaj kjo vlerë ruhet në një "ndryshore" - në zonën e kujtesës në offset arg_4. Gjendja e regjistrave (vlerat e tyre të mëparshme), të ruajtura më parë në pirg, nxirret nga rafti dhe shpërndahet në regjistra. Pastaj vlera në offset arg_4 shkruhet përsëri në regjistrin eax dhe kjo vlerë shtyhet nga regjistri në stek. Kjo pasohet nga një thirrje për funksionin sub_401100.

Cili është kuptimi i këtyre operacioneve? Është shumë e lehtë të zbulohet edhe në praktikë, pa teori. Le të vendosim një pikë ndërprerjeje në korrigjuesin, për shembull, në udhëzime shtytëse eax (pak përpara se të thirret nënfunksioni) dhe ekzekutoni programin. Keygen do të fillojë, do t'ju kërkojë të futni rreshta. Pasi kemi futur qwer dhe tyui dhe duke u ndalur në pikën e ndërprerjes, shikojmë vlerën e eax: 72657771. E deshifrojmë në tekst: rewq. Kjo do të thotë, kuptimi fizik i këtyre operacioneve është përmbysja e vargut.

Tani e dimë se në sub_401100 një nga linjat burimore, i kthyer prapa, në madhësi të dyfishtë fjalësh, përshtatet plotësisht në cilindo nga regjistrat standardë. Ndoshta mund t'i hidhni një sy udhëzimeve sub_401100.

Një tjetër pjesë relativisht e gjatë e kodit

sub_401100 proc pranë var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi pusha mov ecx, mov eax, ecx shl eax, 10h jo eax add ecx, eaxx mov shr eax, 5 xor eax, ecx lea ecx, mov edx, ecx shr edx, 0Dh xor ecx, edx mov eax, ecx shl eax, 9 jo eax add ecx, eax mov eax, ecx shr eax, 11h xoxr eax, , eax popa mov eax, pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_401100 endp


Në fillim, nuk ka asgjë interesante këtu - gjendjet e regjistrave ruhen me kujdes në pirg. Por komanda e parë që na intereson është ajo që ndjek udhëzimin PUSHA. Ai shkruan argumentin e funksionit të ruajtur në offset arg_0 në ecx. Pastaj kjo vlerë hidhet në eax. Dhe është përgjysmuar: siç kujtojmë, në shembullin tonë, 72657771 kalohet në sub_401100; një zhvendosje logjike majtas me 10h (16 në dhjetor) konverton vlerën e regjistrit në 77710000.
Pas kësaj, vlera e regjistrit përmbyset nga instruksioni NOT. Kjo do të thotë se në paraqitje binare regjistër të gjitha zerot janë konvertuar në një, dhe një - në zero. Regjistri pas ekzekutimit të këtij udhëzimi përmban 888EFFFF.
Instruksioni ADD shton (shton, shton, etj.) vlerën që rezulton në vlerën origjinale të argumentit, i cili ende gjendet në regjistrin exx (tani është e qartë pse ishte e nevojshme të shkruhet fillimisht në exx dhe më pas në eax ?). Rezultati ruhet në ecx. Le të kontrollojmë se si do të duket ecx pas kryerjes së këtij operacioni: FAF47770.
Ky rezultat kopjohet nga exx në eax, dhe më pas instruksioni SHR zbatohet në përmbajtjen e exx. Ky operacion është e kundërta e SHL - nëse ky i fundit i zhvendos shifrat në të majtë, atëherë i pari i zhvendos ato në të djathtë. Ashtu si operacioni logjik i zhvendosjes majtas është ekuivalent me shumëzimin me fuqitë e dy, operacioni logjik i zhvendosjes djathtas është i barabartë me të njëjtin pjesëtim. Le të shohim se çfarë vlere do të jetë rezultati i këtij operacioni: 7D7A3BB.
Tani le të bëjmë një dhunë më shumë në përmbajtjen e eax dhe exx: udhëzimi XOR është modulo 2 shtesë ose "OR ekskluzive". Thelbi i këtij operacioni, përafërsisht, është se si rezultat i tij është e barabartë me një(e vërtetë) vetëm nëse operandët e tij janë të paqartë. Për shembull, në rastin e 0 xor 1, rezultati është i vërtetë, ose një. Në rastin e 0 xor 0 ose 1 xor 1 - rezultati do të jetë i rremë, ose zero. Në rastin tonë, si rezultat i ekzekutimit të këtij udhëzimi në lidhje me regjistrat eax (7D7A3BB) dhe exx (FAF47770), vlera FD23D4CB do t'i shkruhet regjistrave eax.

Komanda e mëposhtme LEA ecx, në mënyrë elegante dhe pa mundim shumëzon eax me 9 dhe e shkruan rezultatin në eax. Kjo vlerë më pas kopjohet në edx dhe zhvendoset djathtas me 13 bit: marrim 73213 në edx dhe E6427B23 në ecx. Pastaj - përsëri xorim esx dhe edx, duke shkruar në ecx E6454930. Kopjojeni këtë në eax, zhvendoseni majtas 9 bit: 8A926000, më pas përmbyseni atë për të marrë 756D9FFF. Ne e shtojmë këtë vlerë në regjistrin ECX - kemi 5BB2E92F. Kopjojeni në eax, zhvendoseni djathtas me 17 bit - 2DD9 - dhe xorim me exx. Ne përfundojmë me 5BB2C4F6. Pastaj ... pastaj ... çfarë kemi atje? Çfarë të gjitha?..
Pra, ne e ruajmë këtë vlerë në zonën e memories në offset var_4, ngarkojmë gjendjet e regjistrit nga steka, përsëri marrim vlerën përfundimtare nga memoria dhe në fund nxjerrim gjendjet e mbetura të regjistrit që u ruajtën në fillim nga pirgu. Dilni nga funksioni. Ura! .. Megjithatë, është shumë herët për t'u gëzuar, deri më tani në daljen nga thirrja e parë e funksionit kemi maksimum katër karaktere gjysmë të printueshme, por kemi ende një varg të tërë të papërpunuar, dhe ky ende duhet të të sillen në një formë hyjnore.

Le të kalojmë në më shumë nivel të lartë analiza - nga çmontimi në dekompilues. Le të paraqesim të gjithë funksionin DialogFunc që përmban thirrjet në sub_401100 si pseudokod i ngjashëm me C-në. Në fakt, ky çmontues e quan "pseudokod", në fakt, ky është praktikisht kod C, vetëm i shëmtuar. Ne shikojmë:

Duhet të më shumë kod... Duhet të ndërtojmë një zigurat.

DërgoDlgItemMessageA (hDlg, 1000, 0xDu, 0xAu, (LPARAM) & lParam); SendDlgItemMessageA (hDlg, 1001, 0xDu, 0xAu, (LPARAM) & v15); v5 = sub_401100 ((char) lParam | ((SBYTE1 (lParam) | ((SBYTE2 (lParam) | (SBYTE3 (lParam)<< 8)) << 8)) << 8)); v6 = 0; do { v21 = v5 % 0x24; v7 = v21; v5 /= 0x24u; if (v7 >= 10) v8 = v7 + 55; tjetër v8 = v7 + 48; v21 = v8; ) ndërsa (v6< 4); v22 = 0; v9 = sub_401100(v15 | ((v16 | ((v17 | (v18 << 8)) << 8)) << 8)); v10 = 0; do { v19 = v9 % 0x24; v11 = v19; v9 /= 0x24u; if (v11 >= 10) v12 = v11 + 55; tjetër v12 = v11 + 48; v19 = v12; ) ndërsa (v10< 4); v20 = 0; wsprintfA(&v13, "%s-%s-%s-%s", &lParam, &v15, v21, v19); SendDlgItemMessageA(hDlg, 1002, 0xCu, 0, (LPARAM)&v13);

Kjo tashmë është më e lehtë për t'u lexuar sesa lista e montimit. Megjithatë, jo në të gjitha rastet mund të mbështeteni te dekompiluesi: duhet të jeni gati të shikoni me orë të tëra fillin e logjikës së asemblerit, gjendjet e regjistrave dhe stivën në korrigjues... dhe më pas t'i jepni shpjegime me shkrim Oficerët e FSB ose FBI. Drejt mbrëmjes kam shaka veçanërisht qesharake.
Siç thashë, kjo është më e lehtë për t'u lexuar, por është ende larg të qenit perfekt. Le të analizojmë kodin dhe t'u japim variablave emra më të lexueshëm. Variablave kyç do t'u japim emra të qartë dhe logjikë, ndërsa numëruesit dhe ato të përkohshme do të jenë më të thjeshtë.

E njëjta gjë, e përkthyer vetëm nga kinezisht në hindu.

DërgoDlgItemMessageA (hDlg, 1000, 0xDu, 0xAu, (LPARAM) & string_i_partë); DërgoDlgItemMessageA (hDlg, 1001, 0xDu, 0xAu, (LPARAM) & vargu i dytë i dhënë); vargu_i_dhënë_i_parë i koduar = sub_401100 ((karak) vargu_i_parë i dhënë<< 8)) << 8)) << 8)); i = 0; do { first_result_string[i] = first_string_encoded % 0x24; temp_char = first_result_string[i]; first_string_encoded /= 0x24u; if (temp_char >= 10) karakteri i ardhshëm = temp_karaktori + 55; tjetër_karaku tjetër = temp_char + 48; vargu_rezultati i parë = shkronjat e ardhshme; ) nderkohe une< 4); some_kind_of_data = 0; second_string_encoded = sub_401100(byte1 | ((byte2 | ((byte3 | (byte4 << 8)) << 8)) << 8)); j = 0; do { second_result_string[j] = second_string_encoded % 0x24; temp_char2 = second_result_string[j]; second_string_encoded /= 0x24u; if (temp_char2 >= 10) karakteri i ardhshëm 2 = temp_char2 + 55; tjetër next_char2 = temp_char2 + 48; vargu_rezultati i dytë = shkronja tjetër2; ) ndërsa (j< 4); yet_another_some_kind_of_data = 0; wsprintfA(&buffer, "%s-%s-%s-%s", &first_given_string, &second_given_string, first_result_string, second_result_string); SendDlgItemMessageA(hDlg, 1002, 0xCu, 0, (LPARAM)&buffer);

IDA Pro çmontues- interaktive çmontues i cili përdoret gjerësisht për inxhinierinë e kundërt. Është jashtëzakonisht fleksibël, ka një gjuhë komanduese të integruar dhe mbështet shumë formate skedarësh të ekzekutueshëm për një numër të madh procesorësh dhe sistemesh operative.

Hex-Rays- shumëfunksional i zbukuruar Redaktor Hex (hex-redaktor) dhe më i fuqishmi dekompilues... Mjeti më i famshëm i analizës së shpinës komerciale i zhvilluar nga kompania Hex-Rays... Plugin për IDA Pro.

Njëherë e një kohë, në vitet e largëta të 90-ta, gjithçka filloi me çmontues me mundësinë e redaktimit interaktiv dhe mbështetjes për lloje komplekse të dhënash në formë strukturash. Tani është një mjet shumë më i avancuar. Programi është i zgjerueshëm dhe i zhvilluar SDK për zhvillimin e shtojcave të ndryshme, nga shtimi i mbështetjes për arkitekturat e reja të procesorit deri te automatizimi i procesit të korrigjimit duke përdorur API-në e integruar për gjuhët e skriptimit ( IDC, IDAPython).

Rreth mbështetjes Python vlen të përmendet veçmas, pasi është integruar ngushtë me ndihmën e një shtojce për mjaft kohë IDAPython, dhe aktualisht mbështet pothuajse të gjitha aftësitë e vendasve SDKC ++, me përjashtim vetëm të gjërave shumë specifike.

Tek versioni i pestë IDA Pro kishte në arsenalin e saj gjithçka të nevojshme për dekompilimi automatik, dhe jo vetëm dekompilim, por shumë
dekompilimi cilësor, dekompilimi i një niveli thelbësisht të ri se asnjë tjetër ekzistues
dekompilues.

Kështu lindi ideja për t'u shtuar IDA një tjetër pjesë e vogël (në fakt, një shumë e madhe) kodi që përkthen gjuhën kineze të asamblesë në një listë C të arritshme dhe të kuptueshme.

Ilfak nuk e përfshiu dekompiluesin në shpërndarjen IDA Pro. Kishte disa arsye për këtë. Para së gjithash, shumica e përdoruesve aktualë të IDA-s nuk kanë vërtet nevojë për një dekompilues, nëse e përdorin atë, është thjesht për kuriozitet, e lëshojnë disa herë, pështyjnë dhe kthehen në stilin e tyre të zakonshëm të jetesës - duke analizuar një listë të çmontimit. E dyta është të fitosh bukën e gojës (Ilfak) dhe disi të duhet të mirëmbash kompaninë?!

E gjithë kjo çoi në faktin se dekompilues me emrin ( HexRays), u lëshua si një produkt i veçantë, por - vëmendje ndaj ekranit - duke kërkuar
prania e detyrueshme e IDA, për aq sa HexRays është vetëm një shtojcë... Kështu, një revers që dëshiron të thjeshtojë jetën e tij përmes dekompilimit automatik duhet të marrë si vetë IDA ashtu edhe HexRays. Për më tepër, ky komplet do të blihet nga një audiencë krejtësisht e ndryshme përdoruesi, aspak nga ai që fitoi IMU dhe e nderoi atë si çmontuesin më të mirë ndërveprues. Interaktiv do të thotë të ndërveprosh ngushtë me përdoruesin (në kuptimin e një hakeri). Në të kundërt, çmontuesit e grupeve përpiqen për automatizimin maksimal.
duke e kthyer mbrapsht, duke i privuar përdoruesit nga mundësia për të ndërhyrë në proces dhe për të dhënë udhëzime.
HexRays, ndryshe nga IDA Pro, nuk ka interaktivitet: ajo është e atrofizuar në embrionin e tij. Nuk ka as opsione personalizimi! Dhe aty ku nuk ka interaktivitet, nuk ka hakerë.

Secili nga ekipi] [ka preferencat e veta për sa i përket softuerit dhe shërbimeve për
pentest. Pas disa konsultimeve, doli se zgjedhja është aq e ndryshme sa është e mundur të bëhet
një grup i vërtetë xhentëlmenësh i programeve të provuara. Për këtë dhe vendosi. për të
mos bëni një hodgepodge të kombinuar, ne e kemi ndarë të gjithë listën në tema. Sot do të analizojmë
korrigjuesit dhe çmontuesit janë gjithçka që ju nevojitet për të ndryshuar aplikacionet inxhinierike.

OllyDbg

Nëse keni lexuar ndonjëherë artikuj rreth plasaritjes ose, për shembull, keni parë mësime video nga
kthimi ynë [email i mbrojtur]"Ah, emri "Olka" duhet të jetë i njohur për ju. Kjo
Debuger 32-bit ring-3 me një ndërfaqe të mirëmenduar dhe të dobishme
funksione që lehtësojnë shumë procesin e korrigjimit. V OllyDBG
është i integruar një analizues i veçantë, i cili njeh dhe tregon vizualisht
procedurat, unazat, konstantet dhe vargjet e ngulitura në kod, thirrjet në funksionet API,
parametrat e këtyre funksioneve etj. Për një fillestar (dhe jo vetëm), kjo është pikërisht ajo
e nevojshme! Versioni 1.10 është ende në përdorim dhe versioni beta i degës së dytë është ende në përdorim.
Marsi nuk ka pësuar asnjë ndryshim, por tashmë është e mundur të vlerësohen të shumtat
risitë e korrigjuesit. Puna ka vazhduar për një kohë të gjatë, dhe për këtë arsye zhvilluesi tashmë ka
ka diçka për të treguar (para së gjithash, një motor i ri). Beta vështirë se mund të konsiderohet
si mjeti kryesor për biznes serioz, kështu që unë nxitoj t'ju paralajmëroj:
stabiliteti i motorit të ri është ende një ëndërr, kështu që përdorni "beta"
me rrezikun e vet.

Këtu duhet të them se OllyDbg është bërë korrigjuesi standard i tokës së përdoruesit, i marrë
u miratua nga hakerat dhe ata menjëherë donin ta përmirësonin atë. Ka shume
asambletë jo standarde: disa do të rregullojnë gabimet e Olgës, të tjerët zgjerojnë funksionalitetin,
të tjerët e fshehin atë nga mbrojtësit. Disavantazhi - funksionon "motori" i korrigjuesit
nëpërmjet MS Debugging API, duke vuajtur nga një sërë kufizimesh të qenësishme, duke lënë pas
shumë shenja kokëfortë dhe një objektiv i lehtë për
teknologjitë kundër korrigjimit.

Korrigjuesi i imunitetit

Modaliteti i famshëm i firmës me të njëjtin emër e specializuar në sigurinë dhe
kaloi Olga 1.10 me Python - një gjuhë e interpretuar në të cilën shumë
të lehtë dhe të shpejtë për të shkruar skriptet. Sigurisht, ju mund t'i shkruani ato drejtpërdrejt në Olga, por kjo nuk është
shumë i përshtatshëm, ju duhet të bëni gjithçka me dorë dhe të zgjidhni detyrat tipike (si p.sh
kërkimi i kujtesës), të cilat janë zgjidhur prej kohësh.

V Korrigjuesi i imunitetit përfshin shumë biblioteka të shkruara në Python dhe
mprehur për nevojat e hakerëve. Bibliotekat thirren nga programet Python,
ndër të cilat është searchcrypt.py - një mjet i shkëlqyer identifikimi
algoritmet e mëposhtme kriptografike: AES, BLOWFISH, CAMELLIA, CAST, MD5, RC2,
RC5, RIPEMD160, SHA1, SHA256, SHA512.

Korrigjuesi i imunitetit përdoret nga shumë profesionistë të sigurisë,
duke paraqitur prova të provës së konceptit të shkruara në Python dhe të synuara
për të punuar ekskluzivisht në mjedisin e këtij korrigjuesi. Dhe megjithëse një haker me kokë
do të kuptojë algoritmin e shfrytëzimit pa korrigjuesin e imunitetit duke portuar
shfrytëzohet në çdo gjuhë tjetër, herët a vonë korrigjuesi përfundon në
kompjuteri, duke u bërë shpesh mjeti kryesor që zëvendëson Olgën.

YDbg

Një mod popullor dhe shumë i fuqishëm, i bazuar në Olga 1.10 dhe i mbledhur në të
shpërndani një numër të madh shtojcash, skriptesh, si dhe një mori të tjerash
mjete të dobishme. Ndryshe nga Immunity Debugger, i cili është i fokusuar në
specialistë të sigurisë, YDbg shkruar nga hakerat dhe për hakerat që thyejnë
mbrojtja me mbrojtës (ata i rezistojnë aktivisht kësaj gjendjeje dhe
të mbushura me teknika kundër korrigjimit që njohin praninë e Olgës nga kryesore
dritarja me emrin e saj dhe artikujt e menysë). Prandaj, gjëja e parë që ju bie në sy kur
nisja e YDbg (skedari i ekzekutueshëm i të cilit është riemërtuar nga OLLYDBG.EXE në SND.exe),
këto janë artikuj të menusë "të përdredhur". Në veçanti, "Memory" u bë "M3m0ry", "SEH
zinxhir "te" zinxhiri S3H "," Pikat e ndërprerjes "në" Br3akp01nts ", etj. Me një fjalë, gjithçka
Pikat "haker" janë ndryshuar - përpiquni t'i gjeni (sigurisht, në versionet e reja
Zbulimi YDbg me siguri do të shfaqet, por deri më tani është fshehur me sukses
grumbuj mbrojtjesh që përvëlojnë Olgën). Shpërndarja YDbg përfshin 36 të njohura
shtojcat (dhe nuk kanë më nevojë të fshihen në ueb duke i kërkuar ato). Mes tyre, ai
një diamant i vërtetë - IDA Sigs, emri i të cilit flet vetë. Po Po!
Ky është një plugin që mbështet nënshkrimet IDA dhe i shfaq ato si komente
funksionet e thirrshme në Olga ose në YDbg. Një shtesë tjetër e dobishme është red-hawk
("kifteri i kuq") është një kuti veglash që ju lejon
në veçanti, me një lëvizje të miut, vendosni pikat e ndërprerjes në funksionet e dëshiruara
(për shembull, në Visual Basic është diçka si __vbaStrCmp ose __vbaStrCopy,
përdoret për të krahasuar dhe kopjuar vargjet, përkatësisht). Fillestare
hakerat thjesht klithin nga kenaqesia, pasi skifteri i kuq eshte ne te vertete
një tutorial mbi hakimin, dhe kështu përpiquni të merrni me mend se çfarë të bëni! \ Drejtoria SCRIPT
përmban 637 skripta, të krijuar kryesisht për të hequr të ndryshme
mbrojtës / paketues të skedarëve të ekzekutueshëm dhe automatizimi i të gjitha detyrave rutinë.

SoftICE

Një korrigjues i mirënjohur (edhe për ata që as nuk iu afruan plasaritjes)
për Windows, që funksionon në nivelin e kernelit. Ndryshe nga një korrigjues aplikacioni si
për shembull OllyDbg, SoftICE në gjendje të pezullojë të gjitha operacionet në Windows, të cilat
shumë i rëndësishëm për korrigjimin e shoferit. Punon duke anashkaluar API-në e MS Debugging, e cila
megjithatë, ndërlikon ndjeshëm anti-debugging, duke pasur parasysh se për zhvilluesit e mbrojtjes
Soft-ice është armiku numër një, pothuajse të gjithë mbrojtësit e njohin lehtësisht
prania në sistem. Prandaj, nuk mund të bëni pa shtesa të veçanta.
(që do ta përmendim më tej). SoftICE fillimisht u zhvillua nga NuMega,
që e përfshinte në paketën e zhvillimit të shpejtë
drejtuesit me performancë të lartë të quajtur Driver Studio, i cili
u ble më pas nga Compuware. A ju kujtohet sa manuale të ndryshme
ishte në lidhje me instalimin e Soft-Ice nën Windows XP? Mjerisht, duke filluar me fishkëllimë,
korrigjuesi nuk funksionon. Zhvilluesit ndaluan zhvillimin në prill 2006.
Nuk mund të gjendet në faqen zyrtare dhe është i disponueshëm vetëm në torrent.

Debugger i Microsoft

Është pjesë e WDK (Windows Driver Kit - dikur Kompleti i Zhvillimit të Shoferit ose
DDK), si dhe mjetet e korrigjimit. Të dyja janë falas, por WDK është shumë
më i madh dhe kërkon regjistrim paraprak për të marrë Windows
ID e drejtpërdrejtë, ndërsa Mjetet e korrigjimit shpërndahen pa regjistrim së bashku me SDK-në,
i cili përfshin dokumentacion, skedarë kokë, biblioteka dhe disa
shembuj se si të shkruani shtojca.

Debugger i Microsoft mund të funksionojë si në nivelin e aplikacionit (ring-3) ashtu edhe në
niveli i kernelit. Deri në XP, korrigjimi bërthamor kërkonte të paktën dy makina,
e lidhur me një kordon COM, por tani mjafton një.

Ai vjen në dy botime: windbg.exe - një ndërfaqe grafike dhe cdb.exe -
ndërfaqja e linjës së komandës. Të dyja janë vetëm mbështjellës të hollë përreth
dbgeng.dll, në të cilin, në fakt, zbatohet "motori" kryesor i korrigjimit,
protokolli i dokumentuar i shkëmbimit. Prandaj, për të mos shkruar më
gjurmues nga e para, dbgeng.dll mund të përdoret si "themeli" kur
shkrimi i paketuesve universalë të skedarëve të ekzekutueshëm.

Korrigjuesi i kernelit Syser

Ekzistojnë vetëm tre korrigjues të mirë të kernelit: SoftICE, Syser dhe Microsoft Kernel
Debugger, por SoftICE nuk funksionon në Vista dhe Server 2008 dhe Microsoft Kernel
Debugger nuk është alternativa më e mirë për qëllime hakerimi. Mbetet Syser, të cilat
hakerat kanë adoptuar dhe janë duke e përdorur në mënyrë shumë aktive. Është shkruar nga dy
rikthyesit aventureske kineze Wu YanFeng dhe Chen JunHao. Në thelb Syser
- një korrigjues i nivelit të kernelit me një ndërfaqe grafike të dritares. Ju lejon të korrigjoni gabimet
si aplikacionet ashtu edhe drejtuesit. Kombinon IDA Pro, Softice dhe
Ollydbg. Mbështet theksimin e listimit të çmontimit, ngarkimin dinamik dhe
shkarkimi, të gjitha komandat e korrigjimit të SoftICE, punë e plotë me unicode dhe
sistemet multiprocesorike. Shumë gjëra të vogla janë përpunuar: për shembull, në mënyrë korrekte
clipboard funksionon, duke ju lejuar të kopjoni të dhënat nga niveli Ring 3 në nivel
Zile 0. Shumë nga operacionet mund të automatizohen duke përdorur skriptet. E nevojshme
Syser është pasardhësi i SoftICE që thuhet se është larguar
module të tëra. Ka shumë avantazhe, si dhe shumë disavantazhe, prandaj
në fakt, ai duhet të përdoret në lidhje me korrigjuesin e kernelit të Microsoft.

Gdb

Korrigjuesi GNU- korrigjuesi kryesor për UNIX, i fokusuar në një krejtësisht tjetër
lloji i të menduarit se të gjithë korrigjuesit e mësipërm. Nuk është vetëm interaktive
një debugger, përkundrazi është një makinë e programueshme, fleksibël dhe e fuqishme
ndërfaqe. Është kënaqësi të korrigjosh programe "të ndershme" me të,
por për sa i përket anti-debugging, gjërat janë të këqija. GDB as që përpiqet të rezistojë dhe
punon përmes bibliotekës ptrace (e cila në fakt nuk është bibliotekë, por
thirrje sistemi). GDB është thelbësisht e paaftë për të korrigjuar programet që nuk janë
duan të korrigjohen. Dhe programe të tilla kanë filluar të shfaqen pak nga pak.

Natyrisht, përveç GDB, ka korrigjues të tjerë për niks, për shembull,
Lin-Ice, por meqenëse teknologjitë kundër korrigjimit të UNIX sapo kanë filluar
zhvillimi, në shumicën e rasteve GDB do të bëjë mirë.

IDA Pro

IDA ProËshtë njëkohësisht një çmontues interaktiv dhe një korrigjues. Ajo
ju lejon të ktheni kodin binar të programit në tekst asembler që mund
përdoret për të analizuar funksionimin e programit. Vërtetë, ia vlen të thuhet
korrigjuesi i integruar ring-3 është mjaft primitiv. Ajo funksionon përmes MS Debugging
API (në NT) dhe përmes bibliotekës ptrace (në UNIX), duke e bërë atë pre të lehtë
mekanizmat mbrojtës. Por IDA Pro është një çmontues interaktiv me më shumë se
një histori dhjetëvjeçare, versioni i parë i së cilës u publikua më 6 maj 1991. Yuri
Charon, së bashku me Ilfakun, filluan të punojnë në një drejtim ku askush tjetër nuk e ka.
paratë e investuara. Para kësaj, çmontuesit ishin shkruar ekskluzivisht në pionier
entuziazmi paralelisht me mësimin e montimit dhe i braktisur shpejt.
A është çudi që djemtë arritën të zgjidhin pothuajse të gjitha gjërat themelore
problemet e çmontimit që të tjerët thjesht nuk donin të punonin
zhvilluesit, duke e ditur se nuk do të ketë kthim të shpejtë dhe projekti do të marrë dekada
pune e veshtire. Deri në versionin e pestë, IDA Pro kishte gjithçka që ju nevojitet në arsenalin e saj
për dekompilim automatik, dhe jo vetëm dekompilim, por shumë
dekompilim me cilësi të lartë. Për momentin, lëshimi i fundit është 5.5 nga 12 qershori.
Përdoruesit që janë të dashuruar me produktin gjenerojnë shumë shtojca të dobishme, duke përfshirë
mbështetja e gjuhëve të ndryshme skriptimi për skriptim përveç
IDC e integruar. Për shembull,
IdaRUB
shton mbështetjen e Ruby dhe
IDAPython - Python.
Këtu duhet të them që duke filluar nga versioni 5.4 IDAPython vjen i parainstaluar
Shpërndarjet IDA.

Hex-Rays

Pastaj zhvilluesit menduan për këtë dhe vendosën që sapo të mund ta merrnin
kodi njerëzor në asembler, atëherë është mirë të shtoni një veçori tjetër që përkthehet
Gjuha kineze e asamblesë në një listë të arritshme dhe të kuptueshme në gjuhën C.
Filloi të vlonte puna intensive, në rrjedhën e së cilës gjithnjë e më shumë të reja
grackat, anashkalimi i të cilave kërkonte kohë, përpjekje dhe aktivitet të trurit. V
si rezultat, lindi, duke kërkuar domosdoshmërisht të instaluar në një kompjuter
IMU. Një binar futet në dekompilues, pas së cilës tregohen një numër parametrash
të cilat Hex-Rays nxjerr kodin burim në C të pastër - kryesisht i kuptueshëm dhe
të arritshme. Vërtetë, nuk ka nevojë të nxitoni për ta përpiluar përsëri në binar, sepse
pasi në shumicën e rasteve në kohën e kompilimit do të shihni sa më shumë gabime
nuk e kanë parë ende. Një nga arsyet është mungesa e mbështetjes në burimet Hex-Rays.

W32DASM

Një çmontues i shkëlqyer, i lehtë për t'u përdorur dhe i kuptueshëm. Vendosur veçori në terma të
profesionale është mjaft e kufizuar, dhe në përgjithësi është koha për ta referuar atë te mjetet nga
shekullin e kaluar, por jo... W32DASM prodhon një listë të mirë, dhe për fillestarët është
një mundësi e shkëlqyer për të kuptuar dhe kuptuar se çfarë është. Përveç kësaj, ishte mbi të
mbështetuni në manuale të shumta për fillestarët, duke përfshirë manualet tona për
fillestar "Quacking është e thjeshtë" ().

DeDe

PEiD

Çdo produkt komercial duhet të jetë mjaft i mbrojtur mirë.
Zhvilluesit përdorin qëllimisht të gjitha llojet e paketuesve dhe të ashtuquajturat
mbrojtës që përdorin në maksimum lloje të ndryshme agjentësh kundër korrigjimit
programe kundër hakimit. Ju mund t'i anashkaloni ato, por për këtë ju duhet të qartë
imagjinoni se çfarë është përdorur për të mbrojtur programin, për cilin plugin
përdorni korrigjuesin - dhe nga ky "rrotullim". Përcaktoni me hijeshi emrin dhe
version i paketuesit i aftë për një dobi të vogël PEiD... Në fakt, për këtë ajo
të nevojshme.

PE Explorer

Një program për shikimin dhe redaktimin e skedarëve PE - duke filluar me EXE, DLL dhe
Kontrollet ActiveX dhe duke përfunduar me mbrojtëset e ekranit SCR (Screensavers), aplikacionet
panelet e kontrollit CPL, SYS dhe binarët për platformën Windows Mobile. Në fakt,
ky nuk është një mjet i vetëm, por një grup i tërë mjetesh për të parë nga brenda, si
një program ose bibliotekë po funksionon. Përfshin një shikues të kokës,
eksportimi i thirrjeve të funksionit API, redaktuesi i burimeve, çmontimi.

IDA Pro është një program unik që ka marrë njohje në të gjithë botën, dhe tani në Rusisht, përfshirëse. Nëse po flasim për çmontimin, atëherë ky mjet nuk ka konkurrentë. Mjafton të shkarkoni Aidi Pro në një skedar dhe ta instaloni për të filluar përdorimin e plotë. Duhet të theksohet se produkti ofrohet në Asamblenë Standarde (mbështet më shumë se 20 familje të njohura të procesorëve) dhe Advanced (projektuar për 50 ose më shumë). Në varësi të qëllimit të drejtpërdrejtë, ia vlen të zgjidhni parametrat e duhur. Gjithashtu, një nga versionet mund të zgjerohet ose thjeshtohet, nëse është e nevojshme.

Për të shkarkuar IDAPro falas, mjafton të klikoni në lidhje. Instaluesi është multiplatformë dhe mbështet grupe komandash 32 dhe 64 bit. Versioni rus për Windows është instaluar si parazgjedhje, mund ta ndryshoni gjuhën në menunë e cilësimeve.

Cila është veçoria e programit? Shërbimi është një çmontues profesional që tashmë përmban shumicën e moduleve dhe funksioneve. Kjo lehtëson shumë punën, lejon përpunimin më të shpejtë të një sasie të madhe të dhënash. Ekziston një kërkim i përshtatshëm në mjedisin e punës. Me ndihmën e tij, ju mund të gjeni dhe zëvendësoni shpejt pjesën e dëshiruar të kodit. Produkti është i instaluar në një kompjuter pa softuer shtesë. Pas instalimit përfundimtar, kërkohet një rindezje e sistemit që cilësimet e reja të hyjnë në fuqi dhe programi të jetë i dukshëm në listën e programeve.

Ju gjithashtu mund të vendosni një lidhje (për shembull, të hapni skedarë të këtij formati përmes këtij programi në Windows) Është më e përshtatshme që thjesht të shkarkoni IDAPro dhe të kryeni procesin e çmontimit sesa të përpiloni të dhënat përmes disa aplikacioneve. Të gjitha cilësimet e personalizuara ruhen. Mjedisi i prodhimit përmban tashmë shabllone që mund t'i modifikoni, fshini ose krijoni të reja. Kjo përmirëson komoditetin e përgjithshëm të përdorimit të produktit. Veprimet e fundit mund të zhbëhen duke përdorur navigimin ose shkurtoren standarde të tastierës.

Përparësitë kryesore të programit përfshijnë:

  • shpërndarje falas;
  • versione me porosi dhe profesionale;
  • përmbledhje e shpejtë e të dhënave;
  • kërkoni për një pjesë të kodit dhe nënvizoni;
  • nuk e ngarkon sistemin gjatë funksionimit.

Artikujt kryesorë të lidhur