Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 579
#1

Компилировать и объяснить код, получающий двоичный дамп программы - C++

09.03.2016, 21:00. Просмотров 312. Ответов 13
Метки нет (Все метки)

Нашёл в книжке таких 2 примера:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstring>
#include <iostream>
 
#define legal_psw   "my.good.password"
 
int main()
{
    char user_psw[666];
 
    std::cout << "crackme 00h\nenter passwd:"; std::cin >> user_psw;
    if (strcmp(legal_psw, user_psw))
        std::cout << "wrong password\n";
    else
        std::cout << "password ok\nhello, legal user!\n";
 
    return 0;
}


Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
 
int main(int argc, char **argv)
{
    #define MAX_STR_SIZE 0x666  // Maximum string length
    #define MIN_STR_SIZE 0x5    // Minimum string length
 
    int ch;
    int count=0;
    int p=0;
    FILE *f;    
    char buff[MAX_STR_SIZE];
 
    if (argc>1 && !(f=fopen(&argv[1][0],"rb")))
    while ((ch=getc(f))!=EOF)
    {
        if (ch<' ' || ch>'z')
        {
            if (count>(MIN_STR_SIZE-2)) 
                if (count>p)
                {
                 printf(&buff[0]);              
                }
                else
                {
                 printf("%08x:%s\n",ftell(f),&buff[0]);             
                }
            p=0; count=0;
        }
            else
        {
            buff[p++]=ch; buff[p]=0;count++;
            if (p==(MAX_STR_SIZE-1))
            {
                printf("%08x:%s\n",ftell(f),&buff[0]);      
                p=0;
            }
          }     
        }
 
}

1ый с расширением .cpp, 2ой с расширением .c
Вот тут вся суть:
Как это все запустить чтобы было как в примере и почему именно такие смещения?
Миниатюры
Компилировать и объяснить код, получающий двоичный дамп программы  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2016, 21:00     Компилировать и объяснить код, получающий двоичный дамп программы
Посмотрите здесь:
C++ Объяснить код программы
C++ Структура (объяснить код программы)
Дружественные функции(Объяснить код программы) C++
Двоичный дамп short и char выводится как int C++
Двумерный массив объектов (объяснить код программы) C++
C++ Наибольший элемент матрицы в левом углу - объяснить код программы
перевод десятичного вещественного в машинный код(двоичный код) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nd2
1996 / 1582 / 558
Регистрация: 29.01.2016
Сообщений: 4,985
09.03.2016, 23:37     Компилировать и объяснить код, получающий двоичный дамп программы #2
Цитата Сообщение от Senarist Посмотреть сообщение
Как это все запустить чтобы было как в примере
Компилируешь первый код в, например, Code.exe. Компилируешь второй код в, например, Build.exe. Помещаешь их в одну папку, запускаешь командную строку, заходишь в эту папку, и пишешь: Build.exe Code.exe. Получаешь результат.
Во втором коде ошибка в 14 строке:
Цитата Сообщение от Senarist Посмотреть сообщение
C++
1
if (argc>1 && !(f=fopen(&argv[1][0],"rb")))
Нужно:
C++
1
if (argc>1 && (f=fopen(&argv[1][0],"rb")))
Миниатюры
Компилировать и объяснить код, получающий двоичный дамп программы  
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 579
10.03.2016, 12:07  [ТС]     Компилировать и объяснить код, получающий двоичный дамп программы #3
nd2 большое тебе спасибо!

Добавлено через 2 часа 4 минуты
nd2
Попробовал сделать как Вы описали
Скомпилировал в дев оба файла. Затем оба этих экзэшника запустил через командную строку cd C:\new
C:\new>second.exe first.exe
и получил вот это:
Кликните здесь для просмотра всего текста
001d2d02:_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE
001d2d0f:GetTickCount
001d2d30:_ZTVSt17moneypunct_bynameIcLb1EE
001d2d4c:_ZGVNSt11__timepunctIcE2idE
001d2d5a:__bss_start__
001d2d69:VirtualProtect
001d2d95:_ZTVSt14basic_ofstreamIwSt11char_traitsIwEE
001d2dac:mingw_initltsdyn_force
001d2df2:.refptr._ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE
001d2e14:_ZTVSt18__moneypunct_cacheIcLb0EE
001d2e34:.refptr.__dyn_tls_init_callback
001d2e4a:_ZTINSt6locale5facetE
001d2e62:__minor_image_version__
001d2e75:_ZTVSt8numpunctIwE
001d2eaa:.refptr._ZTVSt15basic_streambufIcSt11char_traitsIcEE
001d2edf:.refptr._ZTVSt15basic_streambufIwSt11char_traitsIwEE
001d2f03:.refptr._ZTVSt16__numpunct_cacheIwE
001d2f15:mingw_initcharmax
001d2f2d:_ZTVSt12ctype_bynameIcE
001d2f40:__imp_GetLastError
001d2f5d:_ZNSt10moneypunctIcLb1EE2idE
001d2f88:_ZTVSt13basic_filebufIcSt11char_traitsIcEE
001d2fa1:UnhandledExceptionFilter
001d2fba:_ZNSt8ios_base8showbaseE
001d2fcb:__imp_localeconv
001d2fe2:_ZNSt6locale8monetaryE
001d2ffc:_ZTVSt10moneypunctIwLb1EE
001d300c:___crt_xp_end__
001d302a:_ZNSt6locale2id11_S_refcountE
001d303f:__imp_VirtualProtect
001d305d:_ZNSt6locale5facet9_S_c_nameE
001d30a2:_ZTCSt13basic_fstreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E
001d30bf:_ZTVSt17__timepunct_cacheIwE
001d30e5:_ZTSSt9basic_iosIcSt11char_traitsIcEE
001d30f4:___tls_start__
001d311c:.refptr._ZNSt20bad_array_new_lengthD1Ev
001d315c:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE
001d3188:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE
001d31c2:_ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE
001d31ee:_ZTISt14basic_ifstreamIwSt11char_traitsIwEE
001d322c:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE
001d3258:_ZTTSt14basic_ifstreamIwSt11char_traitsIwEE
001d3277:.refptr.mingw_initltsdyn_force
001d32bd:.refptr._ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE
001d32e7:.refptr._ZTVSt18__moneypunct_cacheIwLb0EE
001d3309:.refptr._ZNSt14overflow_errorD1Ev
001d3323:_ZNSt8ios_base9boolalphaE
001d3361:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE
001d3379:_ZTSSt12ctype_bynameIwE
001d3386:__imp__ftime
001d3394:__imp_strncmp
001d33db:_ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE
001d33f7:.refptr._ZNSt9bad_allocD1Ev
001d3411:_ZTISt10moneypunctIwLb0EE
001d3428:_ZTISt14error_category
001d3468:_ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE
001d347c:_ZNSt8ios_base3decE
001d348e:__imp_TlsSetValue
001d34b9:_ZNSt17__timepunct_cacheIwE12_S_timezonesE
001d34f7:_ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE
001d3505:__mingw_pinit
001d3522:_MINGW_INSTALL_DEBUG_MATHERR
001d354c:.refptr.__RUNTIME_PSEUDO_RELOC_LIST_END__
001d3557:_tls_index
001d357c:.refptr._ZNSt17bad_function_callD1Ev
001d3596:__mingw_winmain_lpCmdLine
001d35a1:__imp_getc
001d35bb:_ZTISt17bad_function_call
001d35dc:_ZTSSt21__ctype_abstract_baseIcE
001d35fb:_ZNSt10moneypunctIcLb1EE4intlE
001d361a:_ZNSt10moneypunctIwLb0EE4intlE
001d3645:_ZTSSt13basic_istreamIwSt11char_traitsIwEE
001d365b:_ZNSt6locale7_S_onceE
001d3679:.refptr._ZNSt8messagesIcE2idE
001d3692:.refptr._ZTVSt9bad_alloc
001d36a0:__imp_memmove
001d36b4:_ZNSt8ios_base3hexE
001d36cb:.refptr.__tinytens_D2A
001d36ec:_ZTISt21__ctype_abstract_baseIwE
001d36fa:__IAT_start__
001d3712:_ZTVSt12ctype_bynameIwE
001d371e:__imp_fputc
001d375e:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE
001d376e:___crt_xc_end__
001d377c:__CTOR_LIST__
001d378d:__setusermatherr
001d37ae:_ZTSSt17moneypunct_bynameIwLb0EE
001d37ba:TlsSetValue
001d37e5:__shmem_winpthreads_ptr__pthread_tls_shmem
001d37f6:__imp___iob_func
001d3805:__data_start__
001d3815:__imp_FindAtomA
001d382b:_ZNSt8ios_base5fixedE
001d3845:_ZNSt8ios_base9basefieldE
001d385d:_ZNSt6locale9_S_globalE
001d3890:.refptr._ZTVSt13basic_filebufIwSt11char_traitsIwEE
001d389a:_initterm
001d38a7:__imp_fwrite
001d38e7:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE
001d390a:_ZN14__gnu_internal12buf_cin_syncE
001d3951:_ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE
001d3998:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE
001d39b5:_ZTSSt17__timepunct_cacheIcE
001d39c4:__imp_vfprintf
001d3a09:_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E
001d3a19:_ZTVSt5ctypeIwE
001d3a2b:__imp_RtlUnwindEx
001d3a49:_ZN14__gnu_internal8buf_wcinE
001d3a56:__data_end__
001d3a85:__shmem_winpthreads_ptr_mxattr_recursive_shmem
001d3a9c:WaitForMultipleObjects
001d3ab6:_ZTVSt14collate_bynameIwE
001d3ae3:_ZTSSt15basic_streambufIcSt11char_traitsIcEE
001d3af9:_ZTSSt13runtime_error
001d3b12:_ZTSSt16bad_array_length
001d3b36:.refptr._ZTVSt16__numpunct_cacheIcE
001d3b45:___CTOR_LIST__
001d3b58:__imp_ResumeThread
001d3b9d:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE
001d3bca:.refptr._ZN14__gnu_internal14buf_wcerr_syncE
001d3bd9:__imp_SetEvent
001d3c08:__shmem_winpthreads_ptr__pthread_key_sch_shmem
001d3c2e:_ZTINSt13__future_base12_Result_baseE
001d3c59:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE
001d3c75:_ZTSSt16__numpunct_cacheIcE
001d3c89:_ZNSt8ios_base3endE
001d3cb4:_ZTISt13basic_fstreamIcSt11char_traitsIcEE
001d3cf5:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE
001d3d22:_ZTISt15basic_streambufIcSt11char_traitsIcEE
001d3d3a:_ZTSSt15underflow_error
001d3d51:mingw_initltssuo_force
001d3d66:__minor_os_version__
001d3d8c:_ZNSt17moneypunct_bynameIcLb0EE4intlE
001d3da3:__imp_TerminateProcess
001d3dce:.refptr._ZN14__gnu_internal12buf_cin_syncE
001d3ddb:__imp__write
001d3deb:__imp___initenv
001d3df8:___chkstk_ms
001d3e1b:.refptr._ZNSt15underflow_errorD1Ev
001d3e37:_ZTISt14codecvt_bynameIwciE
001d3e62:_ZTISt13basic_istreamIwSt11char_traitsIwEE
001d3e79:_ZTISt11__timepunctIwE
001d3ea1:_ZTSN10__cxxabiv119__foreign_exceptionE
001d3ee4:_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE
001d3f2a:.refptr._ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE
001d3f46:_ZNSt5ctypeIcE10table_sizeE
001d3f85:_ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE
001d3f94:__imp__fstat64
001d3fd3:_ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE
001d3fe4:_ZTSSt9time_base
001d400c:__shmem_winpthreads_ptr_pthr_last_shmem
001d4029:_ZTVSt17__timepunct_cacheIcE
001d4040:__shmem_ptr_eh_globals
001d4058:.refptr._ZTVSt8bad_cast
001d4083:_ZTSN9__gnu_cxx24__concurrence_lock_errorE
001d40a2:.refptr._ZNSt7codecvtIwciE2idE
001d40b8:_ZNSt6locale7numericE
001d40c3:_ZSt5wcout
001d40dd:_ZNSt10ctype_base6xdigitE
001d40f4:_ZTSSt14overflow_error
001d410e:_ZTSSt14collate_bynameIwE
001d4122:_ZNSt8ios_base3octE
001d4166:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE
001d4192:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE
001d41be:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE
001d41e4:_ZTVNSt13__future_base12_Result_baseE
001d4206:.refptr._ZTVSt10moneypunctIwLb0EE
001d4214:__imp_realloc
001d422b:_ZTVSt14error_category
001d425e:.refptr._ZTVSt13basic_istreamIwSt11char_traitsIwEE
001d426e:_ZTVSt5ctypeIcE
001d428e:.refptr.mingw_initltsdrot_force
001d42a0:RtlCaptureContext
001d42d0:_ZTSN9__gnu_cxx29__concurrence_broadcast_errorE
001d42e7:__imp_GetModuleHandleW
001d42fa:GetCurrentThreadId
001d4325:__shmem_winpthreads_ptr_mutex_global_shmem
001d4339:_ZTSSt11logic_error
001d4355:_ZTVSt14codecvt_bynameIcciE
001d4370:_ZTVSt15messages_bynameIcE
001d439b:_ZTVSt13basic_ostreamIwSt11char_traitsIwEE
001d43a7:__bss_end__
001d43cc:__shmem_winpthreads_ptr_idList_shmem
001d43e0:_ZTSSt11regex_error
001d4427:.refptr._ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE
001d443f:.refptr._ZTVSt5ctypeIcE
001d4460:_ZTVSt21__ctype_abstract_baseIwE
001d447f:_ZNSt10moneypunctIcLb0EE4intlE
001d44b4:.refptr._ZN9__gnu_cxx27__verbose_terminate_handlerEv
001d44c9:_ZNSt7collateIwE2idE
001d44df:_ZNSt6locale7collateE
001d44ed:__imp_fsetpos
001d44fc:__imp_towupper
001d453a:_ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE
001d455c:_ZNSt8ios_base4Init11_S_refcountE
001d456cuplicateHandle
001d459f:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE
001d45e2:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE
001d460d:_ZTVSt13basic_istreamIwSt11char_traitsIwEE
001d463f:__shmem_winpthreads_ptr__pthread_cancelling_shmem
001d465e:.refptr._ZNSt11logic_errorD1Ev
001d4673:LeaveCriticalSection
001d4688:__imp_GetProcAddress
001d46a4:_ZTSSt14codecvt_bynameIwciE
001d46bf:_ZTISt15numpunct_bynameIwE
001d46cb:__ImageBase
001d46ea:.refptr._ZNSt11range_errorD1Ev
001d470f:.refptr._ZTVSt20bad_array_new_length
001d4756:.refptr._ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE
001d476e:_ZNSt8ios_base7goodbitE
001d479c:.refptr._ZTVSt9basic_iosIcSt11char_traitsIcEE
001d47d6:_ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE
001d47e9:__file_alignment__
001d47fc:_ZNSt8ios_base2inE
001d483e:.refptr._ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE
001d4873:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE
001d4899:_ZTISt9basic_iosIwSt11char_traitsIwEE
001d48b0:_ZTVSt11__timepunctIwE
001d48ca:_ZTISt10moneypunctIcLb1EE
001d48d7:__imp_strcmp
001d48f0:_ZNSs4_Rep11_S_terminalE
001d48fd:CreateMutexA
001d4912:_ZTISt12out_of_range
001d4938:.refptr._ZN14__gnu_internal8buf_wcinE
001d4962:.refptr._ZTVSt18__moneypunct_cacheIwLb1EE
001d49ad:.refptr._ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2
idE
001d49f0:_ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE
001d4a38:.refptr._ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE

001d4a50:_ZTVSt15underflow_error
001d4a97:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE
001d4ab1:_ZTVSt10moneypunctIwLb0EE
001d4abc:_ZSt5wcerr
001d4ae7:__shmem_winpthreads_ptr_idListNextId_shmem
001d4b13:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE
001d4b31:.refptr._ZTVSt13bad_exception
001d4b48:_ZTVSt11__timepunctIcE
001d4b7b:.refptr._ZNSt8ios_base4Init20_S_synced_with_stdioE
001d4b85:FindAtomA
001d4bca:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE
001d4bdd:__imp_GetAtomNameA
001d4bfa:_ZTSSt17__timepunct_cacheIwE
001d4c0e:_ZNSt8ios_base3appE
001d4c1e:_ZTSSt8bad_cast
001d4c3a:__lib64_libkernel32_a_iname
001d4c54:_ZNSt11__timepunctIcE2idE
001d4c6e:_ZTSSt10moneypunctIcLb1EE
001d4c7b:__imp_signal
001d4c93:__dyn_tls_init_callback
001d4cad:_ZTSSt14collate_bynameIcE
001d4cd4:__shmem_winpthreads_ptr_once_obj_shmem
001d4d1d:.refptr._ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2id
E
001d4d34:__imp_IsDBCSLeadByteEx
001d4d4c:GetSystemTimeAsFileTime
001d4d6b:__imp_UnhandledExceptionFilter
001d4d89:.refptr._ZNSt8messagesIwE2idE
001d4daa:_ZTVSt21__ctype_abstract_baseIcE
001d4dc2:_ZNSt8ios_base7showposE
001d4ddb:__size_of_stack_commit__
001d4df6:.refptr.__imp___mb_cur_max
001d4e02:RtlUnwindEx
001d4e19:_ZTISt11__timepunctIcE
001d4e38:_ZGVNSt10moneypunctIwLb1EE2idE
001d4e50:__dll_characteristics__
001d4e69:_ZNSt10ctype_base5cntrlE
001d4e87:.refptr.__native_startup_lock
001d4e95:__imp__setjmp
001d4eb2:.refptr._ZTVSt12future_error
001d4ee7:_ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE
001d4f08:_ZTISt17moneypunct_bynameIwLb1EE
001d4f15:__imp_memset
001d4f2d:_ZTSSt12ctype_bynameIcE
001d4f55:__shmem_winpthreads_ptr_idListMax_shmem
001d4f66:__imp_ResetEvent
001d4f7d:_ZNSt6locale8messagesE
001d4f97:_ZTSNSt8ios_base7failureE
001d4fb0:_ZNSt10ctype_base5punctE
001d4fd5:_ZTSSt23__codecvt_abstract_baseIwciE
001d4ff1:_ZNSt8ios_base10floatfieldE
001d5004:_ZTISt8numpunctIcE
001d501b:_ZNSt8ios_base6skipwsE
001d5040:_ZTVSt23__codecvt_abstract_baseIwciE
001d504c:__onexitend
001d507b:__shmem_winpthreads_ptr__pthread_key_max_shmem
001d509f:.refptr._ZNSt16invalid_argumentD1Ev
001d50ba:_ZTSSt15messages_bynameIwE
001d50d2:_ZTISt15underflow_error
001d50e8:_ZTSNSt6locale5facetE
001d5102:_ZTSSt10moneypunctIwLb1EE
001d511a:_ZGVNSt8messagesIwE2idE
001d5127:VirtualQuery
001d5141:_ZTISt14collate_bynameIwE
001d515d:_ZTVSt16__numpunct_cacheIcE
001d516c:__imp_strerror
001d5177:localeconv
001d519b:.refptr._ZNSt16bad_array_lengthD1Ev

C:\new>

Причем до этого выше еще много чего проходит но я не могу это просматривать. Если только принтскринить. Что я не так делаю?
Из этого спойлера знакомо только GetTickCount
nd2
1996 / 1582 / 558
Регистрация: 29.01.2016
Сообщений: 4,985
10.03.2016, 18:00     Компилировать и объяснить код, получающий двоичный дамп программы #4
Цитата Сообщение от Senarist Посмотреть сообщение
Что я не так делаю?
Всё так. А что ты хотел увидеть?
Цитата Сообщение от Senarist Посмотреть сообщение
Причем до этого выше еще много чего проходит но я не могу это просматривать. Если только принтскринить.
Увеличь размер буфера экрана консоли, чтобы всё влезло.

Добавлено через 15 минут
Можно добавить фильтр. Написать 19 строку так:
C++
1
if (count>(MIN_STR_SIZE-2) && strstr(&buff[0], "password"))
Выведет только строки, в которых есть слово "password".
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 579
10.03.2016, 21:51  [ТС]     Компилировать и объяснить код, получающий двоичный дамп программы #5
nd2 да все отлично.
А можешь объяснить откуда это все берется то что я в спойлере скидывал сообщением ранее.
nd2
1996 / 1582 / 558
Регистрация: 29.01.2016
Сообщений: 4,985
10.03.2016, 22:08     Компилировать и объяснить код, получающий двоичный дамп программы #6
Из first.exe. Выводит оттуда последовательность (от 5 до 1639) байт (как строку), если все байты в последовательности имеют значения кодов символов от ' ' до z.
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 579
11.03.2016, 14:10  [ТС]     Компилировать и объяснить код, получающий двоичный дамп программы #7
nd2 я понимаю что из first)) second это фильтр который ищет что то похожее на строки в first но откуда берется что то типа:
[^X
GetTickCount
и еще много всего что в спойлере или на скрине в первом сообщении

Добавлено через 1 минуту
Видимо я не понимаю саму процедуру поиска этих строк
nd2
1996 / 1582 / 558
Регистрация: 29.01.2016
Сообщений: 4,985
11.03.2016, 14:20     Компилировать и объяснить код, получающий двоичный дамп программы #8
Цитата Сообщение от Senarist Посмотреть сообщение
откуда берется что то типа:
[^X
Цитата Сообщение от Senarist Посмотреть сообщение
Видимо я не понимаю саму процедуру поиска этих строк
Видимо. Я же кратко описал процедуру:
Цитата Сообщение от nd2 Посмотреть сообщение
Выводит оттуда последовательность (от 5 до 1639) байт (как строку), если все байты в последовательности имеют значения кодов символов от ' ' до z.
Смотрим на это:
[^X
Последовательность символов из диапазона "от ' ' до z", в видимом количестве равном трём (должно быть не менее пяти, но, возможно, есть два пробела в конце, которые не видны).
GetTickCount
Тут тоже самое, только видимых символов 12. Что непонятно?
nd2
1996 / 1582 / 558
Регистрация: 29.01.2016
Сообщений: 4,985
11.03.2016, 14:28     Компилировать и объяснить код, получающий двоичный дамп программы #9
Цитата Сообщение от Senarist Посмотреть сообщение
я понимаю что из first
Открой этот first каким-нибудь hex-редактором и посмотри как выглядит его содержимое, может тогда понятней станет.
Миниатюры
Компилировать и объяснить код, получающий двоичный дамп программы   Компилировать и объяснить код, получающий двоичный дамп программы  
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 579
11.03.2016, 14:33  [ТС]     Компилировать и объяснить код, получающий двоичный дамп программы #10
То что надо. Спасибо! Возможно чуть позже появится вопрос по самой реализации, но попробую сначала сам.
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 579
14.03.2016, 21:32  [ТС]     Компилировать и объяснить код, получающий двоичный дамп программы #11
nd2 У меня такой вопрос почему именно
C
1
2
#define MAX_STR_SIZE 0x666  // Maximum string length
#define MIN_STR_SIZE 0x5    // Minimum string length
5 и 1638 ?
Разве нельзя просто посмотреть размер файла. Там меньше раза в 4.
nd2
1996 / 1582 / 558
Регистрация: 29.01.2016
Сообщений: 4,985
14.03.2016, 21:36     Компилировать и объяснить код, получающий двоичный дамп программы #12
Цитата Сообщение от Senarist Посмотреть сообщение
Разве нельзя просто посмотреть размер файла.
При чём здесь размер файла? Это максимальная и минимальная длина последовательности, которая будет выводиться.
Цитата Сообщение от nd2 Посмотреть сообщение
Выводит оттуда последовательность (от 5 до 1639) байт (как строку), если все байты в последовательности имеют значения кодов символов от ' ' до z.
Можно любые значения длины задать.
Senarist
38 / 38 / 12
Регистрация: 14.03.2014
Сообщений: 579
14.03.2016, 21:42  [ТС]     Компилировать и объяснить код, получающий двоичный дамп программы #13
т.е если длина строки меньше 3 то она не выводится из условия этого:
C++
1
if (count > (MIN_STR_SIZE - 2)
и вывод строк заканчивается если достигает MAX_STR_SIZE ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2016, 21:53     Компилировать и объяснить код, получающий двоичный дамп программы
Еще ссылки по теме:
C++ Как правильно компилировать программы?
C++ Каким образом компилировать код не си-подобных языков?
C++ Code block и Build Как с компилировать код?
Компилировать код который можно запускать без C++ Redistributable C++
Как компилировать программу C++ или код в бинарник (что бы запускался без участия ОС) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nd2
1996 / 1582 / 558
Регистрация: 29.01.2016
Сообщений: 4,985
14.03.2016, 21:53     Компилировать и объяснить код, получающий двоичный дамп программы #14
Я тебе уже всё сказал.
Yandex
Объявления
14.03.2016, 21:53     Компилировать и объяснить код, получающий двоичный дамп программы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru