Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.64
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
#1

Можно ли посмотреть, что внутри программы ? - C++

11.11.2011, 13:55. Просмотров 3553. Ответов 36
Метки нет (Все метки)

Скачал я программу типа тетрис через winrar. Распаковал в папку, а там только read me и иконка программы. Кликаешь на иконку, программа запускается. Как можно залезть в саму программу, чтобы посмотреть, что у ней внутри?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 13:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли посмотреть, что внутри программы ? (C++):

Можно ли посмотреть что в exe файле??? - C++
У меня есть только exe файл с программой на с++, можно как то просмотреть саму программу(текст)??

Подскажите где можно посмотреть исходники - C++
Подскажите где можно посмотреть исходники законченых программ на С++, активно использующих ООП: инкапсуляцию, наследование и полиморфизм?...

Пустой терминал (в котором можно писать, что угодно) при выполнении программы - C++
Доброго времени суток. Возникла такая проблема. Пробую выполнить программу в geany, на что geany выдает пустой терминал в котором я могу...

Где можно посмотреть функции подключаемых директив? - C++
Здравствуйте. Где можно посмотреть функции подключаемых директив? Спасибо.

Где можно посмотреть коды шаблонов STL? - C++
Не подскажите где можно посмотреть коды шаблонов stl. То есть конкретно код реализации шаблона sort например.

ГУИ как посмотреть исполнение программы? - C++
Здорова! Как сделать чтобы было удобно в mfc просматривать что выводится на экран так же как в консольном приложении? Например я каждый раз...

36
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
11.11.2011, 15:56 #16
sergey.shuvalov вам уже указали направление на дизассемблеры. Если вы изучали ассемблер, то привыкать долго не будете.
Если у вас есть подозрения, что программа написана на языке С, то попробуйте декомпилятор REC 2.0 . Чистого Сишного кода вы не увидете но со знанием ассемблера вам не составит труда разобрать в каком порядке идут инструкции.
Если ваш тетрис на бейсике, то попробуйте VB decompiler lite

Или второй вариант связаться с автором тетриса и узнать алгоритм
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.11.2011, 16:01 #17
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
А как это сделать и что это даст ?
В настройках отображения папок и научишься отличать иконку от исполняемого файла.
1
DenCHS200
32 / 32 / 1
Регистрация: 07.10.2011
Сообщений: 117
11.11.2011, 16:01 #18
Можно и через отладчик OLLy DEBUGGER влезть,но изучать алгоритм работы через него, не зная ассемблера,действительно, плохая идея.Да и если ассемблер знать - то всё равно сложнее, чем с исходниками работать
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.11.2011, 16:01 #19
Алгоритм тетриса проще нагуглить. Если самому писать влом.
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
11.11.2011, 16:07 #20
Цитата Сообщение от Deviaphan Посмотреть сообщение
Алгоритм тетриса проще нагуглить. Если самому писать влом.
У него наверное космическая тетрис-программа управления полетом МКС, с высокоточными расчетами и со сверхнадежными алгоритмами
0
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
11.11.2011, 16:10  [ТС] #21
У него наверное космическая тетрис-программа управления полетом МКС, с высокоточными расчетами и со сверхнадежными алгоритмами.

Точно.
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
12.11.2011, 10:10 #22
Цитата Сообщение от sergey.shuvalov
Скачал я программу типа тетрис через winrar. Распаковал в папку, а там только read me и иконка программы. Кликаешь на иконку, программа запускается. Как можно залезть в саму программу, чтобы посмотреть, что у ней внутри?
чтобы понять, что у неё внутри, нужны знания
попробуй взять материнскую плату и понять, что у неё внутри
0
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
12.11.2011, 13:00  [ТС] #23
Цитата Сообщение от accept Посмотреть сообщение
чтобы понять, что у неё внутри, нужны знания
попробуй взять материнскую плату и понять, что у неё внутри
Не понять, а посмотреть. Взял пилу, распилил мат. плату и посмотрел, что внутри. Я ищу такую "пилу", чтобы распилить программу и посмотреть, что внутри. Вот один добрый человек посоветовал в качестве "пилы" - дизассемблер.
0
Deviaphan
12.11.2011, 13:11
  #24

Не по теме:

Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Вот один добрый человек посоветовал в качестве "пилы" - дизассемблер.
"Условные Блондинки" так машины чинят.) Откроют капот и смотрят на содержимое.)))

0
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
12.11.2011, 13:34  [ТС] #25
Так у меня же цель ПОСМОТРЕТЬ, а не починить. Если починить, то да, все вы правы. Речь о разных целях. Я хочу посмотреть, чтобы сравнить. Хотя процесс мышления(как я думаю) , это и есть процесс сравнения.( между истина и ложь, с коэффициентом субъективизма от нуля до бесконечности)
0
talis
12.11.2011, 13:36
  #26

Не по теме:

sergey.shuvalov, скажите честно: вы издеваетесь?

0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
12.11.2011, 15:08 #27
Цитата Сообщение от sergey.shuvalov
Не понять, а посмотреть. Взял пилу, распилил мат. плату и посмотрел, что внутри.
Цитата Сообщение от sergey.shuvalov
Вот один добрый человек посоветовал в качестве "пилы" - дизассемблер.
Цитата Сообщение от sergey.shuvalov
Ассемблер лет 25 назад изучал в институте по специальности АСУ. Надо вспомнить.
любой листинг на ассемблере посмотри
поймёшь - значит стоит, не поймёшь - лишняя трата времени (рано ещё)
0
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
12.11.2011, 15:17  [ТС] #28
Цитата Сообщение от accept Посмотреть сообщение
любой листинг на ассемблере посмотри
поймёшь - значит стоит, не поймёшь - лишняя трата времени (рано ещё)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
include '%fasminc%/win32ax.inc'
 
.data
Caption db 'Моя первая программа.',0
Text db 'Всем привет!',0
 
.code
start:
invoke MessageBox,0,Text,Caption,MB_OK
invoke ExitProcess,0
 
.end start
А что ? Код как код.
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
12.11.2011, 15:20 #29
sergey.shuvalov, удачи. она тебе понадобится
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.11.2011, 15:27 #30
Если не использовать комменты то это невозможно будет разобрать.
Пример простой программы Windows с WinApiшным интерфейсом для MASM
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
.386P
.MODEL FLAT, STDCALL
WM_DESTROY  equ 2
WM_CREATE   equ 1
WM_LBUTTONDOWN equ 201h
WM_RBUTTONDOWN equ 204h
CS_VREDRAW  equ 1h
CS_HREDRAW  equ 2h
CS_GLOBALCLASS equ 4000h
WS_OVERLAPPEDWINDOW  equ 000CF0000H
style equ CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLASS
IDI_APPLICATION     equ 32512
IDC_CROSS   equ 32515
SW_SHOWNORMAL   equ  1
 
EXTERN    MessageBoxA@16:NEAR
EXTERN    CreateWindowExA@48: NEAR
EXTERN    DefWindowProcA@16:NEAR
EXTERN    DispatchMessageA@4:NEAR
EXTERN    ExitProcess@4:NEAR
EXTERN    GetMessageA@16:NEAR
EXTERN    GetModuleHandleA@4:NEAR
EXTERN    LoadCursorA@8:NEAR
EXTERN    LoadIconA@8:NEAR
EXTERN    PostQuitMessage@4:NEAR
EXTERN    RegisterClassA@4:NEAR
EXTERN    ShowWindow@8:NEAR
EXTERN    TranslateMessage@4:NEAR
EXTERN    UpdateWindow@4:NEAR
 
includelib e:\masm32\lib\user32.lib
includelib e:\masm32\lib\kernel32.lib
 
MSGSTRUCT  STRUC    
           MSHWND     DD ? 
           MSMESSAGE  DD ? 
           MSWPARAM   DD ? 
           MSLPARAM   DD ? 
           MSTIME     DD ? 
           MSPT       DD ?
MSGSTRUCT ENDS  
 
WNDCLASS  STRUC 
           CLSSTYLE     DD ? 
           CLWNDPROC    DD ?
           CLSCEXTRA    DD ?
           CLWNDEXTRA   DD ? 
           CLSHINSTANCE DD ? 
           CLSHICON     DD ? 
           CLSHCURSOR   DD ? 
           CLBKGROUND   DD ? 
           CLMENUNAME   DD ? 
           CLNAME       DD ?
WNDCLASS  ENDS 
_DATA SEGMENT DWORD PUBLIC USE32 'DATA'
     NEWHWND    DD 0
     MSG        MSGSTRUCT <?>
     WC         WNDCLASS <?>
     HINST       DD 0
     TITLENAME   DB 'Простой пример 32-битного приложения',0
     CLASSNAME   DB 'CLASS32',0
     CAP         DB 'Сообщение',0
     MES1        DB 'Вы нажали левую кнопку мыши',0
     MES2        DB 'Выход из программы!',0
_DATA ENDS 
_TEXT SEGMENT DWORD PUBLIC USE32 'CODE' 
START:
     PUSH  0
     CALL  GetModuleHandleA@4
     MOV   [HINST], EAX
REG_CLASS:
     MOV [WC.CLSSTYLE], style 
     MOV   [WC.CLWNDPROC], OFFSET WNDPROC
     MOV   [WC.CLSCEXTRA], 0
     MOV   [WC.CLWNDEXTRA], 0
     MOV   EAX, [HINST]
     MOV   [WC.CLSHINSTANCE], EAX
    PUSH    IDI_APPLICATION
    PUSH    0
    CALL    LoadIconA@8
    MOV    [WC.CLSHICON], EAX
    PUSH   IDC_CROSS
    PUSH   0
    CALL   LoadCursorA@8
    MOV    [WC.CLSHCURSOR], EAX
    MOV    [WC.CLBKGROUND], 17
    MOV    DWORD PTR [WC.CLMENUNAME],0
    MOV    DWORD PTR [WC.CLNAME], OFFSET  CLASSNAME
    PUSH   OFFSET WC
    CALL   RegisterClassA@4
    PUSH   0
    PUSH   [HINST]
    PUSH   0
    PUSH   0
    PUSH   400 
    PUSH   400
    PUSH   100
    PUSH   100 
    PUSH   WS_OVERLAPPEDWINDOW
    PUSH      OFFSET TITLENAME 
    PUSH      OFFSET CLASSNAME  
    PUSH   0
    CALL    CreateWindowExA@48
    CMP        EAX,0
    JZ    _ERR
    MOV   [NEWHWND], EAX 
;------------------------------------
    PUSH  SW_SHOWNORMAL
    PUSH  [NEWHWND]
    CALL  ShowWindow@8  
;------------------------------------
    PUSH  [NEWHWND]
    CALL UpdateWindow@4
MSG_LOOP:
    PUSH 0
    PUSH 0
    PUSH 0
    PUSH OFFSET MSG
    CALL GetMessageA@16
    CMP  EAX, 0
    JE   END_LOOP
    PUSH  OFFSET MSG
    CALL TranslateMessage@4
    PUSH OFFSET MSG
    CALL DispatchMessageA@4
    JMP  MSG_LOOP 
END_LOOP: 
    PUSH  [MSG.MSWPARAM]
    CALL ExitProcess@4 
_ERR:
    JMP  END_LOOP
;-----------------------------------------
WNDPROC PROC
        PUSH EBP
        MOV  EBP, ESP
        PUSH  EBX
        PUSH ESI
        PUSH EDI
        CMP  DWORD PTR [EBP+0CH], WM_DESTROY
        JE   WMDESTROY
        CMP  DWORD PTR [EBP+0CH], WM_CREATE
        JE   WMCREATE
        CMP  DWORD PTR   [EBP+0CH],WM_LBUTTONDOWN  
        JE   LBUTTON
        CMP  DWORD PTR   [EBP+0CH],WM_RBUTTONDOWN 
        JE   RBUTTON
        JMP  DEFWNDPROC
RBUTTON:
        JMP  WMDESTROY 
 
LBUTTON: 
        PUSH 0 ;МВ_ОК
        PUSH OFFSET CAP
        PUSH OFFSET MES1
        PUSH DWORD PTR [EBP+08H]
        CALL MessageBoxA@16
        MOV  EAX,0
        JMP  FINISH
WMCREATE:   
        MOV  EAX,0
        JMP  FINISH
DEFWNDPROC: 
        PUSH DWORD PTR [EBP+14H]
        PUSH DWORD PTR [EBP+10H]
        PUSH DWORD PTR [EBP+0CH]
        PUSH DWORD PTR [EBP+08H]
        CALL DefWindowProcA@16
        JMP  FINISH
WMDESTROY:  
        PUSH 0  ;MB_OK
        PUSH OFFSET CAP
        PUSH OFFSET MES2
        PUSH DWORD PTR [EBP+08H] 
        CALL MessageBoxA@16
        PUSH 0
        CALL PostQuitMessage@4 
        MOV  EAX, 0
FINISH: 
        POP  EDI
        POP  ESI
        POP  EBX
        POP  EBP
        RET  16
WNDPROC ENDP
_TEXT   ENDS    
        END START
Это ж каждую функцию расписывать на пуши попы мувы коллы джампы
1
12.11.2011, 15:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2011, 15:27
Привет! Вот еще темы с ответами:

Как посмотреть результат выполненной программы - C++
Привет! Чувствую себя идиоткой, но всё-же: Как сделать, чтобы в dev-C++ v.4.9.9.2 посмотреть результат выполненной программы? Написать-то...

strtok_s где можно посмотреть сам принцип функции - C++
на этой странице http://translate.google.com/translate?langpair=auto%7Cru&amp;u=http://msdn.microsoft.com/en-us/library/ftsafwz3.aspx ...

Можно ли Хорошо посмотреть информацию о графическом файле в разных библиотеках? - C++
Есть имя (понятно с правильным путем, но это неважно). Надо узнать Размер этого графического файла. Разумеется можно файл Прочесть и для...

Можно ли посмотреть в нормальном виде описание STL методов и функций? - C++
Допустим, мне нужно посмотреть, какие члены-функции есть в библиотеке &lt;vector&gt;. Чтобы это сделать, я создаю какой-нибудь вектор, вызываю,...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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