えー。素直に二重ループじゃだめなのか?
int indexOf(byte[] A, byte[] B) {
for (int i = 0; i <= A.Length - B.Length; ++i) {
int j;
for (j = 0; j < B.Length; ++j)
if (B[j] != A[i + j]) break;
if (j == B.Length) return i;
}
return -1;
}