Kysymys:
käänteinen suunnittelumenetelmä
Othman
2016-05-17 21:31:50 UTC
view on stackexchange narkive permalink

Olen uusi käänteissuunnittelija ja käyn opensecurity.info -sivuston tarjoamaa online-kurssia.
Kirjoittaja tarjoaa menetelmän käänteisrakentamiseen. Hän suosittelee etsimään kiinnostavan toiminnon ja koodaamaan sen pseudokoodilla.
Käytetystä sanamuodosta tuntuu siltä, ​​että minun pitäisi kääntää koko toiminto alusta loppuun.
Onko tämä todella suositeltava käytäntö?
Jos kysymykseni ei ole riittävän selkeä, tässä hypoteettinen tapaus: Oletetaan, että haluan ymmärtää tiedonsiirtoprotokollaa, jota käytetään tietojen vaihtamiseen haittaohjelmien välillä ja komento- ja ohjauspalvelin. Oletetaan, että löysin kutsuvan puhelun ja tämä puhelu on keskellä tuntematonta toimintoa.
Pitäisikö minun todella kääntää tämä tuntematon toiminto alusta vai pitäisikö minun keskittyä toiminnon sisällä olevaan koodin alueeseen, joka kutsuu "recv" ja mene sieltä?

Kaksi vastused:
joxeankoret
2016-05-18 19:20:55 UTC
view on stackexchange narkive permalink

Pitäisikö minun todella kääntää tämä tuntematon toiminto alusta alkaen

Vastuuvapauslauseke : Tämä on vain mielestäni. Vastaus: ei , älä tee sitä, ellet todellakaan tarvitse tehdä sitä. Yksi ensimmäisistä asioista, jotka sanon aina opiskelijoilleni, kun opetan käänteistä tekniikkaa, on itse asiassa se, että: älä koskaan yritä suunnitella toimintoa rivi riviltä, ​​ellet todellakaan tarvitse tehdä niin (ja kokemukseni mukaan suurin osa ajasta ei tarvitse tehdä niin).

Suositteluni on hieman erilainen:

  • Etsi "artefakteja" kuin voi antaa sinulle abstraktin kuvan toiminnon toiminnasta: kutsutut / viitatut funktioiden nimet (eli sovellusliittymät), vakiot jne. ...
  • Kun sinulla on abstrakti käsitys toiminnon toiminnasta, määritä, tarvitsetko siitä lisätietoja.
  • Jos näin on, yritä määrittää peruslohkojen ryhmittely mutta analysoimatta rivi riviltä, ​​mitä joukko peruslohkoja tekee, yrittäen keskittyä siihen, mitä et ymmärrä tai mihin sinun on vastattava.
  • Jos tarvitset edelleen lisätietoja tai jotain on edelleen epäselvää, tee se peruslohko per peruslohko noudattaen kulkua pisteestä, joka ei ole selkeä, tai siitä kohdasta, josta alat huolehtia.
  • Jos , silti, et n Jos tarvitset lisätietoja tai se on edelleen epäselvää, tee se ohjeet ohjeiden avulla yrittäessäsi keskittyä erityisesti siihen, mitä et ymmärrä tai mihin sinun on vastattava, ja vain jos et edelleenkään pysty vastaamaan kysymyksiisi, turvautua koko toiminnon kääntämiseen rivi kerrallaan linja.

Yritetään opettaa ohjeella tai peruuttaa koko toiminto, kun meidän ei todellakaan tarvitse tehdä sitä, on helpompi eksyä / hämmentyä, koska keskitymme siihen, mitä jokin hämärä käsky tekee tai mitkä liput se muuttuu keskittymällä vastaamaan todellisiin kysymyksiin. Se riippuu kuitenkin suurelta osin siitä, miksi suunnittelet sitä asiaa. Yritätkö matkia / kopioida / laajentaa algoritmia (eli salauksen purkualgoritmia) tai palautatko binäärikoodin lähdekoodin? Sitten, kyllä, sinun on mentävä opetukseen ohjeiden mukaan. Suunnitteletko ohjelmiston / toiminnon suunnittelua sen määrittämiseksi, mitä se tekee? Yleensä ei, sinun ei tarvitse käydä opetusta ohjeiden mukaan.

2 senttiäni.

Ei ole olemassa "metodologiaa", on vain kuvitteellisia rakenteita, jotka satunnaiset ihmiset ovat kirjoittaneet. Jos ohjelmistosuunnittelumenetelmiä olisi, sovellat vain sitä päinvastoin: D On kuitenkin hyviä käytäntöjä, ja Joxean kuvailee niitä.
Chris Tsiakoulas
2016-05-18 18:35:29 UTC
view on stackexchange narkive permalink

Suosittelen, että tarkastelet myös loput koodia. Jotain löytäminen erityisistä voi olla läpimurto, mutta yksi koodirivi - varsinkin kokoonpanossa - ei voi tehdä paljon yksin. Katso antamaasi esimerkkiä. Löysit, kuinka haittaohjelmasi kommunikoi. Onko se tarpeeksi? Luultavasti ei. Mikä on tämän viestinnän luonne? Onko se käänteinen kuori? Käytetäänkö sitä tiedostojen siirtämiseen? On monia eri kysymyksiä, joihin on vastattava, ja - luota minuun - olet onnekas, jos löydät ne kaikki samasta koodin kohdasta. Katso aina koodi mielenkiintoisen alueen ympärillä. Saatat löytää toimintoja, jotka kutsuvat muita toimintoja, jotka tekevät mielenkiintoisia asioita viestintäkanavan avulla. Yksi asia tuo toisen, ja päivän päätteeksi se tuo sinulle haittaohjelman täydellisen rakenteen ja toiminnallisuuden.

P.S. Käytä aina taittopisteitä, kun siirryt toiminnosta toiseen.

Hyvää metsästystä!



Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...