Inject кода в intaller

Discussion in 'Реверсинг' started by atmel, 26 Aug 2014.

  1. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Inject кода в installer

    Всем привет.

    Нужна помощь со встраиванием своего кода в несколько инсталлеров. Что-то гугление в этом направлении сильно не помогло. Нашел пару прог, но они не справляются с упакованными инсталлерами.

    Т.е. надо, чтобы перед запуском основной программки запустился мой код.
    Кто может направить на путь истинный? Примеры софта или обучить как это сделать ручками.
    С меня вознаграждение, если что ;-)

    Любая помощь приветствуется.
     
    #1 atmel, 26 Aug 2014
    Last edited: 26 Aug 2014
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Любой нормальный инсталлер проверит контрольную сумму себя любимого или цифровую подпись скажем. И если тема коммерческая, то надо было в другой раздел постить.
     
    _________________________
  3. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    И нет вариантов его "одурачить"?

    Да я надеюсь и так подскажут (найдем варианты), но если сложно - готов отблагодарить.
     
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Можно пропатчить инсталлер, но это будет не особо универсально и придется разбирать каждую новую версию/класс инсталлеров отдельно.
     
    _________________________
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Способы конечно есть. Для начала знать бы какой инсталлер. Если не слишком замороченый, то как вариант, можно добавить новую секцию с твоим кодом и заинлайнить проверку контрольной суммы.

    Хотя самым эффективным методом в твоем случае - таскать рядом с инсталлерами поправленую системную библиотеку (так ломались большинство вмпротов через lpk.dll и аспр через msimg32.dll)
     
  6. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Спасибо за идею, но файл должен быть один.
    Инсталлер NSIS, ругается, что файлик битый после добавления кода.
     
  7. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    NSIS 3.0b0
    Функция проверки:
    PHP:
    00402DBC  /$  55            push    ebp
    00402DBD  
    |.  8BEC          mov     ebpesp
    00402DBF  
    |.  81EC 2C020000 sub     esp22C
    00402DC5  
    |.  53            push    ebx
    00402DC6  
    |.  56            push    esi
    00402DC7  
    |.  33DB          xor     ebxebx
    00402DC9  
    |.  57            push    edi
    00402DCA  
    |.  895D FC       mov     dword ptr ss:[ebp-4], ebx
    00402DCD  
    |.  895D F8       mov     dword ptr ss:[ebp-8], ebx
    00402DD0  
    |.  FF15 90704000 call    dword ptr ds:[<&KERNEL32.GetTickCount>]        ; [GetTickCount
    00402DD6  
    |.  BE 00784300   mov     esimod_nsis.00437800                         ;  UNICODE "C:\Users\User\Desktop\mod_nsis-3.0b0-setup.exe"
    00402DDB  |.  68 00040000   push    400                                            ; /BufSize 400 (1024.)
    00402DE0  |.  05 E8030000   add     eax3E8                                       ; |
    00402DE5  |.  56            push    esi                                            ; |PathBuffer NULL
    00402DE6  
    |.  53            push    ebx                                            ; |hModule NULL
    00402DE7  
    |.  A3 EC914200   mov     dword ptr ds:[4291EC], eax                     ; |
    00402DEC  |.  FF15 9C704000 call    dword ptr ds:[<&KERNEL32.GetModuleFileNameW>]  ; \GetModuleFileNameW
    00402DF2  
    |.  6A 03         push    3
    00402DF4  
    |.  68 00000080   push    80000000
    00402DF9  
    |.  56            push    esi
    00402DFA  
    |.  E8 572D0000   call    mod_nsis.00405B56
    00402DFF  
    |.  8BF8          mov     edieax
    00402E01  
    |.  83FF FF       cmp     edi, -1
    00402E04  
    |.  893D 18904000 mov     dword ptr ds:[409018], edi
    00402E0A  
    |.  75 0A         jnz     short mod_nsis.00402E16
    00402E0C  
    |.  B8 B8924000   mov     eaxmod_nsis.004092B8                         ;  UNICODE "Error launching installer"
    00402E11  |.  E9 45020000   jmp     mod_nsis.0040305B
    00402E16  
    |>  56            push    esi
    00402E17  
    |.  BE 00584300   mov     esimod_nsis.00435800                         ;  UNICODE "C:\Users\User\Desktop"
    00402E1C  |.  56            push    esi
    00402E1D  
    |.  E8 C8300000   call    mod_nsis.00405EEA
    00402E22  
    |.  56            push    esi
    00402E23  
    |.  E8 592B0000   call    mod_nsis.00405981
    00402E28  
    |.  50            push    eax
    00402E29  
    |.  68 00804300   push    mod_nsis.00438000                              ;  UNICODE "mod_nsis-3.0b0-setup.exe"
    00402E2E  |.  E8 B7300000   call    mod_nsis.00405EEA
    00402E33  
    |.  53            push    ebx                                            ; /pFileSizeHigh NULL
    00402E34  
    |.  57            push    edi                                            ; |hFile 0000164E
    00402E35  
    |.  FF15 98704000 call    dword ptr ds:[<&KERNEL32.GetFileSize>]         ; \GetFileSize
    00402E3B  
    |.  3BC3          cmp     eaxebx
    00402E3D  
    |.  A3 88FE4100   mov     dword ptr ds:[41FE88], eax
    00402E42  
    |.  8BF0          mov     esieax
    00402E44  
    |.  0F8E EA000000 jle     mod_nsis.00402F34
    00402E4A  
    |>  A1 F4914200   /mov     eaxdword ptr ds:[4291F4]
    00402E4F  |.  8BFE          |mov     ediesi
    00402E51  
    |.  F7D8          |neg     eax
    00402E53  
    |.  1BC0          |sbb     eaxeax
    00402E55  
    |.  25 007E0000   |and     eax7E00
    00402E5A  
    |.  05 00020000   |add     eax200
    00402E5F  
    |.  3BF0          |cmp     esieax
    00402E61  
    |.  7C 02         |jl      short mod_nsis.00402E65
    00402E63  
    |.  8BF8          |mov     edieax
    00402E65  
    |>  57            |push    edi
    00402E66  
    |.  68 887E4100   |push    mod_nsis.00417E88
    00402E6B  
    |.  E8 89040000   |call    mod_nsis.004032F9
    00402E70  
    |.  85C0          |test    eaxeax
    00402E72  
    |.  0F84 57010000 |je      mod_nsis.00402FCF
    00402E78  
    |.  391D F4914200 |cmp     dword ptr ds:[4291F4], ebx
    00402E7E  
    |.  75 7E         |jnz     short mod_nsis.00402EFE
    00402E80  
    |.  6A 1C         |push    1C
    00402E82  
    |.  8D45 DC       |lea     eaxdword ptr ss:[ebp-24]
    00402E85  |.  68 887E4100   |push    mod_nsis.00417E88
    00402E8A  
    |.  50            |push    eax
    00402E8B  
    |.  E8 812C0000   |call    mod_nsis.00405B11
    00402E90  
    |.  8B45 DC       |mov     eaxdword ptr ss:[ebp-24]
    00402E93  |.  A9 F0FFFFFF   |test    eaxFFFFFFF0
    00402E98  
    |.  75 71         |jnz     short mod_nsis.00402F0B
    00402E9A  
    |.  817D E0 EFBEA>|cmp     dword ptr ss:[ebp-20], DEADBEEF
    00402EA1  
    |.  75 68         |jnz     short mod_nsis.00402F0B
    00402EA3  
    |.  817D EC 496E7>|cmp     dword ptr ss:[ebp-14], 74736E49
    00402EAA  
    |.  75 5F         |jnz     short mod_nsis.00402F0B
    00402EAC  
    |.  817D E8 736F6>|cmp     dword ptr ss:[ebp-18], 74666F73
    00402EB3  
    |.  75 56         |jnz     short mod_nsis.00402F0B
    00402EB5  
    |.  817D E4 4E756>|cmp     dword ptr ss:[ebp-1C], 6C6C754E
    00402EBC  
    |.  75 4D         |jnz     short mod_nsis.00402F0B
    00402EBE  
    |.  0945 08       |or      dword ptr ss:[ebp+8], eax
    00402EC1  
    |.  8B45 08       |mov     eaxdword ptr ss:[ebp+8]
    00402EC4  |.  8B0D 787E4100 |mov     ecxdword ptr ds:[417E78]
    00402ECA  |.  83E0 02       |and     eax2
    00402ECD  
    |.  0905 80924200 |or      dword ptr ds:[429280], eax
    00402ED3  
    |.  8B45 F4       |mov     eaxdword ptr ss:[ebp-C]
    00402ED6  |.  3BC6          |cmp     eaxesi
    00402ED8  
    |.  890D F4914200 |mov     dword ptr ds:[4291F4], ecx                    ;  kernel32.75143F2C
    00402EDE  
    |.  0F8F 2F010000 |jg      mod_nsis.00403013
    00402EE4  
    |.  F645 08 08    |test    byte ptr ss:[ebp+8], 8
    00402EE8  
    |.  75 06         |jnz     short mod_nsis.00402EF0
    00402EEA  
    |.  F645 08 04    |test    byte ptr ss:[ebp+8], 4
    00402EEE  
    |.  75 44         |jnz     short mod_nsis.00402F34
    00402EF0  
    |>  FF45 F8       |inc     dword ptr ss:[ebp-8]
    00402EF3  |.  8D70 FC       |lea     esidword ptr ds:[eax-4]
    00402EF6  |.  3BFE          |cmp     ediesi
    00402EF8  
    |.  76 11         |jbe     short mod_nsis.00402F0B
    00402EFA  
    |.  8BFE          |mov     ediesi
    00402EFC  
    |.  EB 0D         |jmp     short mod_nsis.00402F0B
    00402EFE  
    |>  F645 08 02    |test    byte ptr ss:[ebp+8], 2
    00402F02  
    |.  75 07         |jnz     short mod_nsis.00402F0B
    00402F04  
    |.  53            |push    ebx
    00402F05  
    |.  E8 10FEFFFF   |call    mod_nsis.00402D1A
    00402F0A  
    |.  59            |pop     ecx                                           ;  mod_nsis.00436800
    00402F0B  
    |>  3B35 88FE4100 |cmp     esidword ptr ds:[41FE88]
    00402F11  |.  7D 11         |jge     short mod_nsis.00402F24
    00402F13  
    |.  57            |push    edi
    00402F14  
    |.  68 887E4100   |push    mod_nsis.00417E88
    00402F19  
    |.  FF75 FC       |push    dword ptr ss:[ebp-4]
    00402F1C  |.  E8 E1330000   |call    mod_nsis.00406302
    00402F21  
    |.  8945 FC       |mov     dword ptr ss:[ebp-4], eax
    00402F24  
    |>  013D 787E4100 |add     dword ptr ds:[417E78], edi
    00402F2A  
    |.  2BF7          |sub     esiedi
    00402F2C  
    |.  3BF3          |cmp     esiebx
    00402F2E  
    |.^ 0F8F 16FFFFFF \jg      mod_nsis.00402E4A
    00402F34  
    |>  6A 01         push    1
    00402F36  
    |.  E8 DFFDFFFF   call    mod_nsis.00402D1A
    00402F3B  
    |.  391D F4914200 cmp     dword ptr ds:[4291F4], ebx
    00402F41  
    |.  59            pop     ecx                                            ;  mod_nsis.00436800
    00402F42  
    |.  0F84 CB000000 je      mod_nsis.00403013
    00402F48  
    |.  395D F8       cmp     dword ptr ss:[ebp-8], ebx
    00402F4B  
    |.  74 2A         je      short mod_nsis.00402F77
    00402F4D  
    |.  FF35 787E4100 push    dword ptr ds:[417E78]
    00402F53  |.  E8 B7030000   call    mod_nsis.0040330F
    00402F58  
    |.  8D45 08       lea     eaxdword ptr ss:[ebp+8]
    00402F5B  |.  6A 04         push    4
    00402F5D  
    |.  50            push    eax
    00402F5E  
    |.  E8 96030000   call    mod_nsis.004032F9
    00402F63  
    |.  85C0          test    eaxeax
    00402F65  
    |.  0F84 A8000000 je      mod_nsis.00403013
    00402F6B  
    |.  8B45 FC       mov     eaxdword ptr ss:[ebp-4]
    00402F6E  |.  3B45 08       cmp     eaxdword ptr ss:[ebp+8]
    00402F71  |.  0F85 9C000000 jnz     mod_nsis.00403013
    00402F77  
    |>  FF75 F0       push    dword ptr ss:[ebp-10]                          ; /MemSize 32988 (207240.)
    00402F7A  |.  6A 40         push    40                                             ; |Flags GPTR
    00402F7C  
    |.  FF15 20714000 call    dword ptr ds:[<&KERNEL32.GlobalAlloc>]         ; \GlobalAlloc
    00402F82  
    |.  B9 F0BD4000   mov     ecxmod_nsis.0040BDF0
    00402F87  
    |.  8BF0          mov     esieax
    00402F89  
    |.  E8 E2330000   call    mod_nsis.00406370
    00402F8E  
    |.  8D85 D4FDFFFF lea     eaxdword ptr ss:[ebp-22C]
    00402F94  |.  68 00684300   push    mod_nsis.00436800                              ;  UNICODE "C:\Users\User\AppData\Local\Temp\"
    00402F99  |.  50            push    eax
    00402F9A  |.  E8 E62B0000   call    mod_nsis.00405B85
    00402F9F  |.  53            push    ebx                                            ; /hTemplateFile = NULL
    00402FA0  |.  68 00010004   push    4000100                                        ; |Attributes = TEMPORARY|DELETE_ON_CLOSE
    00402FA5  |.  6A 02         push    2                                              ; |Mode = CREATE_ALWAYS
    00402FA7  |.  53            push    ebx                                            ; |pSecurity = NULL
    00402FA8  |.  53            push    ebx                                            ; |ShareMode = 0
    00402FA9  |.  8D85 D4FDFFFF lea     eax, dword ptr ss:[ebp-22C]                    ; |
    00402FAF  |.  68 000000C0   push    C0000000                                       ; |Access = GENERIC_READ|GENERIC_WRITE
    00402FB4  |.  50            push    eax                                            ; |FileName = 1CD66A89 ???
    00402FB5  |.  FF15 94704000 call    dword ptr ds:[<&KERNEL32.CreateFileW>]         ; \CreateFileW
    00402FBB  |.  83F8 FF       cmp     eax, -1
    00402FBE  |.  A3 1C904000   mov     dword ptr ds:[40901C], eax
    00402FC3  |.  75 14         jnz     short mod_nsis.00402FD9
    00402FC5  |.  B8 30924000   mov     eax, mod_nsis.00409230                         ;  UNICODE "
    Error writing temporary fileMake sure your temp folder is valid."
    00402FCA  |.  E9 8C000000   jmp     mod_nsis.0040305B
    00402FCF  |>  6A 01         push    1
    00402FD1  |.  E8 44FDFFFF   call    mod_nsis.00402D1A
    00402FD6  |.  59            pop     ecx                                            ;  mod_nsis.00436800
    00402FD7  |.  EB 3A         jmp     short mod_nsis.00403013
    00402FD9  |>  A1 F4914200   mov     eax, dword ptr ds:[4291F4]
    00402FDE  |.  83C0 1C       add     eax, 1C
    00402FE1  |.  50            push    eax
    00402FE2  |.  E8 28030000   call    mod_nsis.0040330F
    00402FE7  |.  8B4D DC       mov     ecx, dword ptr ss:[ebp-24]
    00402FEA  |.  FF75 F0       push    dword ptr ss:[ebp-10]
    00402FED  |.  F7D1          not     ecx                                            ;  kernel32.75143F2C
    00402FEF  |.  83E1 04       and     ecx, 4
    00402FF2  |.  A3 8CFE4100   mov     dword ptr ds:[41FE8C], eax
    00402FF7  |.  2BC1          sub     eax, ecx                                       ;  kernel32.75143F2C
    00402FF9  |.  8B4D F4       mov     ecx, dword ptr ss:[ebp-C]
    00402FFC  |.  56            push    esi
    00402FFD  |.  53            push    ebx
    00402FFE  |.  8D4408 E4     lea     eax, dword ptr ds:[eax+ecx-1C]
    00403002  |.  6A FF         push    -1
    00403004  |.  A3 807E4100   mov     dword ptr ds:[417E80], eax
    00403009  |.  E8 54000000   call    mod_nsis.00403062
    0040300E  |.  3B45 F0       cmp     eax, dword ptr ss:[ebp-10]
    00403011  |.  74 07         je      short mod_nsis.0040301A
    00403013  |>  B8 98904000   mov     eax, mod_nsis.00409098                         ;  UNICODE "
    Installer integrity check has failedCommon causes include
    incomplete download and damaged mediaC"
    00403018  |.  EB 41         jmp     short mod_nsis.0040305B
    0040301A  |>  F645 DC 01    test    byte ptr ss:[ebp-24], 1
    0040301E  |.  8935 F0914200 mov     dword ptr ds:[4291F0], esi
    00403024  |.  8B06          mov     eax, dword ptr ds:[esi]
    00403026  |.  A3 F8914200   mov     dword ptr ds:[4291F8], eax
    0040302B  |.  74 06         je      short mod_nsis.00403033
    0040302D  |.  FF05 FC914200 inc     dword ptr ds:[4291FC]
    00403033  |>  6A 08         push    8
    00403035  |.  8D46 44       lea     eax, dword ptr ds:[esi+44]
    00403038  |.  59            pop     ecx                                            ;  mod_nsis.00436800
    00403039  |>  83E8 08       /sub     eax, 8
    0040303C  |.  0130          |add     dword ptr ds:[eax], esi
    0040303E  |.  49            |dec     ecx                                           ;  kernel32.75143F2C
    0040303F  |.^ 75 F8         \jnz     short mod_nsis.00403039
    00403041  |.  A1 7C7E4100   mov     eax, dword ptr ds:[417E7C]
    00403046  |.  6A 40         push    40
    00403048  |.  8946 3C       mov     dword ptr ds:[esi+3C], eax
    0040304B  |.  83C6 04       add     esi, 4
    0040304E  |.  56            push    esi
    0040304F  |.  68 00924200   push    mod_nsis.00429200
    00403054  |.  E8 B82A0000   call    mod_nsis.00405B11
    00403059  |.  33C0          xor     eax, eax
    0040305B  |>  5F            pop     edi                                            ;  mod_nsis.00436800
    0040305C  |.  5E            pop     esi                                            ;  mod_nsis.00436800
    0040305D  |.  5B            pop     ebx                                            ;  mod_nsis.00436800
    0040305E  |.  C9            leave
    0040305F  \.  C2 0400       ret     4
    Место сравнения блоков контрольных сумм
    PHP:
    00402F6B  |.  8B45 FC       mov     eaxdword ptr ss:[ebp-4]
    00402F6E  |.  3B45 08       cmp     eaxdword ptr ss:[ebp+8]
    00402F71  |.  0F85 9C000000 jnz     nsis-3_0.00403013
    Делай поиск по маске и патч там, никаких проблем не будет
     
  8. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Что-то я сегодня добрый.
    Паттерн для поиска:
    85 C0 0F 84 A8 00 00 00 8B 45 FC 3B 45 08 0F 85 9C 00 00 00 FF 75 F0 6A 40

    Паттерн для патча:
    85 C0 0F 84 A8 00 00 00 8B 45 08 3B 45 08 0F 85 9C 00 00 00 FF 75 F0 6A 40
     
    1 person likes this.
  9. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    вот это дело!
    Как все получится - с меня ящик напитка (не шучу)!
     
  10. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    в HEX поменял, не помогло, ругается.
    А вот нормально DISASM ему сделать (чтобы посмотреть почему не помогло) не получается.
    Можно узнать чем декомпилировали?
     
  11. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    да без разницы в чем смотреть. любой отладчик, либо дизассемблер. покажи уже инсталлер, может там другая версия или вообще не NSIS o_O
     
  12. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    может другая версия,
    сравнение вижу, переход меняю, но наверное не туда или все таки не там.

    Вот к примеру файлик (не тронутый) http://speedy.sh/kh66r/testinstaller.exe
     
  13. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    проверил. от изменения кода помогает. может ты изменил еще и размер файла?
    -
    в-общем посмотрел, после моего патча измененный инсталлер без проблем работает. видимо ты что-то не так делаешь. Может отписать тут или в личке подробней, скажу где ошибка. Но только завтра утром. Сейчас я спать :)
     
    #13 #colorblind, 27 Aug 2014
    Last edited: 27 Aug 2014
  14. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    да, размер файла меняю тоже
     
  15. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Да уж, с изменение размера файла все меняет. Процедура распаковки завязана на размере инсталлера, т.к. NSIS хранит контейнер в оверлее. Поэтому единственный вариант, который я вижу, это таскать свой код(если он такой огромный, что ты меняешь размер файла) в отдельной dll и вызывать ее.
    Если же твой код не очень большой, то можно уместиться в CodeCave внутри инсталлера.

    Извини, больше идей нет.
     
    1 person likes this.
  16. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Ок
    Огромное спасибо за подсказку - попробую тогда уместить!
     
  17. atmel

    atmel New Member

    Joined:
    14 Aug 2010
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Кстати, а если не помещусь, не проблема же качнуть экзешник из нета и по-тихому запустить его? В отдельном потоке даже все это делать...
    Кода на это будет совсем не много.
    Вариант?
     
  18. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Вариант не очень, потому что:
    1) Не факт что есть интернет
    2) Не факт что тебя в него пустят
    3) Повышение шанса ложных(или не ложных) детектов
     
  19. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    И поэтому нельзя поменять ImageSize и пропатчить оффсеты если там хардкод?
     
    _________________________
  20. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    637
    Likes Received:
    246
    Reputations:
    42
    Ну если покажешь как, буду очень благодарен