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_10CSmokeGrenadeTeraz 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 CSmokeGrenadeNo 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