Kysymys:
Kutsu muuttuvaan osoitteeseen
Cream Cracker
2013-06-25 20:18:56 UTC
view on stackexchange narkive permalink

Olen törmännyt seuraaviin ohjeisiin:

  mov ecx, [ebp + var_4] imul ecx, 4call dword_1423d4 [ecx]  

Voiko joku selittää minulle, mitä se mahdollisesti tarkoittaa, tai ohjaa minut oikeaan suuntaan? Miksi muuttujalle soitetaan?

Puhelut toimivat viitteenä ulos joukosta osoittimia?
@PSS mitä se tarkoittaa?
Kaksi vastused:
Jason Geffner
2013-06-25 21:50:15 UTC
view on stackexchange narkive permalink

dword_1423d4 on 32-bittisten funktiosoittimien globaalin taulukon osoitin.

var_4 on tämän taulukon hakemisto. >

call -komento kutsuu funktiota hakemistoon var_4 dword_1423d4 -funktiotaulukossa.

se on yleinen esitys "switch ()" - käskystä, kun arvot ovat lineaarisia. Var_4 on kytkimen () parametri, dword_1423d4 on tapauskäsittelijöiden taulukko.
@peterferrie - Kokemukseni mukaan `switch`-lauseet yleensä kootaan käyttämään` jmp`, ei `call`, mutta oletan, että kääntäjä saattaa valita jälkimmäisen joissakin olosuhteissa.
Olen samaa mieltä Jasonin kanssa, on epätodennäköistä (vaikkakaan ei taata), että se on kytkinlausunto puhelun ja jmp: n takia. Mahdollisesti mukautettu toimintojen välittäjä tai jotain.
Hyväksy myös @JasonGeffner. En ole koskaan nähnyt x86-lauseen `` kytkin`-käskyä (tai mitään muuta kuin todellista funktiokutsua) x86: ssa, joka on toteutettu `kutsu`-käskyllä.
Muuten @JasonGeffner, luulin, että [nimi kuulosti tutulta] (http://www.blackhat.com/html/bh-us-11/training/bh-us-11-training_sl-advmal.html) BlackHatilta pari vuotta takaisin.
David Hoelzer
2013-07-14 03:01:37 UTC
view on stackexchange narkive permalink

Heti mieleen tulee jonkinlainen virtualisointikerros, joka käyttää IAT: ta tai IVT: tä. Olen ehdottomasti samaa mieltä edellisen vastauksen kanssa, että tämä on kutsu funktiovektorille joukossa funktion osoittimia. Olen myös samaa mieltä siitä, että se ei näytä olevan kytkinlausunto. Se vie minut alas keskeytysvektoritaulukon / osoitetaulukon.

Voisitko lisätä lisätietoja vastaukseesi? Kuinka se eroaa yllä olevasta vastauksesta? Tällä hetkellä se lukee kuin kunnia Jasonin vastaukselle. Jos olet tarkoittanut sitä, voit näyttää suostumuksesi toiseen vastaukseen napsauttamalla sen vieressä olevaa äänestyspainiketta. Erillisen vastauksen lähettämistä ei tarvita.
Minun on vastannut viittausta keskeytysvektoriin tai osoitetaulukkoon.


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...