Проблема с выделением памяти в заинжекченом процессе

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by razzzar, 19 Nov 2007.

  1. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    Хех, ну а причем тут CRT? Ни о каком CRT речи не идет. Следовательно не будет таких инструкций, которые бы обращались по зашитым в них адресам, все обращения по абсолютным адресам сведутся к вызовам winapi, адреса которых получены в ходе выполнения программы. Я никогда на самом деле этими вещами не занимался, но ошибок в рассуждениях своих не вижу.
     
  2. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    first post:
    http://forum.antichat.ru/showpost.php?p=508892&postcount=1

    ...

    ну для интереса - попробуй, с отключенной крт, скопировать полный образ бинарника (полный, иначе как быть с импортом?. ну или пофиг какой) в другой процесс. не хело ворлд, а что-то более мощное. точно будет косяк где-нибудь.
     
  3. DWORD

    DWORD Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    129
    Likes Received:
    70
    Reputations:
    -36
    Ну про первый пост мы уже не говорим, тема немножко другая. Я не буду конечно этим заниматься, что ты говоришь - лень, но интерес остался. Где-нибудь, это где - контрпример приведи. Как известно для доказательства теоремы надо ее получить, опираясь на аксиомы, а для опровержения теории достаточно привести контрпример, не клеющийся с рассуждениями этой теории и известный из постулатов или доказанных ранее теорем, ну и где он? Я специально посмотрел сейчас в отладчике код с множеством циклов, условий, свичей, даже с goto - все переходы относительные..
     
    1 person likes this.
  4. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Пример надо приводить, когда точно известно, что предполагается делать - копировать образ бинарника в другой процесс полностью, или копировать туда 1 ф-ю/какой-нибудь кусок кода неизвестно какого размера.
    В первом случае - придется специально переносить каждую секцию на другой адрес. Вообще смысла в этом никакого не вижу, разве что для проверки: "а все-таки можно ли вот так сделать"? Во втором случае сказать конкретно ничего нельзя - никто не знает что будешь копировать ... Есть факт - пока jmp'ы (и тп) будут указывать в кусок кода, который двигается вместе с ними - все будет нормально. Соотв, если убрать инструкции, требующие абсолютный адрес (все остальные, грубо говоря) - работать будет. Но тогда надо будет не использовать глобальные переменные или как-то передавать их адреса в выделеной куче. И вообще извращаться. Неужели не проще скопировать все туда же, где оно и было до этого? Это универсально по крайней мере.
     
  5. panda gorl

    panda gorl New Member

    Joined:
    19 Mar 2007
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    ZaCo - ламо, KEZ прав абсолютно, ибо дело в тупом CRT. Я для того чтобы обойти баг просто тупо переопределил все маллоки и операторы нью\делит:

    Code:
    void* __cdecl malloc(size_t n)
    {
        void* pv = HeapAlloc(GetProcessHeap(), 0, n);
        return pv;
    }
    void* __cdecl calloc(size_t n, size_t s)
    {
        return malloc(n*s);
    }
    void* __cdecl realloc(void* p, size_t n)
    {
        if (p == NULL) return malloc(n);
        return HeapReAlloc(GetProcessHeap(), 0, p, n);
    }
    void __cdecl free(void* p)
    {
        if (p == NULL) return;
        HeapFree(GetProcessHeap(), 0, p);
    }
    
    void* __cdecl operator new(size_t n)
    {
        return malloc(n);
    }
    void __cdecl operator delete(void* p)
    {
        free(p);
    }
    Ты инжектишь сразу весь образ своего приложения или только его кусок?
     
  6. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    2panda gorl зачем ты обзываешься? мог бы сказать хотя бы перед этим где я в этом топике не прав :(
     
  7. panda gorl

    panda gorl New Member

    Joined:
    19 Mar 2007
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    не обижайся ;)
     
  8. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    ну и не говори :p
     
  9. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,296
    Reputations:
    327
    DuplicateHandle
     
    1 person likes this.