Исходный код раскрыть невозможно если для этого постарались обеспечить безопасность (особенно если это фирменная вещь).
Но есть способы полностью или частично раскрыть код.
- IDA Pro — самый лучший из безплатных взломщиков, некоторые макросы возможно позволяют преобразовать код назад. Но не всегда. Особо хорошо раскрываются borland-продукты.
Hiew.Exe
бесплатная утилита, очень маленькая, позволяет править код на языке ассемблера. Можно править текстовые и целые константы. Можно ею даже сделать «перевод» программы на другой язык, затереть имя фирмы и т.п.- Если есть PDB-файл, или подшита debug-info к файлу то код можно получить в среде разработки (если debug-info полная) редко можно использовать. Исходный код получить нельзя, но можно получить «номера строк и имена исходников», а так же имена/значения всех констант, локальных переменных, избежать «раздроблености функций» а так же получить классы с начинкой класса (почти все структуры кроме текста программы) что значительно упростит понимание работы программы. Для некоторых библиотек (dll) pdb-файлы можно скачать отдельно. Врядли уважающая себя фирма допустит утечку pdb своего стоящего продукта.
- Debug info, существует DebugInfo-информация встроеная в exe. Если есть такая информация, и соответствующая утилита (Например на Borland Delphi собран, и он есть в наличии), то можно сделать аналогичное предыдущему пункту. Но врядли уважающая себя фирма допустит такую «глупую» ошибку (аналогично pdb).
- Если файл написан на с# его можно почти полностью просмотреть в кодах с помощью disSharp (такие программы «подключают» в таблице импорта лишь mscorlib и всё). DisSharp плохо дизассемблирует некоторые части программы, но возможно его платная версия или платная версия подобных утилит раскрывает код лучше.
- Если файл написан на FoхPro, clipper и других подобный байт-кодовых языках — он раскрывается спец-утилитами (Refox например).
- Утилита
exescope.exe
ResourceHacker.exe
и её-подобные утилиты позволяют смотреть шапку, подключенные библиотеки (по ним можно понять на чём писана программа) и редактировать ресурсы программы (ресурс-формы в.т.ч. delphi, иконки, картинки, таблицы ресурсо-строк). - Если извесно чем создан код — думаю есть специальные утилиты способные его раскрыть (они платные и малодоступные).
Опять-же, это при условии что нету паковщика кода (тогда нужно сначала применить депаковщик), шифровальщика/самомодифицирующегося кода. Если не разбит обфускатором так что не распутать. Чем больше код — тем сложнее разобраться.
P.S. Лично моё мнение — раскрывается-взламывается всё, но на это нужно потратить много-много времени. Возможно год и более (зависит от опыта и инструментов, в свободном доступе хороших инструментов нету).
Как посмотреть код программы
Программы делятся на открытые и закрытые. В первом случае для всех пользователей интернета доступно скачивание ее исходного кода с официального сайта и других ресурсов, во втором – код системы закрыт и его просмотр нарушает правила пользования программным обеспечением.
Вам понадобится
- — декомпилятор;
- — дезассемблер.
Инструкция
Просмотрите исходный код программы при помощи ее исходника. Исходный файл содержит в себе код, написанный программистом при создании программного обеспечения, после этого он компилируется при помощи специальных иснструментов и превращается в файл установки.
Если вами был утерян файл исходного кода, или он недоступен вам по другим причинам, воспользуйтесь специальными программами-декомпиляторами. Также имеются программы-дизассемблеры. Обратите внимание, что просмотр исходного кода зачастую может стать невозможным в случаях, когда вам не известно, какой язык программирования использовался при его разработке.
Если вы хотите найти код свободной программы, выполните поиск в интернете с соответствующим запросом. Также попробуйте скачать данную программу и в ее меню найти пункт «Просмотр исходного кода». Обычно это доступно для бесплатно распространяемых программ.
Будьте осторожны при их использовании, в частности это относится к программам, скачанных не с сайта разработчика, поскольку в исходник может быть заложен вредоносный код, который при установке на ваш компьютер также инсталлирует трояны, клавиатурные шпионы и так далее.
Будьте внимательны при использовании программ-декомпиляторов, поскольку многие разработчики программного обеспечения пользуются специальными программами, которые затрудняют процесс воссоздания исходного кода. Если программа была написана на ассемблере, также принимаются специальные программы.
Средств обратной программной разработки достаточно немало, не используйте их в мошеннических целях или для внесения изменений в программы с закрытым кодом, поскольку зачастую за данные действия предусмотрена определенная ответственность в соответствии с законодательством.
Полезный совет
Не просматривайте код закрытых программ и тем более не вносите в него изменения.
Войти на сайт
или
Забыли пароль?
Еще не зарегистрированы?
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
I’ve got some old Windows executable files. How can I edit them with Visual Studio 2010? What are the ways to see an exe’s source code?
MPelletier
16k15 gold badges86 silver badges136 bronze badges
asked Apr 17, 2010 at 18:37
You can’t get the C++ source from an exe, and you can only get some version of the C# source via reflection.
answered Apr 17, 2010 at 18:41
i_am_jorfi_am_jorf
53.2k15 gold badges128 silver badges220 bronze badges
2
If the program was written in C# you can get the source code in almost its original form using .NET Reflector. You won’t be able to see comments and local variable names, but it is very readable.
If it was written C++ it’s not so easy… even if you could decompile the code into valid C++ it is unlikely that it will resemble the original source because of inlined functions and optimizations which are hard to reverse.
Please note that by reverse engineering and modifying the source code you might breaking the terms of use of the programs unless you wrote them yourself or have permission from the author.
answered Apr 17, 2010 at 18:40
Mark ByersMark Byers
795k188 gold badges1562 silver badges1443 bronze badges
1
If it is native code, you can disassemble it. But you won’t see the original code as written by the programmer. You will see the code produced by the compiler. This code is possibly optimized and although it is semantically equivalent, it can be much harder to read than normal ASM.
If it is bytecode (MSIL or javabytecode), there are decompiler which can product pretty good sourcecode. For .net, this would be reflector.
answered Apr 17, 2010 at 18:40
HenriHenri
5,08521 silver badges24 bronze badges
I would (and have) used IDA Pro to decompile executables. It creates semi-complete code, you can decompile to assembly or C.
If you have a copy of the debug symbols around, load those into IDA before decompiling and it will be able to name many of the functions, parameters, etc.
answered Apr 17, 2010 at 18:43
ssubessube
46.3k7 gold badges101 silver badges139 bronze badges
There’s nothing you can do about it i’m afraid as you won’t be able to view it in a readable format, it’s pretty much intentional and it’ll show the interpreted machine code, there would be no formatting or comments as you normally get in .cs/.c files.
It’s pretty much a hit and miss scenario.
Someone has already asked about it on another website
answered Apr 17, 2010 at 18:42
Jamie KeelingJamie Keeling
9,69717 gold badges65 silver badges100 bronze badges
7
For Any *.Exe file written in any language .You can view the source code with hiew (otherwise Hackers view). You can download it at www.hiew.ru. It will be the demo version but still can view the code.
After this follow these steps:
-
Press alt+f2 to navigate to the file.
-
Press enter to see its assembly / c++ code.
Yogiraj
1,93217 silver badges29 bronze badges
answered May 28, 2014 at 13:14
I’ve got some old Windows executable files. How can I edit them with Visual Studio 2010? What are the ways to see an exe’s source code?
MPelletier
16k15 gold badges86 silver badges136 bronze badges
asked Apr 17, 2010 at 18:37
You can’t get the C++ source from an exe, and you can only get some version of the C# source via reflection.
answered Apr 17, 2010 at 18:41
i_am_jorfi_am_jorf
53.2k15 gold badges128 silver badges220 bronze badges
2
If the program was written in C# you can get the source code in almost its original form using .NET Reflector. You won’t be able to see comments and local variable names, but it is very readable.
If it was written C++ it’s not so easy… even if you could decompile the code into valid C++ it is unlikely that it will resemble the original source because of inlined functions and optimizations which are hard to reverse.
Please note that by reverse engineering and modifying the source code you might breaking the terms of use of the programs unless you wrote them yourself or have permission from the author.
answered Apr 17, 2010 at 18:40
Mark ByersMark Byers
795k188 gold badges1562 silver badges1443 bronze badges
1
If it is native code, you can disassemble it. But you won’t see the original code as written by the programmer. You will see the code produced by the compiler. This code is possibly optimized and although it is semantically equivalent, it can be much harder to read than normal ASM.
If it is bytecode (MSIL or javabytecode), there are decompiler which can product pretty good sourcecode. For .net, this would be reflector.
answered Apr 17, 2010 at 18:40
HenriHenri
5,08521 silver badges24 bronze badges
I would (and have) used IDA Pro to decompile executables. It creates semi-complete code, you can decompile to assembly or C.
If you have a copy of the debug symbols around, load those into IDA before decompiling and it will be able to name many of the functions, parameters, etc.
answered Apr 17, 2010 at 18:43
ssubessube
46.3k7 gold badges101 silver badges139 bronze badges
There’s nothing you can do about it i’m afraid as you won’t be able to view it in a readable format, it’s pretty much intentional and it’ll show the interpreted machine code, there would be no formatting or comments as you normally get in .cs/.c files.
It’s pretty much a hit and miss scenario.
Someone has already asked about it on another website
answered Apr 17, 2010 at 18:42
Jamie KeelingJamie Keeling
9,69717 gold badges65 silver badges100 bronze badges
7
For Any *.Exe file written in any language .You can view the source code with hiew (otherwise Hackers view). You can download it at www.hiew.ru. It will be the demo version but still can view the code.
After this follow these steps:
-
Press alt+f2 to navigate to the file.
-
Press enter to see its assembly / c++ code.
Yogiraj
1,93217 silver badges29 bronze badges
answered May 28, 2014 at 13:14
Когда разработчики выпускают свое программное обеспечение с открытым исходным кодом, это показывает, что они заслуживают доверия и щедры. Программное обеспечение с открытым исходным кодом был одним из главных моментов, которые лично помогли мне начать работать программистом-самоучкой.
Чтобы проект был открытым, разработчик должен сделать его исходный код общедоступным, чтобы любой желающий мог его изучить и извлечь уроки. Важно отметить, что это также показывает, что у разработчика нет злонамеренных намерений, поскольку открытый исходный код позволяет пользователям компилировать свои собственные двоичные файлы, а не использовать предоставленные.
Если вам когда-либо приходилось сталкиваться с двумя программами, и вы не можете определить, какое из них использовать, проверьте, является ли один из них открытым, а другой — нет. Если это так, ваш выбор должен быть ясным.
Однако, если вы хотите учиться или даже добавлять к коду исходного кода программного обеспечения, это также вариант. Для этого вам нужно знать, как просматривать исходный код. В этой статье давайте поговорим о том, как вы можете это сделать.
Как найти исходный код
После того, как вы нашли часть программного обеспечения с открытым исходным кодом, которое вы хотели бы просмотреть в исходном коде, первым делом нужно выяснить, как сделать исходный код проекта доступным.
В большинстве случаев исходный код будет размещаться на крупнейшей веб-платформе управления версиями, GitHub,
Что такое GitHub?
GitHub был основан в 2008 году и приобретен Microsoft в 2018 году. Это глобальная платформа для разработки программного обеспечения, которая предлагает все функции управления исходным кодом: Гитнаряду с собственными функциями, которые расширяют возможности совместной работы и функции контроля версий.
Чаще всего разработчики размещают свой открытый исходный код на GitHub. Несколько примеров программного обеспечения, о котором вы, вероятно, слышали, с исходным кодом, доступным на GitHub: LibreOffice, GIMP, а также VLC медиаплеер,
С помощью Функция поиска GitHubвы должны быть в состоянии найти и просмотреть исходный код практически для каждого крупного программного проекта с открытым исходным кодом.
Как просмотреть исходный код
Найдя репозиторий GitHub, в котором находится исходный код программного обеспечения, вы обнаружите, что все организовано в базовом дереве каталогов. Для файлов GitHub делает просмотр кода очень простым.
Как платформа для разработки, GitHub аккуратно форматирует исходный код через веб-интерфейс. Почти все авторитетные проекты будут включать README.md, который представляет собой файл уценки, который отображает полезную информацию о хранилище и его структуре. Когда вы перейдете к хранилищу, прокрутите вниз, и вы увидите содержимое этого файла.
README.md репозитория важно проверить, потому что он часто указывает пользователям направление исходного кода, который их может заинтересовать. Репозиторий может быть заполнен всеми видами кода и другими данными, некоторые из которых совершенно бесполезны для вас. , так что этот файл — ваша дорожная карта.
Как только вы выясните, где в репозитории находится интересующий вас код, все, что вам нужно сделать, — это щелкнуть по дереву каталогов репозитория, чтобы найти, куда вы хотите перейти.
Щелчок по файлу отобразит его с правильной подсветкой синтаксиса.
Для быстрой проверки веб-интерфейс GitHub отлично подходит. Однако для более сложного исходного кода вам может потребоваться просмотреть несколько файлов одновременно или в течение длительного периода времени. В этом случае мы рекомендуем скачать и просмотреть исходный код через Текстовый редактор, например, Sublime Text.
Загрузка исходного кода
Загрузка репозитория с GitHub занимает всего два клика.
В верхней части каждого репозитория, под строкой, отображающей общее количество коммитов, веток, пакетов, выпусков и участников, вы увидите зеленую кнопку с надписью Клонировать или загрузить. Нажмите на нее и выберите Скачать ZIP.
По умолчанию начнется загрузка главной ветви текущего репозитория в виде файла ZIP. По завершении все, что вам нужно сделать, это извлечь архив в локальную папку на вашем компьютере. Затем, используя текстовый редактор, вы можете открыть любой из файлов репозитория гораздо быстрее, не требуя браузера.
Если вы не опытный кодер, GitHub может сначала немного запутать. Если вы просто думаете об этом как об открытом каталоге исходного кода, с readme на верхнем уровне, это не слишком пугающе. Просмотр исходного кода с помощью GitHub прост, как локально, так и через его веб-интерфейс.
0 / 0 / 1 Регистрация: 27.12.2011 Сообщений: 24 |
|
1 |
|
Как узнать исходный код программы?23.04.2012, 21:48. Показов 45896. Ответов 18
Есть файл с простой программой, мне надо узнать его исходный код. как это сделать? main.rar
__________________
0 |
Почетный модератор 28037 / 15768 / 981 Регистрация: 15.09.2009 Сообщений: 67,753 Записей в блоге: 78 |
|
23.04.2012, 21:49 |
2 |
никак.
0 |
0 / 0 / 1 Регистрация: 27.12.2011 Сообщений: 24 |
|
24.04.2012, 01:54 [ТС] |
3 |
никак. очень понятный и развёрнутый ответ.
0 |
8385 / 6147 / 615 Регистрация: 10.12.2010 Сообщений: 28,683 Записей в блоге: 30 |
|
24.04.2012, 03:23 |
4 |
0 |
7175 / 3234 / 80 Регистрация: 17.06.2009 Сообщений: 14,164 |
|
24.04.2012, 07:19 |
5 |
очень понятный и развёрнутый ответ Главное что он правильный Добавлено через 46 секунд Потребуется несколько вещей
2 |
0 / 0 / 1 Регистрация: 27.12.2011 Сообщений: 24 |
|
24.04.2012, 09:52 [ТС] |
6 |
Потребуется несколько вещей спасибо, обязательно воспользуюсь этим методои
0 |
В астрале 8048 / 4805 / 655 Регистрация: 24.06.2010 Сообщений: 10,562 |
|
24.04.2012, 10:39 |
7 |
Jgo Gankster, Была бы прога на .NET узнавалось бы легко.
0 |
Заблокирован |
|
24.04.2012, 12:17 |
8 |
Jgo Gankster, исходный код, верней его асемблерный вариант можно получить в ходе дизасемблирования. Существует множество программ к примеру OllyDebuger который преобразуют экзешники в асмовские инструкции. Если понимаем асм, то по полученной интерпритации кода можно сообразить где выводим строку, где светим окошко и т.д. Ну а там зная принцип работы алгоритма либо пишем аналог на Си либо осавляем в асме и правим под наши нужды(это называется крэком или варезом).
0 |
Заблокирован |
|
24.04.2012, 12:40 |
9 |
Кстати некоторые вещи можно сказать по программе просто открыв экзешник в блокноте Не по теме: PS:Вспомниаю слова оператора из первой Матрицы . ..- со временем я привык видеть что значит код, к примеру здесь я вижу полицейского, а здесь шикарную блондинку… Вот так и с дизасмом Миниатюры
0 |
Xorazm 1 / 1 / 0 Регистрация: 19.06.2017 Сообщений: 32 |
||||
23.06.2017, 09:26 |
10 |
|||
0 |
1488 / 1203 / 821 Регистрация: 29.02.2016 Сообщений: 3,592 |
|
23.06.2017, 10:24 |
11 |
Потребуется несколько вещей все гораздо проще:
0 |
Software Developer 315 / 229 / 113 Регистрация: 03.05.2017 Сообщений: 1,306 |
|
23.06.2017, 10:31 |
12 |
Jgo Gankster, воспользуйтесь IDA Pro (для дизасемблирования) + Hex Rays (для преобразования в Си подобный код)
0 |
Почетный модератор 28037 / 15768 / 981 Регистрация: 15.09.2009 Сообщений: 67,753 Записей в блоге: 78 |
|
23.06.2017, 11:36 |
13 |
decrement, я не думаю, что спустя 5 лет твой совет нужен Jgo Gankster,
0 |
5225 / 3197 / 362 Регистрация: 12.12.2009 Сообщений: 8,101 Записей в блоге: 2 |
|
23.06.2017, 11:49 |
14 |
Почему до сих пор не посоветовали рабочий способ? Нужно сменить расширение файла на .cpp (или на другой язык программирования) и открыть в IDE. Умные люди так, например, jpg в gif конвертят и т.д.
0 |
Software Developer 315 / 229 / 113 Регистрация: 03.05.2017 Сообщений: 1,306 |
|
23.06.2017, 12:04 |
15 |
Почему до сих пор не посоветовали рабочий способ? Нужно сменить расширение файла на .cpp (или на другой язык программирования) и открыть в IDE. Умные люди так, например, jpg в gif конвертят и т.д. юмор понял
я не думаю, что спустя 5 лет твой совет нужен я на дату и не посмотрел даже)
0 |
45 / 45 / 23 Регистрация: 14.04.2013 Сообщений: 188 |
|
23.06.2017, 23:06 |
16 |
ну раз уж на то пошло, спрошу тут, а как сделать наоборот, в программе создаю shh подключение с логином и паролем(простые строки), как их спрятать от дизасемблирования
0 |
Software Developer 315 / 229 / 113 Регистрация: 03.05.2017 Сообщений: 1,306 |
|
23.06.2017, 23:33 |
17 |
ну раз уж на то пошло, спрошу тут, а как сделать наоборот, в программе создаю shh подключение с логином и паролем(простые строки), как их спрятать от дизасемблирования как бы вы не прятали всё равно можна прочесть
0 |
зомбяк 1564 / 1213 / 345 Регистрация: 14.05.2017 Сообщений: 3,936 |
|
23.06.2017, 23:39 |
18 |
Zazy, от дизассемблирование ничто не может защитить, ибо это, простите, инструкции, которые процессор делать должен. А значит понимать. А вот от дальнейшего понимания того, что собственно выполняет процессор, есть это — https://ru.wikipedia.org/wiki/… еспечение)
0 |
290 / 87 / 28 Регистрация: 25.01.2016 Сообщений: 529 Записей в блоге: 1 |
|
24.06.2017, 14:33 |
19 |
Потребуется несколько вещей Бедный автор программы… Добавлено через 15 секунд
Потребуется несколько вещей Бедный автор программы…
0 |
While going open source might be a good choice, you’ll also need to invest in the right community. GitHub is one of the best places to do this, not only because of the sheer amount of users who visit the site, but also because of the features that GitHub offers. If you find an open source app on GitHub, I’ll show you a few things you can do with it, including viewing, editing, and forking the code.
If you’re looking at developing software, going the open source route is one of the best ways to do it. Not only can people view your open source code and submit their own fixes, but you are also encouraged to look at other people’s code to use as a framework or inspiration.
While going open source might be a good choice, you’ll also need to invest in the right community. GitHub is one of the best places to do this, not only because of the sheer amount of users who visit the site, but also because of the features that GitHub offers. If you find an open source app on GitHub, I’ll show you a few things you can do with it, including viewing, editing, and forking the code.
Create an Account
Before you get started with using GitHub, it’s best to create an account with them. Creating an account is free and will allow you to take advantage of numerous features such as forking. GitHub also has different membership levels besides the free one, but a free account should be more than enough for personal use.
Checking Out a Project
Once you have an account you can dive straight into an open source application found on GitHub. Here you can see the application’s project page, including folders and files pertaining to the application, a network graph, a list of pull requests, open issues, a wiki, and other graphs. Obviously, if you want to see the code within the files, you should click on them and you’ll be presented with the full source code. As far as interpreting the code goes, you’ll need to have some background in the programming language that the application is written in, whether it be Java, C++, Python, or something else. For those wondering, the screenshot shows Caleb Evan’s jcanvas project.
Forking a Project
Editing the code requires some additional steps. If you wish to copy the code without officially forking it on GitHub, you’ll need to download the project’s files and then edit them locally on your computer. However, if you’re truly looking at using the currently available source and creating your own project with it and going in your own direction, you’ll want to fork it. Forking can be accomplished with an account, and by clicking on «Fork» on the project’s page as shown in the screenshot. The next few instructions are for Linux users who should install the G
it
package for their respective distribution.
If you wish to retrieve the repository’s files to your computer, you’ll need to run the command
git clone https://github.com/username/project_name.git
, replacing username with your GitHub username and project_name with the name of the application project that you just forked. Run this command within a folder that should contain all of your GitHub projects, as each git clone command will create a new folder within the one you’re currently residing. This is another way of downloading a project’s file as it doesn’t require login credentials. Now you can change the files as you please using any text editor or IDE. For Linux users, I’d recommend Eclipse or Geany as they’re great programming editors — Eclipse being more full-featured and Geany being leaner. Windows users can also use the native GitHub client.
Uploading Changes to Your Project
Once you’re done making changes, you can upload the updated files back to GitHub using the command
git push origin master
while inside the application’s folder. This pushes the changes back into the «origin» pointer (your forked project) and the master branch (default location of source code).
Keeping Track of Upstream
If you’d like to keep track of the upstream project (the one that you forked to create your own), then you’ll need to add what’s called an additional remote. This is basically just another keyword you can use while you’re inside your application’s folder. To create the new remote, run the command
git remote add upstream https://github.com/username/project_name.git
, where username should be replaced by the username of the original project, and project_name should be replaced by its project name.
Merging Upstream Changes
If you notice that the upstream project has been updated and you’d like to incorporate the changes, you can run
git pull upstream
after creating the additional remote, and GitHub will download and merge changes from upstream into your project’s files. If everything works perfectly after running that command, you can immediately run
git push origin master
to push the updates to your own project.
Pull Requests
If you’d like to contribute back to the upstream project, it’s best to push any changes to your own fork of the project (or your own branch of the upstream project, but that’s only after the original author makes special arrangements). Once you’ve pushed those changes to your repository, you can go to GitHub and submit a pull request. This notifies the original author of the upstream project that you’d like him/her to review the changes that you’ve made and have them pull your changes into the upstream project. It’s a common courtesy to at least offer some of your own modifications back to the upstream project for them to pull as a thank you for forking their project. Whether they accept your request is up to them.
Conclusion
GitHub is fantastic tool that a large amount of open source developers already use. While GitHub uses the Git utility which anyone can configure on their own servers, GitHub really incorporates the community aspect of development, something that is a requirement in the open source world. This introduction should help you get started with the basics. If you would like to learn more about actual programming, you can check out this article on top sites to brush up on C++.
Have you used GitHub? What feature do you like the most that people should know about? Let us know in the comments!
While going open source might be a good choice, you’ll also need to invest in the right community. GitHub is one of the best places to do this, not only because of the sheer amount of users who visit the site, but also because of the features that GitHub offers. If you find an open source app on GitHub, I’ll show you a few things you can do with it, including viewing, editing, and forking the code.
If you’re looking at developing software, going the open source route is one of the best ways to do it. Not only can people view your open source code and submit their own fixes, but you are also encouraged to look at other people’s code to use as a framework or inspiration.
While going open source might be a good choice, you’ll also need to invest in the right community. GitHub is one of the best places to do this, not only because of the sheer amount of users who visit the site, but also because of the features that GitHub offers. If you find an open source app on GitHub, I’ll show you a few things you can do with it, including viewing, editing, and forking the code.
Create an Account
Before you get started with using GitHub, it’s best to create an account with them. Creating an account is free and will allow you to take advantage of numerous features such as forking. GitHub also has different membership levels besides the free one, but a free account should be more than enough for personal use.
Checking Out a Project
Once you have an account you can dive straight into an open source application found on GitHub. Here you can see the application’s project page, including folders and files pertaining to the application, a network graph, a list of pull requests, open issues, a wiki, and other graphs. Obviously, if you want to see the code within the files, you should click on them and you’ll be presented with the full source code. As far as interpreting the code goes, you’ll need to have some background in the programming language that the application is written in, whether it be Java, C++, Python, or something else. For those wondering, the screenshot shows Caleb Evan’s jcanvas project.
Forking a Project
Editing the code requires some additional steps. If you wish to copy the code without officially forking it on GitHub, you’ll need to download the project’s files and then edit them locally on your computer. However, if you’re truly looking at using the currently available source and creating your own project with it and going in your own direction, you’ll want to fork it. Forking can be accomplished with an account, and by clicking on «Fork» on the project’s page as shown in the screenshot. The next few instructions are for Linux users who should install the G
it
package for their respective distribution.
If you wish to retrieve the repository’s files to your computer, you’ll need to run the command
git clone https://github.com/username/project_name.git
, replacing username with your GitHub username and project_name with the name of the application project that you just forked. Run this command within a folder that should contain all of your GitHub projects, as each git clone command will create a new folder within the one you’re currently residing. This is another way of downloading a project’s file as it doesn’t require login credentials. Now you can change the files as you please using any text editor or IDE. For Linux users, I’d recommend Eclipse or Geany as they’re great programming editors — Eclipse being more full-featured and Geany being leaner. Windows users can also use the native GitHub client.
Uploading Changes to Your Project
Once you’re done making changes, you can upload the updated files back to GitHub using the command
git push origin master
while inside the application’s folder. This pushes the changes back into the «origin» pointer (your forked project) and the master branch (default location of source code).
Keeping Track of Upstream
If you’d like to keep track of the upstream project (the one that you forked to create your own), then you’ll need to add what’s called an additional remote. This is basically just another keyword you can use while you’re inside your application’s folder. To create the new remote, run the command
git remote add upstream https://github.com/username/project_name.git
, where username should be replaced by the username of the original project, and project_name should be replaced by its project name.
Merging Upstream Changes
If you notice that the upstream project has been updated and you’d like to incorporate the changes, you can run
git pull upstream
after creating the additional remote, and GitHub will download and merge changes from upstream into your project’s files. If everything works perfectly after running that command, you can immediately run
git push origin master
to push the updates to your own project.
Pull Requests
If you’d like to contribute back to the upstream project, it’s best to push any changes to your own fork of the project (or your own branch of the upstream project, but that’s only after the original author makes special arrangements). Once you’ve pushed those changes to your repository, you can go to GitHub and submit a pull request. This notifies the original author of the upstream project that you’d like him/her to review the changes that you’ve made and have them pull your changes into the upstream project. It’s a common courtesy to at least offer some of your own modifications back to the upstream project for them to pull as a thank you for forking their project. Whether they accept your request is up to them.
Conclusion
GitHub is fantastic tool that a large amount of open source developers already use. While GitHub uses the Git utility which anyone can configure on their own servers, GitHub really incorporates the community aspect of development, something that is a requirement in the open source world. This introduction should help you get started with the basics. If you would like to learn more about actual programming, you can check out this article on top sites to brush up on C++.
Have you used GitHub? What feature do you like the most that people should know about? Let us know in the comments!
Исходный код программы на С — это текстовая запись программы на языке программирования С. Исходный код на С пишется таким образом, чтобы любой программист, владеющий этим языком программирования, смог разобрать, что там написано.
С — это язык программирования, который проверен временем. Изначально он задумывался как заменитель Ассемблера, чтобы писать на нем операционные системы.
С — это высокоуровневый язык, который не зависит от архитектуры устройства, а это значит, что программы, написанные на нем, можно использовать на разных платформах. Таким образом, С стал идеальным языком для операционных систем, драйверов и программ системного значения.
Исходный код программы на С
Сегодня языки программирования С и С++ ставят рядом, потому что С++ — это улучшенная версия С.Таким образом, программы, которые пишутся на С, будут корректными и для языка программирования С++. Из этого получается, что для извлечения исходного кода программы на С можно использовать инструменты, предназначенные для С++, но об этом чуть позже.
Исходный код программы на С — это программный код, который еще не был скомпилирован и содержится в файлах с расширением данного языка. У этого языка имеется несколько расширений, и делятся они в зависимости от типов файлов:
заголовочный файлы используют расширение «.h», поэтому называются h-файлы;
файлы реализации используют расширение «.с» для языка С и «.срр», «.схх», «.сс» для языка программирования С++.
Любой проект, реализованный на С, будет иметь файлы обоих типов. Но нужно отметить, что:
h-файлы — это файлы, содержащие сведения о программе;
файлы реализации — это сам код программы.
Когда вам нужен исходный код программы на С, то больший интерес вам представляют файлы реализации. При этом единую функционирующую программу составляют оба вида файлов.
Как получить исходный код программы на С
Исходный код априори принадлежит своему автору. Поэтому если автор кода выставляет его в открытые источники, то пользователи получают программу с открытым исходным кодом. В этой ситуации пользователи могут воспользоваться исходным кодом программы по своему усмотрению, например:
помочь доработать программу, вплоть до того, чтобы стать соавтором;
использовать код, чтобы создать подобную программу, однако тут есть тонкости: нужно будет указать автора исходного кода или что-то еще;
чуть-чуть подправить программу для личного пользования;
и др.
Если автор скрывает исходный код программы, то получить его:
противозаконно, потому что авторы закрывают код и защищают его лицензиями;
очень сложно, а иногда практически невозможно.
Процесс получения исходного кода из закрытой программы — это реверсивная инженерия или обратное программирование. У закрытых программ пользователи не могут видеть исходный код программы, лишь ее исполняемые или скомпилированные файлы, например, файлы «.ехе» для Windows-программ. Если открыть исполняемый или скомпилированный файл, то там не будет ничего общего с языком программирования. Все, что там можно будет увидеть, — это беспорядочный набор цифр и букв или двоичный код из сочетания «1» и «0».
Исходный код программы на С: обратное программирование
Обратное программирование — это длительный и муторный процесс. Чем больше программа, для которой вы хотите получить исходный код, тем сложнее будет этот процесс. В некоторых случаях процесс «реверса» займет несколько лет, например, попробуйте воссоздать исходный код операционной системы Windows.
Реверсное программирование завязано на применении специфического программного обеспечения: декомпиляторы, дешифровщики, деобфускаторы, отладчики, оптимизаторы и т. д. В этом заключается еще одна сложность — достать качественные программы из этой категории в открытом доступе практически нереально. Все, что есть в открытом доступе, может помочь только с небольшими программами. Если вам нужен будет исходный код более серьезной программы на С, то искать специализированное ПО — это та еще затея, но поисковик, анонимные сообщества хакеров и darknet вам в помощь, при том что способы попробовать восстановить исходный код полностью или частично есть.
Способы попробовать восстановить исходный код программы на С:
IDA Pro — одна из лучших и бесплатных программ из категории «реверсивная инженерия»;
«hiew.exe» — утилита, которая не выдаст исходный код программы, но поможет править его на языке ассемблера;
нужно внимательно посмотреть имеющийся код программы: если к нему подшиты PDB-файлы (опытные программисты этого не делают, но мало ли что), тогда есть возможность прямо в IDE узнать номера строк исходников, имена переменных, функций, констант и т. д.; при помощи такого подхода добиться исходного кода не получится, но у вас будет вся информация для того, чтобы понять, как он функционирует;
необходимо проверить, не встроен ли в программу «debug info»: если встроен, то можно использовать его, как и в предыдущем способе, чтобы узнать информацию об исходном коде;
DisSharp — программа, которая способна раскрыть часть кода на С++ и С#;
Refox — данная утилита поможет, если программа на С скомпилирована в какой-либо байт-кодовый язык;
exe.scope.exe или Resourcehacker.exe — утилиты, которые не раскрывают исходный код, но помогают определить, какие библиотеки используются в программе.
Универсальных средств нет. Нет такого, чтобы вы запустили какое-то программное обеспечение, и оно вам выдало исходный код программы на С. Чтобы добиться исходного кода, нужно будет повозиться и узнавать все частями. Например:
при помощи одной утилиты вы узнаете используемые библиотеки;
при помощи другой — имена классов и функций;
третья поможет частично раскрыть код;
и т. д., пока у вас не сложится общая картина об исходниках.
Опять же, если код хорошо защищен, то сам процесс становится намного сложнее, потому что тогда нужно будет разбираться с защитой, прежде чем применять какие-то утилиты для обнаружения исходников.
Заключение
Если вам нужен исходный код программы на С, а он закрыт, то вам остается только обратное программирование. Прежде чем начать этот процесс, подумайте об ответственности, ведь реверсивная инженерия — это нарушение авторских прав и законодательства многих государств.