2024-05-06 23:30:27 +08:00
|
|
|
|
2024-02-07 20:59:24 +08:00
|
|
|
|
|
|
|
class TinkerBell:public ENGINE{
|
|
|
|
public:
|
|
|
|
TinkerBell(){
|
|
|
|
|
|
|
|
check_by=CHECK_BY::CUSTOM;
|
|
|
|
is_engine_certain=false;
|
|
|
|
check_by_target=[](){
|
|
|
|
wchar_t arcdatpattern[] = L"Arc0%d.dat";
|
|
|
|
wchar_t arcdat[20];
|
|
|
|
bool iswendybell = false;
|
|
|
|
for (int i = 0; i < 10; i++) {
|
|
|
|
wsprintf(arcdat, arcdatpattern, i);
|
|
|
|
if (Util::CheckFile(arcdat)) {
|
|
|
|
iswendybell = true; break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (wcsstr(processName_lower, L"c,system"))||iswendybell || Util::SearchResourceString(L"TinkerBell");
|
|
|
|
};
|
|
|
|
};
|
|
|
|
bool attach_function();
|
|
|
|
};
|
|
|
|
|
|
|
|
class TinkerBellold:public ENGINE{
|
|
|
|
public:
|
|
|
|
TinkerBellold(){
|
|
|
|
|
|
|
|
check_by=CHECK_BY::CUSTOM;
|
|
|
|
is_engine_certain=false;
|
|
|
|
check_by_target=[](){
|
|
|
|
wchar_t arcdatpattern[] = L"arc%c.dat";
|
|
|
|
wchar_t arcdat[20];
|
|
|
|
bool iswendybell = false;
|
|
|
|
for (int i = 'a'; i <='z'; i++) {
|
|
|
|
wsprintf(arcdat, arcdatpattern, i);
|
|
|
|
if (Util::CheckFile(arcdat)) {
|
|
|
|
iswendybell = true; break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iswendybell &&Util::CheckFile(L"head.dat");
|
|
|
|
};
|
|
|
|
};
|
|
|
|
bool attach_function();
|
|
|
|
};
|