Kysymys:
Kuinka kääntää Hex-Rays-dekooderin luoma koodi?
user1898
2013-04-30 17:50:55 UTC
view on stackexchange narkive permalink

Tarvitsen apua IDA Prolla luotavan Pseudo-C-koodin ja Hex-Rays decompiler -laajennuksen kokoamisessa. Se näyttää virheen tällä rivillä:

  int (__thiscall * off_401F14) (void *, char); // heikko  

Virhe:

  -virhe C2143: syntaksivirhe: puuttuu ')' ennen '*'  

En näe virhettä tällä rivillä. Mikä vikaa?

Missä kääntäjässä (ja versiossa) yrität tätä? Muokkaa kysymystäsi. Tämä näyttää myös aiheen ulkopuolelta, koska se koskee eteenpäin suuntautuvaa suunnittelua - ja kyllä, ymmärrän, että käytettyä työkalua käytetään pääasiassa RCE: ssä.
@0xC0000022L Olen samaa mieltä siitä, että kysymyksestä puuttuu elintärkeää tietoa. Pidän kuitenkin kysymystä sivustosta. Kääntäjät ovat osa RE-prosessia, ja tuotoksen kokoaminen on ehdottoman tärkeää RE: lle.
se ei ratkaise ongelmaa, puuttuvan puhelutyypin mukaan, mutta sinun on sisällytettävä tiedostoon "defs.h" (löytyy hexrays SDK: sta), se sisältää useita heksareiden käyttämiä makroja.
o, ja mikä on väärin, on se, että '__thiscall' ei ilmeisesti ole määritetty kääntäjällesi, sinun pitäisi '#define __thiscall' se tyhjäksi päästäksesi eroon tästä virheestä
üks vastaus:
Jason Geffner
2013-04-30 18:29:34 UTC
view on stackexchange narkive permalink

Seuraava koodi kääntyy hienosti minulle .cpp -tiedostona Visual C ++: ssa:

  int (__thiscall * off_401F14) (void *, char); // heikintint main (int argc, wchar_t * argv []) {return 0;}  

Ehkä asetit funktion prototyypin vahingossa funktion sisään tai käännit sen nimellä C (tiedostotunniste .c ) -tiedosto?

olet ilmeisesti tehnyt oletuksia kääntäjästä, joten sinun tulisi lisätä mihin kääntäjään (ja versioon) tämä * kääntää hienosti *.
En tehnyt oletuksia hänen kääntäjistään.
se on todennäköisesti, olen samaa mieltä. Mutta mikä versio? Lisäksi riippuu ("__thiscall"), heitätkö sen ".cpp" vai ".c" tiedostoon;) ... et mainitse kumpaakaan etkä myöskään OP. Mielestäni * kysymys * on erittäin huonosti muotoiltu.
Oikeastaan ​​nostat erittäin hyvän asian. Näyttää siltä, ​​että se voi johtua siitä, että OP käytti .c-tiedostoa .cpp-tiedoston sijaan.


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