Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 7

проанализировать исполняемый файл

03.07.2011, 01:42. Показов 4157. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, Друзья! Очень надеюсь на Вашу помощь!

У меня такая просьба:
Необходимо проанализировать исполняемый файл и подать ему на вход
такие данные, чтобы программа вывела строку "privet!" в консоль.
Исполняемый файл изменять нельзя (ни на диске, ни в памяти).
Конечным результатом должно являться описание способа, с
помощью которого Вы это сделаете.

Прошу! Помогите!
Вложения
Тип файла: rar test1.rar (570 байт, 35 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2011, 01:42
Ответы с готовыми решениями:

Запись в исполняемый файл
Нужен пример на ассемблере записи в исполняемый файл.

Не появляется исполняемый файл
Не появляется исполняемый файл.. Почему? Задание: Составить программу установки размера/формы курсора и подавления курсора...

[Masm32] Добавление иконки в исполняемый файл
как добавить иконку в эксе файл через линковку компиляцию

20
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
03.07.2011, 01:44
TrueBlond, где исходник?
0
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 7
03.07.2011, 01:51  [ТС]
без исходника, есть дезассемблированный листинг

Добавлено через 6 минут
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
Segment type: Pure code
.text:00401000 ; Segment permissions: Read/Execute
.text:00401000 _text           segment para public 'CODE' use32
.text:00401000                 assume cs:_text
.text:00401000                 ;org 401000h
.text:00401000                 assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
.text:00401000 ; void byte_401000
.text:00401000 byte_401000     db 51h                  ; DATA XREF: start+58o
.text:00401000                                         ; start+5Fo
.text:00401001 ; ---------------------------------------------------------------------------
.text:00401001                 push    0
.text:00401003                 lea     eax, [esp+4]
.text:00401007                 push    eax
.text:00401008                 push    2
.text:0040100A                 push    offset unk_402020
.text:0040100F                 push    0FFFFFFF5h
.text:0040100F ; ---------------------------------------------------------------------------
.text:00401011 aD              db '¦D$'
.text:00401014                 db  14h
.text:00401015                 db    0
.text:00401016                 db    0
.text:00401017                 db    0
.text:00401018                 db    0
.text:00401019 ; ---------------------------------------------------------------------------
.text:00401019                 call    ds:GetStdHandle
.text:0040101F                 push    eax
.text:00401020                 call    ds:WriteFile
.text:00401026                 push    0
.text:00401028                 call    ds:ExitProcess
.text:00401028 ; ---------------------------------------------------------------------------
.text:0040102E                 db 0CCh ; ¦
.text:0040102F                 db 0CCh ; ¦
.text:00401030
.text:00401030 ; --------------- S U B R O U T I N E ---------------------------------------
.text:00401030
.text:00401030
.text:00401030 nullsub_1       proc near               ; DATA XREF: start+53o
.text:00401030                 retn
.text:00401030 nullsub_1       endp
.text:00401030
.text:00401030 ; ---------------------------------------------------------------------------
.text:00401031                 align 10h
.text:00401040
.text:00401040 ; --------------- S U B R O U T I N E ---------------------------------------
.text:00401040
.text:00401040
.text:00401040                 public start
.text:00401040 start           proc near
.text:00401040
.text:00401040 NumberOfBytesRead= dword ptr -4
.text:00401040
.text:00401040                 push    ecx             ; lpOverlapped
.text:00401041                 lea     eax, [esp+4+NumberOfBytesRead]
.text:00401044                 push    eax             ; lpflOldProtect
.text:00401045                 push    40h             ; flNewProtect
.text:00401047                 push    2800h           ; dwSize
.text:0040104C                 push    offset Address  ; lpAddress
.text:00401051                 mov     [esp+14h+NumberOfBytesRead], 0
.text:00401059                 call    ds:VirtualProtect
.text:0040105F                 push    0               ; lpOverlapped
.text:00401061                 lea     ecx, [esp+8+NumberOfBytesRead]
.text:00401065                 push    ecx             ; lpNumberOfBytesRead
.text:00401066                 push    2800h           ; nNumberOfBytesToRead
.text:0040106B                 push    offset Address  ; lpBuffer
.text:00401070                 push    0FFFFFFF6h      ; lpBuffer
.text:00401072                 call    ds:GetStdHandle
.text:00401072 ; ---------------------------------------------------------------------------
.text:00401078 aP              db 'P'                  ; hFile
.text:00401079 ; ---------------------------------------------------------------------------
.text:00401079                 call    ds:ReadFile
.text:0040107F                 test    eax, eax
.text:00401081                 jnz     short loc_40108B
.text:00401083                 push    0FFFFFFFFh      ; uExitCode
.text:00401085                 call    ds:ExitProcess
.text:0040108B
.text:0040108B loc_40108B:                             ; CODE XREF: start+41j
.text:0040108B                 mov     eax, [esp+4+NumberOfBytesRead]
.text:0040108E                 cmp     eax, 0Ah
.text:00401091                 jnb     short loc_4010BA
.text:00401093                 mov     edx, offset nullsub_1
.text:00401098                 sub     edx, offset byte_401000
.text:0040109E                 push    edx             ; size_t
.text:0040109F                 push    offset byte_401000 ; void *
.text:004010A4                 push    offset Address  ; void *
.text:004010A9                 call    memcpy
.text:004010AE                 add     esp, 0Ch
.text:004010B1                 mov     edx, offset Address
.text:004010B6                 call    edx ; Address
.text:004010B8                 pop     ecx
.text:004010B9                 retn
.text:004010BA ; ---------------------------------------------------------------------------
.text:004010BA
.text:004010BA loc_4010BA:                             ; CODE XREF: start+51j
.text:004010BA                 push    esi
.text:004010BB                 lea     esi, Address[eax]
.text:004010C1                 mov     eax, 403002h
.text:004010C6
.text:004010C6 loc_4010C6:                             ; CODE XREF: start+9Aj
.text:004010C6                 mov     cl, [eax+1]
.text:004010C9                 mov     dl, [eax-2]
.text:004010CC                 mov     [eax-2], cl
.text:004010CF                 mov     [eax+1], dl
.text:004010D2                 add     eax, 4
.text:004010D5                 lea     ecx, [eax-2]
.text:004010D8                 cmp     ecx, esi
.text:004010DA                 jbe     short loc_4010C6
.text:004010DC                 pop     esi
.text:004010DD                 mov     edx, offset Address
.text:004010E2                 call    edx ; Address
.text:004010E4                 pop     ecx
.text:004010E5                 retn
.text:004010E5 start           endp
.text:004010E5
.text:004010E6
.text:004010E6 ; --------------- S U B R O U T I N E ---------------------------------------
.text:004010E6
.text:004010E6 ; Attributes: thunk
.text:004010E6
.text:004010E6 ; void *__cdecl memcpy(void *,const void *,size_t)
.text:004010E6 memcpy          proc near               ; CODE XREF: start+69p
.text:004010E6                 jmp     ds:__imp_memcpy
.text:004010E6 memcpy          endp
.text:004010E6
0
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
03.07.2011, 01:55
А эта вещь по-круче диссасемблирует, чем мой диссасм...
0
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 7
03.07.2011, 02:10  [ТС]
Вот сам дисассемблер, надеюсь поможет, сама только вчера натолкнулась idafree49.exe
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
03.07.2011, 02:27
TrueBlond, Решается переполнением буфера. То есть входные данные должны являться кодом.
0
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 7
03.07.2011, 02:32  [ТС]
а можно чуть поподробнее? Плиз
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
03.07.2011, 15:18
И так смотрим..
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
00401040 >/$ 51                      PUSH    ECX
00401041  |. 8D0424                  LEA     EAX,DWORD PTR SS:[ESP]
00401044  |. 50                      PUSH    EAX                                        ; /pOldProtect
00401045  |. 6A 40                   PUSH    40                                         ; |NewProtect = PAGE_EXECUTE_READWRITE
00401047  |. 68 00280000             PUSH    2800                                       ; |Size = 2800 (10240.)
0040104C  |. 68 00304000             PUSH    test.00403000                              ; |Address = test.00403000
00401051  |. C74424 10 00000000      MOV     DWORD PTR SS:[ESP+10],0                    ; |
00401059  |. FF15 0C204000           CALL    DWORD PTR DS:[<&KERNEL32.VirtualProtect>]  ; \VirtualProtect
0040105F  |. 6A 00                   PUSH    0                                          ; /pOverlapped = NULL
00401061  |. 8D4C24 04               LEA     ECX,DWORD PTR SS:[ESP+4]                   ; |
00401065  |. 51                      PUSH    ECX                                        ; |pBytesRead
00401066  |. 68 00280000             PUSH    2800                                       ; |BytesToRead = 2800 (10240.)
0040106B  |. 68 00304000             PUSH    test.00403000                              ; |Buffer = test.00403000
00401070  |. 6A F6                   PUSH    -0A                                        ; |/DevType = STD_INPUT_HANDLE
00401072  |. FF15 08204000           CALL    DWORD PTR DS:[<&KERNEL32.GetStdHandle>]    ; |\GetStdHandle
00401078  |. 50                      PUSH    EAX                                        ; |hFile
00401079  |. FF15 04204000           CALL    DWORD PTR DS:[<&KERNEL32.ReadFile>]        ; \ReadFile
0040107F  |. 85C0                    TEST    EAX,EAX
00401081  |. 75 08                   JNZ     SHORT test.0040108B
00401083  |. 6A FF                   PUSH    -1                                         ; /ExitCode = FFFFFFFF
00401085  |. FF15 10204000           CALL    DWORD PTR DS:[<&KERNEL32.ExitProcess>]     ; \ExitProcess
0040108B  |> 8B0424                  MOV     EAX,DWORD PTR SS:[ESP]
0040108E  |. 83F8 0A                 CMP     EAX,0A
00401091  |. 73 27                   JNB     SHORT test.004010BA
00401093  |. BA 30104000             MOV     EDX,test.00401030
00401098  |. 81EA 00104000           SUB     EDX,test.00401000
Сначала настраивается область памяти на запись и выполнение..
Assembler
1
2
3
4
5
6
00401044  |. 50                      PUSH    EAX                                        ; /pOldProtect
00401045  |. 6A 40                   PUSH    40                                         ; |NewProtect = PAGE_EXECUTE_READWRITE
00401047  |. 68 00280000             PUSH    2800                                       ; |Size = 2800 (10240.)
0040104C  |. 68 00304000             PUSH    test.00403000                              ; |Address = test.00403000
00401051  |. C74424 10 00000000      MOV     DWORD PTR SS:[ESP+10],0                    ; |
00401059  |. FF15 0C204000           CALL    DWORD PTR DS:[<&KERNEL32.VirtualProtect>]  ; \VirtualProtect
Потом читается из стандартного потока ввода 10 килобайт
Assembler
1
2
3
4
5
6
7
00401065  |. 51                      PUSH    ECX                                        ; |pBytesRead
00401066  |. 68 00280000             PUSH    2800                                       ; |BytesToRead = 2800 (10240.)
0040106B  |. 68 00304000             PUSH    test.00403000                              ; |Buffer = test.00403000
00401070  |. 6A F6                   PUSH    -0A                                        ; |/DevType = STD_INPUT_HANDLE
00401072  |. FF15 08204000           CALL    DWORD PTR DS:[<&KERNEL32.GetStdHandle>]    ; |\GetStdHandle
00401078  |. 50                      PUSH    EAX                                        ; |hFile
00401079  |. FF15 04204000           CALL    DWORD PTR DS:[<&KERNEL32.ReadFile>]        ; \ReadFile
Кстати этот поток можно подменить на нужный файл с кодом.. Смотреть STARTUPINFO

После того как что будет прочитано или введено вручную в консоль (Я просто ввел qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqq )
попадем сюда
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
004010BA  |> 56                      PUSH    ESI
004010BB  |. 8DB0 00304000           LEA     ESI,DWORD PTR DS:[EAX+403000]
004010C1  |. B8 02304000             MOV     EAX,test.00403002                          ;  ASCII "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",LF,"q",CR,"q"
004010C6  |> 8A48 01                 MOV     CL,BYTE PTR DS:[EAX+1]
004010C9  |. 8A50 FE                 MOV     DL,BYTE PTR DS:[EAX-2]
004010CC  |. 8848 FE                 MOV     BYTE PTR DS:[EAX-2],CL
004010CF  |. 8850 01                 MOV     BYTE PTR DS:[EAX+1],DL
004010D2  |. 83C0 04                 ADD     EAX,4
004010D5  |. 8D48 FE                 LEA     ECX,DWORD PTR DS:[EAX-2]
004010D8  |. 3BCE                    CMP     ECX,ESI
004010DA  |.^76 EA                   JBE     SHORT test.004010C6
004010DC  |. 5E                      POP     ESI
004010DD  |. BA 00304000             MOV     EDX,test.00403000                          ;  ASCII "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",LF,"q",CR,"q"
004010E2  |. FFD2                    CALL    EDX                                        ;  test.00403000
004010E4  |. 59                      POP     ECX
004010E5  \. C3                      RETN
Здесь есть интересная строка, которая передаст управление на адрес test.00403000
Assembler
1
004010E2  |. FFD2                    CALL    EDX                                        ;  test.00403000
По адресу test.00403000
У нас лежит вот это (наша введенная строка)
Assembler
1
2
3
4
5
00403000  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
00403010  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
00403020  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71  qqqqqqqqqqqqqqqq
00403030  0A 71 0D 71 00 00 00 00 00 00 00 00 00 00 00 00  .q.q............
00403040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Когда этот код начнет выполнятся, наша программа умрет попросту. Но еслиб мы ввели вот такую строку
Assembler
1
2
3
4
00403000  51 6A 00 8D 44 24 04 50 6A 08 68 30 30 40 00 6A  Qj.ЌD$Pjh00@.j
00403010  F5 C7 44 24 14 00 00 00 00 FF 15 08 20 40 00 50  хЗD$....я @.P
00403020  FF 15 00 20 40 00 6A 00 FF 15 10 20 40 00 90 90  я. @.j.я @.ђђ
00403030  50 52 49 56 45 54 21 00 90 90 90 90 90 90 90 90  PRIVET!.ђђђђђђђђ
То код бы успешно выполнился.. И после
Assembler
1
004010E2  |. FFD2                    CALL    EDX                                        ;  test.00403000
Попали б сюда
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
00403000   51                        PUSH    ECX                                        ; test.00403038
00403001   6A 00                     PUSH    0
00403003   8D4424 04                 LEA     EAX,DWORD PTR SS:[ESP+4]
00403007   50                        PUSH    EAX
00403008   6A 08                     PUSH    8
0040300A   68 30304000               PUSH    test.00403030                              ; ASCII "PRIVET!"
0040300F   6A F5                     PUSH    -0B
00403011   C74424 14 00000000        MOV     DWORD PTR SS:[ESP+14],0
00403019   FF15 08204000             CALL    DWORD PTR DS:[<&KERNEL32.GetStdHandle>]    ; kernel32.GetStdHandle
0040301F   50                        PUSH    EAX
00403020   FF15 00204000             CALL    DWORD PTR DS:[<&KERNEL32.WriteFile>]       ; kernel32.WriteFile
00403026   6A 00                     PUSH    0
00403028   FF15 10204000             CALL    DWORD PTR DS:[<&KERNEL32.ExitProcess>]     ; kernel32.ExitProcess
0040302E   90                        NOP
0040302F   90                        NOP
00403030   50                        PUSH    EAX
00403031   52                        PUSH    EDX
00403032   49                        DEC     ECX
00403033   56                        PUSH    ESI
00403034   45                        INC     EBP
00403035   54                        PUSH    ESP
00403036   2100                      AND     DWORD PTR DS:[EAX],EAX
И в итоге на экране увидели надпись "PRIVET!" =))
2
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 7
03.07.2011, 16:08  [ТС]
Цитата Сообщение от ISergey Посмотреть сообщение
00403000 51 6A 00 8D 44 24 04 50 6A 08 68 30 30 40 00 6A Qj.ЌD$Pjh00@.j 00403010 F5 C7 44 24 14 00 00 00 00 FF 15 08 20 40 00 50 хЗD$....я @.P 00403020 FF 15 00 20 40 00 6A 00 FF 15 10 20 40 00 90 90 я. @.j.я @.ђђ 00403030 50 52 49 56 45 54 21 00 90 90 90 90 90 90 90 90 PRIVET!.ђђђђђђђђ
Подскажите пожалуйста еще раз, что нужно ввести, чтобы не было абракадабры?
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
03.07.2011, 16:11
Можно проще:
Assembler
1
2
3
4
5
00403000   6A 00            PUSH 0
00403002   68 1B304000      PUSH test.0040301B                       ; ASCII "qqqqqqqqqqqqqqqqq"
00403007   6A 08            PUSH 8
00403009   68 13304000      PUSH test.00403013                       ; ASCII "privet!qqqqqqqqqqqqqqqqqq"
0040300E  -E9 FCDFFFFF      JMP test.0040100F
или
Assembler
1
2
3
4
00403000  6A 00 68 1B 30 40 00 6A  j.h0@.j
00403008  08 68 13 30 40 00 E9 FC  h0@.йь
00403010  DF FF FF 70 72 69 76 65  Яяяprive
00403018  74 21                    t!
Только следует помнить, что вводить код нужно в другой последовательности. Перед запуском в введенной последовательности в каждом двойном слове меняются местами первый и последний байты.
1
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 7
03.07.2011, 16:36  [ТС]
пишу в окне консоли privet!qqqqqqqqqqqqqqqqqq - в результате выдает ошибку и программа закрывается

Добавлено через 6 минут
[quote=alexcoder;1814762]ожно проще:
сам файл менять нельзя, что же написать в консоли?

Добавлено через 5 минут
[quote=alexcoder;1814762]ожно проще:
сам файл менять нельзя, что же написать в консоли?

Добавлено через 11 минут
[quote=alexcoder;1814762]ожно проще:
сам файл менять нельзя, что же написать в консоли?
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
03.07.2011, 20:24
[quote=TrueBlond;1814769]
Цитата Сообщение от alexcoder Посмотреть сообщение
ожно проще:
сам файл менять нельзя, что же написать в консоли?
Я ведь сказал что
Цитата Сообщение от ISergey Посмотреть сообщение
Смотреть STARTUPINFO
Тоесть пишешь новое приложение в котором меняешь хендл
C
1
  HANDLE hStdInput;
на хендл файла с кодом, а потом CreateProcess этого тестового процесса.
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
03.07.2011, 21:19
Вообще-то можно код, который вводится в буфер 403000h перекодировать в ASCII и ввести в консоли, правда там куча непечатных символов создают проблемы, но насколько мне известно, в консоль можно почти все 255 значений, за исключением символа перевода строки 0dh. В моем варианте его нет, так что остается только помучиться с перекодировкой буфера в ASCII.
З.Ы. Да и Сергей говорит дело, в условии не сказано, что нельзя создавать свое приложение
1
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
03.07.2011, 22:16
alexcoder, Я другого выхода не вижу просто.. Как ноль ввести? ('\0') ..
1
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
03.07.2011, 22:18
ctrl+2
работает))
я не смог ввести только 0dh.
Но у меня его нет.
1
0 / 0 / 0
Регистрация: 03.07.2011
Сообщений: 7
03.07.2011, 22:38  [ТС]
Большое спасибо за помощь, одна беда, что в итоге надо ввести в консоли, чтобы сразу сработало без перекодировки, а то постоянно на любой ввод выдает ошибку, что приложение будет закрыто...
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
05.07.2011, 15:04
ISergey, по моему ты не прав, переполнение тут не к чему, а представленный код возможно и будет работать, но только когда воспользуешься отладчиком(твой код не проверял)
т.к. если его просто вставить, то при записи в буфер теряется более половины кода, из-за того что функция [ReadFile] удалит все непечатные символы - [0 - 1b и 80 - ff],
и кстати эта функция принимает не 10 символов, а сколько впечатаешь, там просто проверка на 10, типа если удовлетворяет то выведет [OK] и всё, иначе следует работа
с принятыми символами т.е. 0 и 3 меняются местами и т.д все символы, далее программа передаёт управление на буфер ну и конечно если там беспорядочный код то всё,
прога вылетает.

вот мой вариант решения:
1)на консоли настроить управление мышкой
2)скопировать из файла текст
3)вставить нажатием правой кнопки мышки
и всё ... по крайней мере у меня результат выводит вместо [OK]
и запустить это дело, лучше в CMD, чтобы увидеть результат, иначе при нажатии ENTER вы его можете пропустить.

P.S.: Если кому-то интересно, то могу разъяснить как всё сделано.
Вложения
Тип файла: rar key.rar (172 байт, 23 просмотров)
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
05.07.2011, 18:31
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
функция [ReadFile] удалит все непечатные символы - [0 - 1b и 80 - ff]
Сомневаюсь что будет модификация.. (Потом проверю)
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
и кстати эта функция принимает не 10 символов
Я писал 10 Килобайт.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
05.07.2011, 21:11
Ага, и здесь тоже эта тема есть.
Особо не мучаясь, я старался, чтобы не было \0, \r и \n, на остальное пофиг. Копируется вроде нормально прямо отсюда в консоль, но на всякий случай в файле ещё. ReadFile символы не портит, это же не C, тут все файлы бинарные.
Н└P3P$♦DB•ЛjD3B@3BL3BP3BX3BT↔g55ЄfБ" R P☼---├----vrip-t!eDone_by_Somebody_at_www.cyberforum.ru
Вложения
Тип файла: txt test-bin.txt (93 байт, 15 просмотров)
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
05.07.2011, 21:46
ISergey, извиняй не внимателен (10 кб так и есть).
Somebody, если бы не было изменения буфера, то саму последовательность можно было бы сократить раза в 2, по сравнению с твоей, так в начале я и пытался, а потом смотрю чё та ваще не то что я писал и вот такой у меня вывод о этой функции, если интересно проверить скопируй в test.exe все 256 символов за иск [0dh,0ah и 0] и проверь, а то может у меня партак?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2011, 21:46
Помогаю со студенческими работами здесь

Добавить секцию кода в исполняемый файл. Редактирование PE заголовка
Ребят, я уже не знаю что с ним сделать. Мне надо свой код добавить в чужой ехе-шник, а места не хватает, надо расширить секцию кода,...

Каким компилятором лучше собрать исполняемый файл, минимальный по весу?
на каком компиляторе лучше собрать исполняемый файл, минимальный по весу? собственно весь вопрос в названии темы

Проанализировать файл и узнать что это за файл
Всем привет. Стоит такая задача: Проанализировать файл (он может быть без формата) и узнать что ето за файл и что в нем(текст,...

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

Как включить txt файл в исполняемый файл?
Подскажите плиз как решить проблему, суть такова: в txt файле имеется таблица (разделитель - знак табуляции). Требуется зашить её внутрь...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru