С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 04.11.2016
Сообщений: 42

Избавится от следов си

12.09.2018, 17:52. Показов 1964. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста
Задание такое: 1)Запрограммировать на языке С (или найти готовую реализацию) алгоритм, предложенный в соответствии с вариантом задания.
2)Откомпилировать полученную программу в любом доступном компиляторе, позволяющем получить исходный код программы на языке Assembler, без оптимизации.
3)На основе анализа полученного кода на языке Assembler, сделать правки данного ассемблерного кода таким образом, чтобы в нем не прослеживались так называемые «следы» С компиляции.

Исходные код программы на с++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
 
int main() {
    double x1, y1, x2, y2;
 
    scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
    
    double k = (y2 - y1) / (x2 - x1);
    double b = (x2*y1 - x1 * y2) / (x2 - x1);
 
    printf("Line: %lf * x + %lf", k, b);
    _getch();
}
После компиляции в Visual Studio 2017 получил ассемблерный код и немного доработал, но преподаватель сказал, что нужно изменить некоторый кусок кода:
Assembler
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
_TEXT   SEGMENT
_b$ = -96                       ; size = 8
_k$ = -80                       ; size = 8
_y2$ = -64                      ; size = 8
_x2$ = -48                      ; size = 8
_y1$ = -32                      ; size = 8
_x1$ = -16                      ; size = 8
__$ArrayPad$ = -4                   ; size = 4
_main   PROC                        ; COMDAT
; Line 5
    push    ebp
    mov ebp, esp
    sub esp, 292                ; 00000124H
    push    ebx
    push    esi
    push    edi
    lea edi, DWORD PTR [ebp-292]
    mov ecx, 73                 ; 00000049H
    mov eax, -858993460             ; ccccccccH
    rep stosd
    mov eax, DWORD PTR ___security_cookie
    xor eax, ebp
    mov DWORD PTR __$ArrayPad$[ebp], eax
; Line 8
    lea eax, DWORD PTR _y2$[ebp]
    push    eax
    lea ecx, DWORD PTR _x2$[ebp]
    push    ecx
    lea edx, DWORD PTR _y1$[ebp]
    push    edx
    lea eax, DWORD PTR _x1$[ebp]
    push    eax
    push    OFFSET ??_C@_0BA@DNLGAHKG@?$CFlf?5?$CFlf?5?$CFlf?5?$CFlf?$AA@
    call    _scanf
    add esp, 20                 ; 00000014H
; Line 10
    movsd   xmm0, QWORD PTR _y2$[ebp]
    subsd   xmm0, QWORD PTR _y1$[ebp]
    movsd   xmm1, QWORD PTR _x2$[ebp]
    subsd   xmm1, QWORD PTR _x1$[ebp]
    divsd   xmm0, xmm1
    movsd   QWORD PTR _k$[ebp], xmm0
; Line 11
    movsd   xmm0, QWORD PTR _x2$[ebp]
    mulsd   xmm0, QWORD PTR _y1$[ebp]
    movsd   xmm1, QWORD PTR _x1$[ebp]
    mulsd   xmm1, QWORD PTR _y2$[ebp]
    subsd   xmm0, xmm1
    movsd   xmm1, QWORD PTR _x2$[ebp]
    subsd   xmm1, QWORD PTR _x1$[ebp]
    divsd   xmm0, xmm1
    movsd   QWORD PTR _b$[ebp], xmm0
; Line 13
    sub esp, 8
    movsd   xmm0, QWORD PTR _b$[ebp]
    movsd   QWORD PTR [esp], xmm0
    sub esp, 8
    movsd   xmm0, QWORD PTR _k$[ebp]
    movsd   QWORD PTR [esp], xmm0
    push    OFFSET ??_C@_0BE@OIDPLENA@Line?3?5?$CFlf?5?$CK?5x?5?$CL?5?$CFlf?$AA@
    call    _printf
    add esp, 20                 ; 00000014H
; Line 14
    mov esi, esp
    call    DWORD PTR __imp___getch
    cmp esi, esp
    call    __RTC_CheckEsp
; Line 15
    xor eax, eax
    push    edx
    mov ecx, ebp
    push    eax
    lea edx, DWORD PTR $LN8@main
    call    @_RTC_CheckStackVars@8
    pop eax
    pop edx
    pop edi
    pop esi
    pop ebx
    mov ecx, DWORD PTR __$ArrayPad$[ebp]
    xor ecx, ebp
    call    @__security_check_cookie@4
    add esp, 292                ; 00000124H
    cmp ebp, esp
    call    __RTC_CheckEsp
    mov esp, ebp
    pop ebp
    ret 0
$LN8@main:
    DD  4
    DD  $LN7@main
$LN7@main:
    DD  -16                 ; fffffff0H
    DD  8
    DD  $LN3@main
    DD  -32                 ; ffffffe0H
    DD  8
    DD  $LN4@main
    DD  -48                 ; ffffffd0H
    DD  8
    DD  $LN5@main
    DD  -64                 ; ffffffc0H
    DD  8
    DD  $LN6@main
$LN6@main:
    DB  121                 ; 00000079H
    DB  50                  ; 00000032H
    DB  0
$LN5@main:
    DB  120                 ; 00000078H
    DB  50                  ; 00000032H
    DB  0
$LN4@main:
    DB  121                 ; 00000079H
    DB  49                  ; 00000031H
    DB  0
$LN3@main:
    DB  120                 ; 00000078H
    DB  49                  ; 00000031H
    DB  0
_main   ENDP
_TEXT   ENDS
_TEXT   SEGMENT
__ArgList$ = -20                    ; size = 4
__Result$ = -8                      ; size = 4
__Format$ = 8                       ; size = 4
Некоторый кусок кода я заменил на следующее(преподаватель на это намекнул сам):
Assembler
1
2
3
4
5
6
7
_b$ dq ?                        ; size = 8
_k$ dq ?                        ; size = 8
_y2$ dq ?                       ; size = 8
_x2$ dq ?                       ; size = 8
_y1$ dq ?                       ; size = 8
_x1$ dq ?                       ; size = 8
__$ArrayPad$ dd ?                   ; size = 4
Но после он сказал, что нужно вот это на что то заменить
Assembler
1
2
3
4
5
_TEXT   SEGMENT
....
...
_TEXT   ENDS
_TEXT   SEGMENT
а вот это
Assembler
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
$LN8@main:
    DD  4
    DD  $LN7@main
$LN7@main:
    DD  -16                 ; fffffff0H
    DD  8
    DD  $LN3@main
    DD  -32                 ; ffffffe0H
    DD  8
    DD  $LN4@main
    DD  -48                 ; ffffffd0H
    DD  8
    DD  $LN5@main
    DD  -64                 ; ffffffc0H
    DD  8
    DD  $LN6@main
$LN6@main:
    DB  121                 ; 00000079H
    DB  50                  ; 00000032H
    DB  0
$LN5@main:
    DB  120                 ; 00000078H
    DB  50                  ; 00000032H
    DB  0
$LN4@main:
    DB  121                 ; 00000079H
    DB  49                  ; 00000031H
    DB  0
$LN3@main:
    DB  120                 ; 00000078H
    DB  49                  ; 00000031H
    DB  0
нужно заменить на
Assembler
1
2
mov eax 4cooh
int 21h
Вопрос, что делать с _TEXT SEGMENT, и правильно ли я понял, что нужно заменить это
Assembler
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
$LN8@main:
    DD  4
    DD  $LN7@main
$LN7@main:
    DD  -16                 ; fffffff0H
    DD  8
    DD  $LN3@main
    DD  -32                 ; ffffffe0H
    DD  8
    DD  $LN4@main
    DD  -48                 ; ffffffd0H
    DD  8
    DD  $LN5@main
    DD  -64                 ; ffffffc0H
    DD  8
    DD  $LN6@main
$LN6@main:
    DB  121                 ; 00000079H
    DB  50                  ; 00000032H
    DB  0
$LN5@main:
    DB  120                 ; 00000078H
    DB  50                  ; 00000032H
    DB  0
$LN4@main:
    DB  121                 ; 00000079H
    DB  49                  ; 00000031H
    DB  0
$LN3@main:
    DB  120                 ; 00000078H
    DB  49                  ; 00000031H
    DB  0
на это

Assembler
1
2
mov eax 4cooh
int 21h
Большое спасибо за помощь(начинающий в ассемблере)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.09.2018, 17:52
Ответы с готовыми решениями:

Много следов вирусов
Добрый день. Сегодня обнаружил проблему с интернетом у родителей, постоянно обрывается связь, было много рекламы, лечил с помощью...

обнаружение следов измены)
Ситуация такова.. подозреваю что жена переписывается с одним человеком. Но ни каких следов переписки на ее айфоне найти не могу(. Есть ли...

Как не оставлять следов в сети?
Добрый день! Некоторое время назад обратила внимание, что реклама все чаще в браузерах стала подсовывать мне то, что я однажды уже...

10
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
12.09.2018, 17:58
Цитата Сообщение от Stas73rus Посмотреть сообщение
Вопрос, что делать с _TEXT SEGMENT, и правильно ли я понял, что нужно заменить это
Для начала нужно определиться, программа у вас для Windows или для DOS?
Далее, от "следов" Си вы не избавились и не избавитесь никогда ввиду наличия вызовов сишных стандартных функций:
Цитата Сообщение от Stas73rus Посмотреть сообщение
call DWORD PTR __imp___getch
У меня такое чувство, что вам изначально было задано сделать на ассемблере, но вы решили "нагнуть систему" и пойти по "простому пути", и в итоге получили то что получили, и что уже не переделать.
1
0 / 0 / 0
Регистрация: 04.11.2016
Сообщений: 42
12.09.2018, 18:30  [ТС]
Спасибо за ответ! Программа для Windows, задание заключалось в следующем: написать программу на си, перевести в ассемблерный код и дальше этот код оптимизировать. Вопрос таков, что можно сделать с _TEXT SEGMENT? Преподаватель его подчеркнул и я не знаю, что с ним делать

Добавлено через 3 минуты
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
Для начала нужно определиться, программа у вас для Windows или для DOS?
Далее, от "следов" Си вы не избавились и не избавитесь никогда ввиду наличия вызовов сишных стандартных функций:

У меня такое чувство, что вам изначально было задано сделать на ассемблере, но вы решили "нагнуть систему" и пойти по "простому пути", и в итоге получили то что получили, и что уже не переделать.
Спасибо за ответ! Программа для Windows, задание заключалось в следующем: написать программу на си, перевести в ассемблерный код и дальше этот код оптимизировать. Вопрос таков, что можно сделать с _TEXT SEGMENT? Преподаватель его подчеркнул и я не знаю, что с ним делать
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6809 / 2049 / 238
Регистрация: 14.12.2014
Сообщений: 4,300
Записей в блоге: 12
12.09.2018, 18:44
Цитата Сообщение от Stas73rus Посмотреть сообщение
Вопрос таков, что можно сделать с _TEXT SEGMENT?
Убрать 123-ю строку. У вас 2 раза этот сегмент определяется (причём, во второй раз только открывается, но не закрывается).

Добавлено через 39 секунд
Вы хоть пробовали скомпилироавть этот код? Сообщения об ошибках должны навести на какие-то мысли...

Добавлено через 36 секунд
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
от "следов" Си вы не избавились и не избавитесь никогда ввиду наличия вызовов сишных стандартных функций
Ну это спорный вопрос. Я на чистом асме иногда эти функции использую
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
12.09.2018, 19:00
Цитата Сообщение от Stas73rus Посмотреть сообщение
перевести в ассемблерный код и дальше этот код оптимизировать
Скорее всего тут имелось ввиду сделать ассемблерную ВСТАВКУ, в которой считаются k и b, а не то, что вы себе надумали в виде "избавления от следов Си" (т.е. ввод/вывод останется сишным). Либо, второй вариант - полностью сделать ассемблерную программу через WinAPI, но судя по уровню "сложности" задачи, он крайне маловероятен.

Добавлено через 1 минуту
Цитата Сообщение от Jin X Посмотреть сообщение
Вы хоть пробовали скомпилироавть этот код?
Зачем задавать такие наивные вопросы людям, которые вместо компиляции занимаются декомпиляцией?)))
1
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
12.09.2018, 21:06
Цитата Сообщение от Stas73rus Посмотреть сообщение
mov eax 4cooh
И для которых тут две буквы о )))
1
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
12.09.2018, 21:28
Ребята, Вы забыли, что любой компилятор ЯВУ, сперва запускает пролог(предварительные настройки среды), потом передает управление коду юзера, потом эпилог(восстановление начальных настроек).

Если так смотреть, то там, чтобы в нем не прослеживались так называемые «следы» С компиляции, нужно кромсать весь код: пролог-эпилог - след компилятора и при не котором опыте, можно сказать какого(у каждого свой след ).
2
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
12.09.2018, 21:42
Цитата Сообщение от Stas73rus Посмотреть сообщение
ret 0
Так ясно, что вместо этого должно быть push 0 call ExitProcess . Просто там помимо этого еще кромсать и кромсать.
Цитата Сообщение от Stas73rus Посмотреть сообщение
call __RTC_CheckEsp
Цитата Сообщение от Stas73rus Посмотреть сообщение
call @_RTC_CheckStackVars@8
Цитата Сообщение от Stas73rus Посмотреть сообщение
call @__security_check_cookie@4
Я вот даже не знаю это вызовы чего ? Явно чего-то в библиотеке Си из которой была вызвана _main . Ясно, что это тоже надо чикать вместе со всем обрамлением.

Добавлено через 3 минуты
Просто тут или самому все сделать, а этого тупо не хочется, или что ? Посоветовать тс-у вырубать все лишнее из кода налево и направо ? Так он-же боится даже притронуться к нему.
1
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
12.09.2018, 22:11
Цитата Сообщение от Ethereal Посмотреть сообщение
Просто там помимо этого еще кромсать и кромсать.
Так и я об этом, что надо взять код MAIN и запихнуть его в оболочку .CODE, без всяких стековых кадров, перекроить обращение к средствам ОСи. А потом любым ASM'ом, но и тут
Цитата Сообщение от Constantin Cat Посмотреть сообщение
след компилятора и при не котором опыте, можно сказать какого(у каждого свой след ).


MASM, TASM, FASM, или другой *ASM - по разному создают код.
1
0 / 0 / 0
Регистрация: 04.11.2016
Сообщений: 42
13.09.2018, 11:22  [ТС]
Всем спасибо за помощь!)
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 12
13.09.2018, 12:17
Stas73rus, если получилось - расскажите, может пригодится кому-нибудь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.09.2018, 12:17
Помогаю со студенческими работами здесь

Удаление следов использования программы
Здравствуйте, меня интересует такой вопрос, как удалить следы использования программы в одной сессии? Что бы например, попользовался я...

HitmanPro нашел 27 следов заражения
Здравствуйте. Вчера запустил файл, который в спешке принял за нужную программу. Файл начал что-то закачивать с Интернета. Я прервал...

Удаление файла без следов
Здравствуйте! Возникла идея, но не могу найти путь к решению одной проблемы. Вся задумка такова: написать программу, которая по запросу...

Систематическое удаление следов использования MS Office
Приветствую! Прошу подсказать как cmd или bat файлом удалять следы использования microsoft office, а именно: в ветках: ...

Почистить систему от следов USB флешек.
Новые правила в конторе ввели. Проверкой угрожают. :( А можно ли как то увидеть что к компьютеру раньше подключалась флешка? И как убрать...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru