Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Дневники и блоги —› Отладка программ под Linux
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 04 февраля 2017 20:21 · Поправил: Модератор
· Личное сообщение · #1

0. Здравствуйте дорогие друзья,мне захотелось рассказать про отладку программ под Linux.
Для начала я вам расскажу, что для этого нам потребуется.
компилятор GCC,он присутствует практически во всех дистрибутивах.
Поэтому его установку я объяснять не буду.
Открываем терминал пишем.

1. mkdir ctest // Первая команда нам создаст каталог.
2. cd ctest // вторая перейдет в этот каталог.
3. nano ctest.c //а третья создаст файл ctest.c / откроет в текстовом редакторе nano.

4. Теперь нам необходимо ввести :

Code:
  1. #
  2. include < stdio.>
  3.   void function1() {
  4.     int i, j;
  5.     for (= 0; i < 100000; i++)
  6.       j += i;
  7.   }
  8. void function2() {
  9.   int i, j;
  10.   function1();
  11.   for (= 0; i < 200000; i++)
  12.     j = i;
  13. }
  14. int main() {
  15.   int i, j;
  16.   for (= 0; i < 100; i++)
  17.     function1();
  18.   for (= 0; i < 50000; i++)
  19.     function2();
  20.   return 0;
  21. }


5. сохранить наш код в данном файле, для этого нажмем Ctrl+X,
на что нам редактор сообщит, сохранить или нет изменения в нашем файле,
нажмем на клавиатуре Y или напишем Да.

6.Oткомпилировать нашу программу.
gcc -o ctest ctest.c

7. ввести: s~ objdump -d ctest //теперь смотрим дамп.



8f23_04.02.2017_EXELAB.rU.tgz - 01.png



Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 09 апреля 2017 07:48 · Поправил: Abraham
· Личное сообщение · #2

Друзья совсем забыл,есть еще одна фишка.
Perl язык программирования,команда print
удобна для создания длинных последовательностей символов.
Perl выполнение с помощью ключа -e.
Это команда указывает Perl, надо выполнить команды,
в одинарные кавычки.
Code:
  1.  Любой символ,в том числе неотображаемый,можно напечатать с 
  2. помощью \x##, где ##   представляет шестнадцатеричное значение символа.
  3.  терминал$ prl -'print "Cracker"x10000 . "PTRASBL" . "\x56\x98\x78\x43\x96\53\x59\x34\x68\x78\x44\x54\x96\x98\x76\x27\x32\x65\x71\x87"x7 . "Z" ; '

Эту фишку рассмотрим попозже,переполнения буфера,с помощью языка Perl.
А пока ,про тестируйте.



Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 11 апреля 2017 01:32 · Поправил: Abraham
· Личное сообщение · #3

Мне нужен калькулятор,чтобы сложить байт памяти.
Давайте напишем свой калькулятор ,для сложения чисел.
Прога,использующая библиотеку ввода-вывода.
Программа отображает приглашение ввести два числа.
Enter two numbers:
Затем ожидает ввода.
Ввели следующие два произвольных числа 35 76 ,и клавишу <Enter>
отобразит The sum of 35 and 76 is 111

Code:
  1. include <iostream>  // Включить  в программу библиотеку ostream.
  2.  
  3. int main()
  4.  
  5. {   
  6.       std::cout << " Enter two numbers:" << std::endl; //
  7.       int v1, v2;
  8.       std:: cin >> v1 >> v2 ;
  9.       std:: cout << "The sum of " << v1 << " and " << v2
  10.                        << " is " << v1 + v2 << std::endl;
  11.       return 0;
  12. }
  13.  


Cкомпилируем
$ g++ prog.cc -o prog
Оператора вывода,резултатом является значение его левого операнда.
Значение,возвращенным операцией вывода-вывода,является сам поток.
Оператор возвращает свой левый операнд,связать в месте несколько запросов на вывод.
Оператор,ввести два числа,эквивалентен следующему.
std::cout << " Enter two numbers:" << std::endl;
(std::cout << " Enter two numbers:") Возвращает свой левый операнд, std::cout,этот оператор
эквивалентен следующему.std::cout << " Enter two numbers:" ;
std::cout << std::endl Слово endl Запись в поток вывода происходит переход на новую строку и сброс буфера,
связанного сданным устройством.Сброс буфера , записанные в поток вывода ,данные будут отображены.

Наша программа будет работать ,даже если мы напишем вот так.
Code:
  1. #include <iostream> 
  2. int main()
  3.  
  4. {   
  5.       std::cout << " Enter two numbers:"
  6.       << std::endl;
  7.       int v1, v2;
  8.       std:: cin >> v1 >> v2 ;
  9.       std:: cout  << "The sum of " << v1 
  10.       << " and " << v2
  11.       << " is " << v1 + v2      // Проверяем наш калькулятор. (+),(/),(+),(-),(*). 
  12.       << std::endl;
  13.       return 0;
  14. }




Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 29 июня 2017 09:55 · Поправил: Abraham
· Личное сообщение · #4

Приветствую вас мои друзья!
У меня есть немного времени,хочу поговорить о шифровальщике.

Рекомендации по защите компьютера от программ-шифровальщиков
1. Общие рекомендации
1. Не открывайте почтовые вложения от неизвестных отправителей
В большинстве случаев программы-шифровальщики распространяются через почтовые вложения.
Задача злоумышленника – убедить пользователя открыть вложение из письма, поэтому темы писем содержат угрозы ,уведомление от арбитражного суда об иске; исполнительное производство о взыскании задолженности,
возбуждение уголовного дела и тому подобное.
При этом вредоносными могут оказаться не только файлы формата EXE.
Зафиксированы случаи заражения компьютеров при открытии файлов форматов DOC и PDF.
2. Своевременно обновляйте , операционную систему и другие программы.
3. Регулярно создавайте резервные копий файлов и храните их вне компьютера
Храните резервные копии вне компьютера (например, на съёмных носителях или в «облачных» хранилищах) и в зашифрованном виде. Таким образом, файлы будут защищены не только от программ-шифровальщиков,
но и от отказов компьютерной техники.
4. Настройте доступ к общим сетевым папкам
Если вы используете общие сетевые папки, создать отдельную сетевую папку для каждого пользователя.
При этом права на запись должны быть только у владельца папки.
Таким образом, при заражении одного компьютера файлы будут зашифрованы только в одной сетевой папке.
В противном случае, заражение одного компьютера может привести к шифрованию всех документов на всех сетевых папках.
2. Рекомендации по настройке параметров компьютера
Начиная с операционных систем Windows входит служба защиты системы на всех дисках.




Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 30 июня 2017 19:13
· Личное сообщение · #5

Закатом солнца начинается,СУББОТА у евреев.
Субботние свечи и бокал для кидуша.
За компьютеро сидеть нельзя,но если очень хочется,то можно.



Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 01 июля 2017 16:23 · Поправил: Abraham
· Личное сообщение · #6

Я не забыл, попозже мы будем продолжать исследования программ в среде линукс.



Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 06 июля 2017 12:13 · Поправил: Abraham
· Личное сообщение · #7

Дело в том,что байты отображаемых символов ASCII. ASCII -это стандарт отображения всех символов,
которые вы видите на своей клавиатуре.
Таблицу ASCII можно вывести командой man ascii ,которая есть в большинстве систем UNIX.
Code:
  1. ASCII(7)                                                 Linux Programmer's Manual ASCII(7)
  2.  
  3. NAME
  4.        ascii - ASCII character set encoded in octal, decimal, and hexadecimal
  5.  
  6. DESCRIPTION
  7.        ASCII  is  the American Standard Code for Information Interchange.  It is a 7-bit code.  Many 8-bit codes (e.g., ISO 8859-1) contain
  8.        ASCII as their lower half.  The international counterpart of ASCII is known as ISO 646-IRV.
  9.  
  10.        The following table contains the 128 ASCII characters.
  11.  
  12.        C program '\X' escapes are noted.
  13.  
  14.        Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
  15.        &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
  16.        000   0     00    NUL '\0' (null character)   100   64    40    @
  17.        001   1     01    SOH (start of heading)      101   65    41    A
  18.        002   2     02    STX (start of text)         102   66    42    B
  19.        003   3     03    ETX (end of text)           103   67    43    C
  20.        004   4     04    EOT (end of transmission)   104   68    44    D
  21.        005   5     05    ENQ (enquiry)               105   69    45    E
  22.        006   6     06    ACK (acknowledge)           106   70    46    F
  23.        007   7     07    BEL '\a' (bell)             107   71    47    G
  24.        010   8     08    BS  '\b' (backspace)        110   72    48    H
  25.        011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
  26.        012   10    0A    LF  '\n' (new line)         112   74    4A    J
  27.        013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
  28.        014   12    0C    FF  '\f' (form feed)        114   76    4C    L
  29.        015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
  30.        016   14    0E    SO  (shift out)             116   78    4E    N
  31.        017   15    0F    SI  (shift in)              117   79    4F    O
  32.        020   16    10    DLE (data link escape)      120   80    50    P
  33.        021   17    11    DC1 (device control 1)      121   81    51    Q
  34.        022   18    12    DC2 (device control 2)      122   82    52    R
  35.        023   19    13    DC3 (device control 3)      123   83    53    S
  36.        024   20    14    DC4 (device control 4)      124   84    54    T
  37.        025   21    15    NAK (negative ack.)         125   85    55    U
  38.        026   22    16    SYN (synchronous idle)      126   86    56    V
  39.        027   23    17    ETB (end of trans. blk)     127   87    57    W
  40.        030   24    18    CAN (cancel)                130   88    58    X
  41.        031   25    19    EM  (end of medium)         131   89    59    Y
  42.        032   26    1A    SUB (substitute)            132   90    5A    Z
  43.        033   27    1B    ESC (escape)                133   91    5B    [
  44.        034   28    1C    FS  (file separator)        134   92    5C    \  ''
  45.        035   29    1D    GS  (group separator)       135   93    5D    ]
  46.        036   30    1E    RS  (record separator)      136   94    5E    ^
  47.  
  48.    Tables
  49.        For convenience, below are more compact tables in hex and decimal.
  50.  
  51.           2 3 4 5 6 7       30 40 50 60 70 80 90 100 110 120
  52.         -------------      ---------------------------------
  53.        0:   0 @ P ` p     0:    (  2  <  F  P  Z  d   n   x
  54.        1: ! 1 A Q a q     1:    )  3  =  G  Q  [  e   o   y
  55.        2: " 2 B R b r 2: * 4 > H R \ f p z
  56.        3: # 3 C S c s     3: !  +  5  ?  I  S  ]  g   q   {
  57.        4: $ 4 D T d t     4: " , 6 @ J T ^ h r |
  58.        5: % 5 E U e u     5: #  -  7  A  K  U  _  i   s   }
  59.        6: & 6 F V f v     6: $  .  8  B  L  V  `  j   t   ~
  60.        7: &#180; 7 G W g w 7: % / 9 C M W a k u DEL
  61.        8: ( 8 H X h x     8: &  0  :  D  N  X  b  l   v
  62.        9: ) 9 I Y i y     9: &#180; 1 ; E O Y c m w
  63.        A: * : J Z j z
  64.        B: + ; K [ k {
  65.        C: , < L \ l |
  66.        D: - = M ] m }
  67.        E: . > N ^ n ~
  68.        F: / ? O _ o DEL
  69.  
  70. NOTES
  71.    History
  72.        An ascii manual page appeared in Version 7 of AT&T UNIX.
  73.  
  74.        On older terminals, the underscore code is displayed as a left arrow, called backarrow, the caret is displayed as  an  up-arrow  and
  75.        the vertical bar has a hole in the middle.
  76.  
  77.        Uppercase  and  lowercase characters differ by just one bit and the ASCII character 2 differs from the double quote by just one bit,
  78.        too.  That made it much easier to encode characters mechanically or with a non-microcontroller-based electronic  keyboard  and  that
  79.        pairing was found on old teletypes.
  80.  
  81.        The ASCII standard was published by the United States of America Standards Institute (USASI) in 1968.
  82.  




Ранг: 16.2 (новичок), 11thx
Активность: 0.030
Статус: Участник

Создано: 09 июля 2017 03:50 · Поправил: Abraham
· Личное сообщение · #8

Code:
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int  i;
  6.    for(i=0; i < 10; i++) // Цикл.
  7.    {
  8.  
  9.      printf ("Hello World\n");
  10.  
  11.    }
  12.   
  13. }
  14.  



GDB examiine позволяет отображать и такое
содержимое памяти.Формат с автоматически
покажет байты согласно таблице ASMII,а
формат s покажет всю строку символьных
данных.
Code:
  1. (gdb) x/6cb 0x8048484
  2. 0x8048484:  72 'H' 101 'e' 108  '1' 108 '1' 111 'o' 32 ' ' 
  3. (gdb) x/s 0x8048484
  4. 0x8048484:  " Hello, Word!\n"
  5. (gdb)

Эти команды показывают,что по адресу 0x8048484
хранится строка << Hello ,World!\n>>. Это строка передается в
качестве аргумента функции printf(),указывающего,что запись
адреса этой строки (0x8048484) в ячейку,адрес которой содержит
esp


<< . 1 . 2 .
 eXeL@B —› Дневники и блоги —› Отладка программ под Linux
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати