i looked into the code and I think the problem is here:
QUOTE said:
int CheckFakeSign()
{
// We are expecting an error here, but depending on the error it will mean
// that it is valid for fakesign. If we get -2011 it is definately not patched with fakesign.
gprintf("CheckFakeSign::ES_AddTicket = ");
int ret = ES_AddTicket((signed_blob*)ticket_dat, ticket_dat_size, (signed_blob*)certs_sys, sizeof(certs_sys), 0, 0);
gprintf("%d\n", ret);
if (ret > -1) ES_AddTitleCancel();
if (ret > -1 || ret == -1028) return 1;
return 0;
}
you are calling ES_AddTicket then, in case of success, calling ES_AddTitleCancel
This has NOTHING in common, one is for installing the
ticket, the other is for cancelling the
title installation, that is generally started by ES_AddTitleStart, which, in this case, never happened (if the code was cleaner and you checked the return of the ES_AddTitleCancel function, you will probably notice it returns an error)
Once installed, you need to delete the ticket using ES_DeleteTicket (and problably some other functions to get the number of views)
Anyway, this method of checking if the signature bug is there still is quite dirty imo; it's ok to mod an open-source program but it should never be done lightly.