Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Alexan
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 20
#1

внедрение пакетов

25.10.2010, 16:29. Просмотров 1316. Ответов 10
Метки нет (Все метки)

Здравствуйте, уважаемые знатоки,кто то сталкивался с внедрением самописных пакетов в обмен между клиентом и сервером на шарпе?(наподобии того что делается в программе WPE pro) Буду рад любой информации, заранее благодарен.
С уважением,
Александр
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2010, 16:29
Ответы с готовыми решениями:

внедрение Flash
Доброго времени суток уважаемые форумчане, в общем мне нужно как то...

Внедрение в браузер
Здравствуйте. Подскажите пожалуйста,как отправить данные из программы в...

Внедрение системных команд в WF
Нужно реализовать меню, где будут такие системные команды при нажатии : ...

Внедрение в другой процесс
Запущена игра (Counter-Strike 1.6). Стоит задача, чтобы отдельное .NET...

Внедрение Dll, написанной на C++ в Exe
Внедрение Dll в Exe (Не взлом! Свою Длл в свою Ехе)... Я создаю в с++...

10
Konctantin
939 / 743 / 170
Регистрация: 12.04.2009
Сообщений: 1,700
25.10.2010, 19:35 #2
можно написать свой ТСР прокси, через который будет ходит трафик.
0
Alexan
0 / 0 / 0
Регистрация: 24.10.2009
Сообщений: 20
25.10.2010, 22:01  [ТС] #3
а подробнее?Если бы я знал как это делается в идеале, то не спрашивал бы)
0
kenny69
burning1ife
1371 / 1198 / 282
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
25.10.2010, 22:37 #4
пример клиент-серверного приложения
1
Вложения
Тип файла: zip Projects.zip (50.0 Кб, 31 просмотров)
kenny69
burning1ife
1371 / 1198 / 282
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
25.10.2010, 22:49 #5
http://www.microsoft.com/Rus/Msdn/Magazine/2005/08/Winsock.mspx - хорошая статья
0
Konctantin
939 / 743 / 170
Регистрация: 12.04.2009
Сообщений: 1,700
25.10.2010, 23:39 #6
если не секрет, то в каком приложении вы собираетесь подменивать пакеты?

в этом деле очень много нюансов, и чтобы это сделать мало знать технологию соккетов.
Вам нужно знать сам процесс аутентификации приложения, знать алгоритм шифрования (если таков присутствует) знать опкоды и структуры пакетов.

Вот собственно почему я интересуюсь, что это за приложение, игра какая-то? world of warcraft?

Добавлено через 39 минут
C#
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
    public class ProcessMemoryReader : IDisposable
    {
        private readonly IntPtr hProcess;
        private readonly Process process;
 
        public ProcessMemoryReader(string processName)
        {
            Process[] processesByName = Process.GetProcessesByName(processName);
 
            if (processesByName.Length == 0)
            {
                throw new Exception(processName + " isn't running!");
            }
 
            process = processesByName[0];
            hProcess = Imported.OpenProcess(Imported.ProcessAccessFlags.VM_READ, false, process.Id);
 
            if (this.hProcess == IntPtr.Zero)
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
        }
 
        public void Dispose()
        {
            process.Close();
            process.Dispose();
            Imported.CloseHandle(hProcess);
            GC.SuppressFinalize(this);
        }
 
        ~ProcessMemoryReader()
        {
            process.Close();
            process.Dispose();
        }
 
        public byte[] Read(uint offset, int length)
        {
            byte[] lpBuffer = new byte[length];
 
            Imported.ReadProcessMemory(hProcess, new IntPtr(offset), lpBuffer, new UIntPtr((uint)length), IntPtr.Zero);
 
            return lpBuffer;
        }
 
        public uint ReadUInt(uint offset)
        {
            byte[] lpBuffer = new byte[4];
 
            Imported.ReadProcessMemory(hProcess, new IntPtr(offset), lpBuffer, new UIntPtr(4), IntPtr.Zero);
 
            return BitConverter.ToUInt32(lpBuffer, 0);
        }
    }
C#
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
        /// <summary>
        /// The Microsoft Windows security model enables you to control access to process objects.
        /// </summary>
        public enum ProcessAccessFlags
        {
            /// <summary>
            /// [0x0080] 
            /// Required to create a process.
            /// </summary>
            CREATE_PROCESS              = 0x0080,
            /// <summary>
            /// [0x0002] 
            /// Required to create a thread.
            /// </summary>
            CREATE_THREAD               = 0x0002,
            /// <summary>
            /// [0x0040] 
            /// Required to duplicate a handle using DuplicateHandle.
            /// </summary>
            DUP_HANDLE                  = 0x0040,
            /// <summary>
            /// [0x0400] 
            /// Required to retrieve certain information about a process, 
            /// such as its token, exit code, and priority class 
            /// (see OpenProcessToken, GetExitCodeProcess, GetPriorityClass, and IsProcessInJob).
            /// </summary>
            QUERY_INFORMATION           = 0x0400,
            /// <summary>
            /// [0x1000] 
            /// Required to retrieve certain information about a process 
            /// (see QueryFullProcessImageName). 
            /// A handle that has the PROCESS_QUERY_INFORMATION access right 
            /// is automatically granted PROCESS_QUERY_LIMITED_INFORMATION.
            /// </summary>
            QUERY_LIMITED_INFORMATION   = 0x1000,
            /// <summary>
            /// [0x0200] 
            /// Required to set certain information about a process, such as its priority class (see SetPriorityClass).
            /// </summary>
            SET_INFORMATION             = 0x0200,
            /// <summary>
            /// [0x0100]
            /// Required to set memory limits using SetProcessWorkingSetSize.
            /// </summary>
            SET_QUOTA                   = 0x0100,
            /// <summary>
            /// [0x0800]
            /// Required to suspend or resume a process.
            /// </summary>
            SUSPEND_RESUME              = 0x0800,
            /// <summary>
            /// [0x0001]
            /// Required to terminate a process using TerminateProcess.
            /// </summary>
            TERMINATE                   = 0x0001,
            /// <summary>
            /// [0x0008]
            /// Required to perform an operation on the address space of a process (see VirtualProtectEx and WriteProcessMemory).
            /// </summary>
            VM_OPERATION                = 0x0008,
            /// <summary>
            /// [0x0010] 
            /// Required to read memory in a process using ReadProcessMemory.
            /// </summary>
            VM_READ                     = 0x0010,
            /// <summary>
            /// [0x0020]
            /// Required to write to memory in a process using WriteProcessMemory.
            /// </summary>
            VM_WRITE                    = 0x0020,
            /// <summary>
            /// [0x00100000]
            /// Required to wait for the process to terminate using the wait functions.
            /// </summary>
            SYNCHRONIZE                 = 0x00100000,
            /// <summary>
            /// [0x001F0FFF]
            /// All possible access rights for a process object.
            /// </summary>
            ALL_ACCESS                  = 0x001F0FFF,
        }
Добавлено через 1 минуту
дальше нужно просто читать и писать в память по определенным оффсетам.
а это есть основа того как работать с памятью.
1
NickoTin
Почетный модератор
Эксперт .NET
8441 / 3563 / 402
Регистрация: 14.06.2010
Сообщений: 4,512
Записей в блоге: 9
25.10.2010, 23:41 #7
Цитата Сообщение от Konctantin Посмотреть сообщение
дальше нужно просто читать и писать в память по определенным оффсетам.
Если тебе это кто-то позволит (если программа будет использоваться ни на одном компе) Без повышения привилегий ничего не получиться, да даже если и повысишь, и то - не факт.

Не по теме:

copy-paste рулит :D

0
Konctantin
939 / 743 / 170
Регистрация: 12.04.2009
Сообщений: 1,700
25.10.2010, 23:50 #8
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private static void GrantDebuggerPrivileges(Process process)
        {
            IntPtr MyToken = IntPtr.Zero;
            Imported.OpenProcessToken(process.Handle, 0x28, ref MyToken);
            Imported.PrivilegeToken new_priv;
 
            new_priv.Count = 1;
            new_priv.Luid = 0;
            new_priv.Attr = 0x2;
 
            Imported.LookupPrivilegeValue(null, "SeDebugPrivilege", ref new_priv.Luid);
            Imported.AdjustTokenPrivileges(MyToken, false, ref new_priv, 0x10, IntPtr.Zero, IntPtr.Zero);
 
            Console.WriteLine("Granted debugger priviligies to process {0}.", process.Id);
        }
Если тебе это кто-то позволит (если программа будет использоваться ни на одном компе) Без повышения привилегий ничего не получиться, да даже если и повысишь, и то - не факт.
Именно по этому я склоняюсь к TCP-Proxy
1
planar
86 / 85 / 13
Регистрация: 28.09.2010
Сообщений: 262
26.10.2010, 12:14 #9
WinPCAP, у него есть обертка для .Net
0
Konctantin
939 / 743 / 170
Регистрация: 12.04.2009
Сообщений: 1,700
26.10.2010, 18:43 #10
и не работает он на впн-соединениях
0
planar
86 / 85 / 13
Регистрация: 28.09.2010
Сообщений: 262
29.10.2010, 09:32 #11
Если быть точным - он не работает на PPP соединениях. Т. е. на PPPoE так же работать не будет.
0
29.10.2010, 09:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2010, 09:32

Как реализовать внедрение dll без её извлечения на жесткий диск?
Вообщем такой вопрос, есть код внедрения dll в процесс using System; ...

Нахождение нужного процесса и внедрение в него нужной мне DLL
Здравствуйте, я бы хотел у вас попросить помощь одному коду на C# Это код для...

Задержка пакетов UDP
Всем добрый день, не нашёл на просторах интернета ответа на свой вопрос, по...


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

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

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