←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[Orpheu] Sygnatury funkcji

Zablokowany

Dwdov - zdjęcie Dwdov 22.07.2011

Orpheu nie jest takie trudne w sumie, ale mam jedno pytanie bo nie mogę sprawdzić. Chcę się dowiedzieć czy moje rozumowanie jest poprawne :P
Stworzyłem sygnature bitową dla funkcji od granatów CanDeploy:
w IDA wygląda tak:
55 89 E5 8B 45 ? 8B 90 ? ? ? ? 8B 80 ? ? ? ? C1 E2 02 05 F4 05 ? ?
I w IDA znajduje funkcje:
CanDeploy_10CFlashbang
CanDeploy_10CHEGrenade
CanDeploy_10CSmokeGrenade
Teraz od razu mówię nie - sygnatura nie jest za krótka. Wypatrzyłem że każda z tych funkcji należy do innej klasy - dobra w takim razie są to funkcje wirtualne.
CFlashBang
CHEGrenade
CSmokeGrenade
No to dobra trzeba przerobić sygnature pod orpheu
[0x55,0x89,0xE5,0x8B,0x45,"*",0x8B,0x90,"*","*","*","*",0x8B,0x80,"*","*","*","*",,0xC1,0xE2,0x02,0x05,0xF4,0x05,"*","*"]
I teraz wystarczy wypełnić sygnature w tym wypadku dla smoke
{
    "name" : "CanDeploy",
    "class" : "CSmokeGrenade",
    "library" : "mod",
    "arguments"  :
    [
          {
   			"type" : "int"
          }
   ],
   "return" :
   {
                "type" : "bool"
   },
  "indexes":
    [
        {
            "os" : "windows",
            "mod" : "cstrike",
            "value" : [0x55,0x89,0xE5,0x8B,0x45,"*",0x8B,0x90,"*","*","*","*",0x8B,0x80,"*","*","*","*",,0xC1,0xE2,0x02,0x05,0xF4,0x05,"*","*"]
        },
	{
            "os" : "linux",
            "mod" : "cstrike",
              "value" : "CanDeploy__10CSmokeGrenade"
	}
    ]
}

Dobrze to zrobiłem? Jak nie to gdzie błędy - chwilowo nie mogę przetestować czy działa :P


Odpowiedz
Zablokowany