Vra

Ok, sê dat my aansoek afgee (x86) instruksies in die geheue, maak die bladsy uitvoerbare, ens Is daar enige manier om te verander die metode stomp van 'n VN-JITted metode om te verwys na my uitgestraal instruksie stroom?

Bv:.

As ek het 'n x86 instruksie stroom in die geheue geskep, wat iets arbitrêr nie. Nou, meer dink dat ek 'n metode 'int Target (). Ek het dit nog nie genoem, so dit is nie saamgestel. Is daar enige manier om:

  1. Kry die wyser na stomp Target se
  2. Maak dit wys om my uitgestraal instruksie stroom.

Ek besef dat feitlik elke enkele sekuriteit funksie van Net is ontwerp om voorkom kaping soos hierdie. Maar is dit moontlik deur, sê, die aanbieding van API?

Was dit nuttig?

Oplossing

Ja, jy kan doen!

Hook getJit metode van mscorjit. En jy sal gevra word elke keer anymethod vereis Jitting. jy kan slaag wat jy wil. Sommige net beskermers werk soos volg.

Ander wenke

Dit is moontlik via die Profilering API. Ek het nog nooit gebruik nie, maar dit word gebruik vir 'n soortgelyke doel in TypeMock.

Edit:. Ek dink daar was 'n mooi plaas op die MSDN blogs, gaan jag vir dit

Edit 2: Doh, eerste getref !

As jy sê dit is nie maklik nie en dit kan nie eens moontlik wees. As ek reg onthou sal die kode die adres van die JIT samesteller vir 'n metode sluit, het dit nie saamgestel. So wanneer jy probeer om hierdie metode te roep, sal die JIT samesteller sy werk te doen en plaas die adres van die nuut saamgestelde metode. As jy hierdie adres kan verander, kan jy in staat wees om 'n oproep om jou eie kode te voeg. Hoe sou jy die volgende ongemerk doen is buite my. Ek hoop die CLR sal hierdie soort knoeiery op te spoor.

Ek dink nie die Profilering API sal jou help om in hierdie geval (soos voorgestel deur Leppie), as jy nie probeer om MSIL verander. As jy dink anders hierdie artikel van gebruik kan word as dit beskryf wat jy moet doen om te implementeer wat TypeMock doen.

Benewens die feit dat in staat om ICorProfiler gebruik en jou metode herskryf voordat dit gemeenskaplike navorsing spanne, kan jy gebruik ICorDebug (MDBG het daarin geslaag koppel). Stel 'n breekpunt toe die breekpunt treffers stel die volgende verklaring aan jou onderskepping kode. Al hierdie proses kan gedoen word vanaf kode maar is regtig indringende en jy sal 'n "watcher" proses nodig om hierdie te koördineer.

Nog 'n ding die moeite werd om te kyk na die PostSharp projek wat jy toegang en uitgang metodes gee as jy eienskappe toe te pas .

Ek wil nie probeer gemors direk met die geheue en ek is nie seker dit is selfs moontlik plaas jy kan die profiler API te gebruik - daar is 'n paar voorbeelde wat daar is, maar geen werklike dokumentasie. Het jy 'n blik op MSDN tydskrifartikel - Herskryf MSIL Kode op die vlieg met die NET raamwerk Profilering API

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top