Итак, уже стало доброй традицией ловить гражданина рекламного агента trink'а на бессовестном вранье.
Мы уже с вами, господа присяжные заседатели, один раз убедились, что гражданин рекламный агент trink не владеет информацией по поводу FreeBasic, тем не менее применяет здесь грязные рекламные трюки в виде утверждения, что там отсутствуют кроссплатформенные функции. И было совершенно однозначно доказано, что гражданин trink врёт.
Поскольку гражданин рекламный агент trink не захотел признать свою вину добровольно и, видимо в качестве защитного аргумента, выдвинул следующую порцию вранья, заключаюшуюся в том, что якобы рекламируемый им коммерческий продукт не использует сторонние библиотеки для создания графического интерфейса пользователя.
Сторона обвинения вынуждена была по по этому поводу провести экспертизу за свой счёт. Экспертиза заключалась в следующем:
1. Был взят код, предоставленный гражданином рекламным агентом trink'ом, который он предоставил как доказательство создания графического интерфейса пользователя без применения сторонних библиотек.
2. Данный код был откомпилирован демо-версией рекламного продукта.
3. Откомпилированный бинарный файл был исследован на наличие в нём привязки к
сторонним библиотекам и использования функций из этих сторонних библиотек.
Результаты экспертизы:
1. Наличие привязки к сторонним библиотеам проверялось с помощью команды
- Код: Выделить всё
ldd откомпилированная_программа_гражданина_trink'а
Вот результат исследования:
- Код: Выделить всё
linux-vdso.so.1 => (0x00007fffc3aeb000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9b48c07000)
libgtk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 (0x00007f9b485cb000)
libgdk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 (0x00007f9b48318000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f9b480f8000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f9b47ea7000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f9b47ba5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9b47988000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9b475c0000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f9b473bb000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f9b471ae000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f9b46e79000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f9b46c72000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f9b46a50000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f9b46747000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f9b463e3000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f9b461ce000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f9b45f82000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f9b45d45000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f9b45b3b000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f9b45938000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f9b45727000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f9b4551d000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f9b45313000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f9b4510f000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f9b44f0c000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f9b44cfa000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f9b44af1000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9b448b2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9b48f30000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9b446ad000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f9b4440b000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f9b441ed000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f9b43f43000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f9b43d1d000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f9b43b1a000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f9b43910000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9b436f7000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f9b434ef000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9b432cc000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f9b430b2000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f9b42e60000)
libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f9b42c56000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f9b42a2c000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f9b42827000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f9b42621000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f9b42406000)
libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f9b421ff000)
Батюшки!!!! использование библиотек gtk и gdk в явном виде!!!!
Впрочем, возможно они там привязались просто так? А вот на это нам ответит:
2. Наличие используемых функций из сторонних библиотек проверялось с помощью
- Код: Выделить всё
objdump -R откомпилированная_программа_гражданина_trink'а
И какие же функции использует данная программа:
- Код: Выделить всё
./purebasic.out: формат файла elf64-x86-64
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
000000000060cff8 R_X86_64_GLOB_DAT __gmon_start__
000000000060d018 R_X86_64_JUMP_SLOT g_free
000000000060d020 R_X86_64_JUMP_SLOT gtk_window_unmaximize
000000000060d028 R_X86_64_JUMP_SLOT gtk_window_deiconify
000000000060d030 R_X86_64_JUMP_SLOT gtk_label_set_line_wrap
000000000060d038 R_X86_64_JUMP_SLOT memset
000000000060d040 R_X86_64_JUMP_SLOT ftell
000000000060d048 R_X86_64_JUMP_SLOT gtk_box_get_type
000000000060d050 R_X86_64_JUMP_SLOT gtk_window_new
000000000060d058 R_X86_64_JUMP_SLOT memcpy
000000000060d060 R_X86_64_JUMP_SLOT gtk_fixed_set_has_window
000000000060d068 R_X86_64_JUMP_SLOT g_object_get_data
000000000060d070 R_X86_64_JUMP_SLOT __gmon_start__
000000000060d078 R_X86_64_JUMP_SLOT gtk_widget_modify_font
000000000060d080 R_X86_64_JUMP_SLOT g_object_unref
000000000060d088 R_X86_64_JUMP_SLOT gtk_label_new
000000000060d090 R_X86_64_JUMP_SLOT fseek
000000000060d098 R_X86_64_JUMP_SLOT gtk_widget_modify_style
000000000060d0a0 R_X86_64_JUMP_SLOT gtk_vbox_new
000000000060d0a8 R_X86_64_JUMP_SLOT exit
000000000060d0b0 R_X86_64_JUMP_SLOT g_strdup
000000000060d0b8 R_X86_64_JUMP_SLOT pthread_mutexattr_destroy
000000000060d0c0 R_X86_64_JUMP_SLOT strcasecmp
000000000060d0c8 R_X86_64_JUMP_SLOT gtk_widget_get_modifier_style
000000000060d0d0 R_X86_64_JUMP_SLOT gettimeofday
000000000060d0d8 R_X86_64_JUMP_SLOT gtk_widget_get_type
000000000060d0e0 R_X86_64_JUMP_SLOT gtk_widget_destroy
000000000060d0e8 R_X86_64_JUMP_SLOT g_object_set_data_full
000000000060d0f0 R_X86_64_JUMP_SLOT malloc
000000000060d0f8 R_X86_64_JUMP_SLOT __libc_start_main
000000000060d100 R_X86_64_JUMP_SLOT g_convert
000000000060d108 R_X86_64_JUMP_SLOT gtk_label_set_text
000000000060d110 R_X86_64_JUMP_SLOT gtk_accel_group_new
000000000060d118 R_X86_64_JUMP_SLOT gtk_window_set_type_hint
000000000060d120 R_X86_64_JUMP_SLOT g_malloc
000000000060d128 R_X86_64_JUMP_SLOT gtk_window_maximize
000000000060d130 R_X86_64_JUMP_SLOT gtk_fixed_get_type
000000000060d138 R_X86_64_JUMP_SLOT gdk_window_set_decorations
000000000060d140 R_X86_64_JUMP_SLOT pthread_mutex_init
000000000060d148 R_X86_64_JUMP_SLOT gtk_frame_new
000000000060d150 R_X86_64_JUMP_SLOT gtk_window_set_skip_taskbar_hint
000000000060d158 R_X86_64_JUMP_SLOT gdk_window_get_frame_extents
000000000060d160 R_X86_64_JUMP_SLOT gtk_widget_show_all
000000000060d168 R_X86_64_JUMP_SLOT gtk_frame_set_shadow_type
000000000060d170 R_X86_64_JUMP_SLOT gtk_window_set_skip_pager_hint
000000000060d178 R_X86_64_JUMP_SLOT gtk_container_get_type
000000000060d180 R_X86_64_JUMP_SLOT gtk_main_iteration_do
000000000060d188 R_X86_64_JUMP_SLOT free
000000000060d190 R_X86_64_JUMP_SLOT strlen
000000000060d198 R_X86_64_JUMP_SLOT gtk_fixed_new
000000000060d1a0 R_X86_64_JUMP_SLOT gtk_events_pending
000000000060d1a8 R_X86_64_JUMP_SLOT gtk_window_set_title
000000000060d1b0 R_X86_64_JUMP_SLOT gtk_window_set_default_size
000000000060d1b8 R_X86_64_JUMP_SLOT sprintf
000000000060d1c0 R_X86_64_JUMP_SLOT gtk_label_get_text
000000000060d1c8 R_X86_64_JUMP_SLOT gtk_window_get_type
000000000060d1d0 R_X86_64_JUMP_SLOT g_object_set_data
000000000060d1d8 R_X86_64_JUMP_SLOT gtk_fixed_put
000000000060d1e0 R_X86_64_JUMP_SLOT gtk_window_set_position
000000000060d1e8 R_X86_64_JUMP_SLOT gtk_init
000000000060d1f0 R_X86_64_JUMP_SLOT gtk_window_set_accept_focus
000000000060d1f8 R_X86_64_JUMP_SLOT gtk_widget_realize
000000000060d200 R_X86_64_JUMP_SLOT gtk_window_add_accel_group
000000000060d208 R_X86_64_JUMP_SLOT gtk_label_get_type
000000000060d210 R_X86_64_JUMP_SLOT g_type_check_instance_is_a
000000000060d218 R_X86_64_JUMP_SLOT fread
000000000060d220 R_X86_64_JUMP_SLOT gtk_widget_set_size_request
000000000060d228 R_X86_64_JUMP_SLOT g_source_remove
000000000060d230 R_X86_64_JUMP_SLOT g_signal_connect_data
000000000060d238 R_X86_64_JUMP_SLOT gtk_window_set_resizable
000000000060d240 R_X86_64_JUMP_SLOT gdk_window_destroy
000000000060d248 R_X86_64_JUMP_SLOT pthread_mutexattr_settype
000000000060d250 R_X86_64_JUMP_SLOT g_type_check_instance_cast
000000000060d258 R_X86_64_JUMP_SLOT gtk_widget_show
000000000060d260 R_X86_64_JUMP_SLOT gdk_window_set_functions
000000000060d268 R_X86_64_JUMP_SLOT strcmp
000000000060d270 R_X86_64_JUMP_SLOT gtk_main_iteration
000000000060d278 R_X86_64_JUMP_SLOT gtk_frame_get_type
000000000060d280 R_X86_64_JUMP_SLOT strcpy
000000000060d288 R_X86_64_JUMP_SLOT gtk_container_add
000000000060d290 R_X86_64_JUMP_SLOT nanosleep
000000000060d298 R_X86_64_JUMP_SLOT gtk_event_box_new
000000000060d2a0 R_X86_64_JUMP_SLOT gtk_box_pack_start
000000000060d2a8 R_X86_64_JUMP_SLOT gtk_container_foreach
000000000060d2b0 R_X86_64_JUMP_SLOT pthread_once
000000000060d2b8 R_X86_64_JUMP_SLOT __ctype_tolower_loc
000000000060d2c0 R_X86_64_JUMP_SLOT gtk_misc_get_type
000000000060d2c8 R_X86_64_JUMP_SLOT gtk_widget_get_toplevel
000000000060d2d0 R_X86_64_JUMP_SLOT gtk_event_box_set_visible_window
000000000060d2d8 R_X86_64_JUMP_SLOT fclose
000000000060d2e0 R_X86_64_JUMP_SLOT gtk_widget_get_style
000000000060d2e8 R_X86_64_JUMP_SLOT gdk_rgb_init
000000000060d2f0 R_X86_64_JUMP_SLOT gdk_window_new
000000000060d2f8 R_X86_64_JUMP_SLOT gtk_window_iconify
000000000060d300 R_X86_64_JUMP_SLOT g_timeout_add
000000000060d308 R_X86_64_JUMP_SLOT pthread_mutex_lock
000000000060d310 R_X86_64_JUMP_SLOT realloc
000000000060d318 R_X86_64_JUMP_SLOT pthread_mutexattr_init
000000000060d320 R_X86_64_JUMP_SLOT pthread_key_create
000000000060d328 R_X86_64_JUMP_SLOT gtk_event_box_get_type
000000000060d330 R_X86_64_JUMP_SLOT pthread_mutex_destroy
000000000060d338 R_X86_64_JUMP_SLOT gtk_widget_set_uposition
000000000060d340 R_X86_64_JUMP_SLOT gtk_widget_add_events
000000000060d348 R_X86_64_JUMP_SLOT gtk_selection_data_free
000000000060d350 R_X86_64_JUMP_SLOT pthread_mutex_unlock
000000000060d358 R_X86_64_JUMP_SLOT gtk_window_set_transient_for
000000000060d360 R_X86_64_JUMP_SLOT gtk_widget_get_default_style
000000000060d368 R_X86_64_JUMP_SLOT gtk_misc_set_alignment
Мама ридна, заступница усих программистов!!!! Функции то из gtk и gdk реально используются!!!!
Итак, сторона обвинения считает доказанным, что гражданин trink врёт и не краснеет.
Господа присяжные заседатели, прошу вас вынести своё справедливое решение.