herm1t LIVE!ng room [entries|archive|friends|userinfo]
herm1t

[ website | twilight corner in the herm1t's cave ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Hooking PR_Write [Jun. 22nd, 2015|09:54 pm]
[Tags|, , , ]

static int (*old_pr_write)(void *,void *, int);
static int pr_write(void *handle, void *buffer, int length)
{
        if (length > 4 && !strncmp(buffer, "POST", 4)) {
                FILE *f = fopen("/tmp/debug.txt", "a+");
                if (f != NULL) {
                        fprintf(f, "%.*s\n", length, buffer);
                        fclose(f);
                }
        }
        return old_pr_write(handle, buffer, length);
}

void init(void)
{
        void *h = dlopen(NULL, RTLD_LAZY);
        if (h) {
                void *(*mtdfn)(void) = dlsym(h, "PR_GetTCPMethods");
                if (mtdfn) {
                        void **mtd = (void**)mtdfn();
                        old_pr_write = ((int (*)(void*,void*,int))mtd[3]);
                        mtd[3] = pr_write;
                }
        }
}
LinkLeave a comment

Patchless hook for NSPR!PR_Write [Mar. 14th, 2015|09:58 pm]
[Tags|, , , , , ]
[Current Mood | amused]

С вредной либой придумал вариант, в котором вообще не нужно ничего патчить. Попробую. Все отлично работает. Победная реляция пишется прямо в хакнутом броузере. :-) VirtualProtect / mprotect, memcpy Красиво. Никаких патчей. Рейс исключен в принципе. И этот кодес я пока придержу. ;-P здесь
Link10 comments|Leave a comment

nspr4!PR_Write [Mar. 9th, 2015|03:05 pm]
[Tags|, , , , , , , , ]
[Current Mood | bitchy]

Так как никто ничего дельного не пишет, приходится копаться во всяком УГ, типа Hand of Thief. Оно находит nspr4!PR_Write из проинжектированной либы, и затем затирает пролог jmp (0xe9). Естественно, так как FF хрень многопоточная, то при постоянной перезаписи пролога, креш броузера - это вопрос времени. (У мну пять секунд). Так как, NSPR подгружается динамически, то у PR_Write нет записи в GOT/PLT и PLT Redirection/GOT poisoning работать не будет. Так что нужно либо хватать dlsym до старта, либо внимательнее смотреть на PR_Write, который изначально определен вот так (mozilla/nsprpub/pr/src/io/priometh.c , теперь понятно на чем они сидят ;-): TL;DR )
Link4 comments|Leave a comment

navigation
[ viewing | most recent entries ]