Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 59

что я сделал не так и как это исправить?

24.01.2013, 11:36. Показов 2573. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никогда не учился программировать

Не по теме:

Я не знаю что я сделал не правильно, но хочу узнать как это исправить :)




В общем мне нужно в чужой процесс записать 1 байт (0x74 или 0x75(стандартный))

вот что я нагуглил и сам что-то натворил:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 private void button1_Click(object sender, EventArgs e)
       {
           Process[] listprocess = Process.GetProcessesByName("war3.exe");
           Int32 test = 0x00;
           int nunu = 0;
           Int32 adrs = 0x3A1505;
           Byte[] array2 = { 0x75 };
           foreach (Process WarProc in listprocess)
           {
               ProcessModuleCollection Warmodul = WarProc.Modules;
               foreach (ProcessModule WarModule in Warmodul)
               {
                   if (WarModule.ModuleName == "game.dll")
                   {
                       test = Convert.ToInt32(WarModule.BaseAddress);
                       test = test + adrs;
                   }
                   else test = 0x00;
               }
               WriteProcessMemory(WarProc.Handle, (IntPtr)test, array2, (uint)array2.Length, out nunu);
           }
       }
...Ничего не записывается в процесс war3.exe , в Game.dll+3A1505

Может кто помочь исправить ошибку ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2013, 11:36
Ответы с готовыми решениями:

Что тут не так? и как это можна исправить?
Form1->Query1->SQL->Clear(); Form1->Query1->Open(); while( !Form1->Query1->Eof || (Form1->Query1->RecNo <= 5 ) ) ...

Сделал тестовое задание, ответили что я джун плюс, объясните что я сделал не так
Недавно попросили сделать вот это тестовое задание...

Почему это так и как это исправить?
Почему если в паскале написать это: program test; type Operators = ( _if_,

4
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 59
25.01.2013, 22:44  [ТС]
что, никто не подскажет что в коде не правильно?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.01.2013, 23:07
karaulov2, шарп для таких целей не предназначен, а значит, и люди, которые знают, как с его помощью это сделать, это люди, которые любят хитроумные извраты (вроде использования языка для задачи, для которой он не подходит). А так как таких людей мало, то и вероятность ответа сильно падает.
0
7 / 7 / 2
Регистрация: 05.07.2012
Сообщений: 30
26.01.2013, 04:33
автор учите английский язык и учитесь пользоваться поиском, нашёл сразу же на stackoverflow.com
В Вашем коде разбираться не стал.
Итак, создаём проект #1, заходим в настройки проекта, вкладка build, ставим галочку на "allow unsafe code".
В самом коде:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
 
namespace ConsoleApplication58
{
    class Program
    {
        static unsafe void Main(string[] args)
        {
            int a = 1;
            int* p = &a;
            Console.WriteLine("Значение переменной={1}, адрес={0:X}",(int)p,*p);
            Console.ReadKey();
            Console.WriteLine("Значение переменной={0}",*p);
        }
    }
}
Далее создаём второй проект и копируем туда следующее:
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
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Linq;
 
namespace ConsoleApplication
{
    class Program
    {
        [DllImport("kernel32.dll")]
        static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, int dwProcessId);
 
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out int lpNumberOfBytesWritten);
 
        [DllImport("kernel32.dll")]
        public static extern Int32 CloseHandle(IntPtr hProcess);
 
        [Flags]
        public enum ProcessAccessFlags : uint
        {
            All = 0x001F0FFF,
            Terminate = 0x00000001,
            CreateThread = 0x00000002,
            VMOperation = 0x00000008,
            VMRead = 0x00000010,
            VMWrite = 0x00000020,
            DupHandle = 0x00000040,
            SetInformation = 0x00000200,
            QueryInformation = 0x00000400,
            Synchronize = 0x00100000
        }
 
        public static void WriteMem(Process p, int address, long v)
        {
            var hProc = OpenProcess(ProcessAccessFlags.All, false, (int)p.Id);
            var val = BitConverter.GetBytes(v);
 
            int wtf = 0;
            WriteProcessMemory(hProc, new IntPtr(address), val, (UInt32)val.LongLength, out wtf);
 
            CloseHandle(hProc);
        }
 
        static void Main(string[] args)
        {
            var p = Process.GetProcessesByName("ConsoleApplication56").FirstOrDefault();
                var addr = Convert.ToInt32(Console.ReadLine(),16);
 
                WriteMem(p, addr, 100500);
        }
    }
}
Как пользоваться, запускаете проект №1 без отладки, смотрите адрес переменной, смотрите название процесса(если что, в тех же настройках сборки можете поменять имя сборки на ConsoleApplication56),
при необходимости в теле метода Main меняете имя приложения которое ищет .GetProcessesByName(), запускаете вторую сборку, вводите адрес который вывелся на экран в первой сборке и жмёте в первой любую клавишу, вуаля, значение поменялось с 1 на 100500.
1
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 59
27.01.2013, 20:22  [ТС]
это не то что мне нужно но я уже сам разобрался:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                Process[] ProcessList = System.Diagnostics.Process.GetProcessesByName("name");
                int nunu = 0;
                const Int32 bsadr = 0x4B2616;
                Byte[] array2 = { 0x00 };
                if (ProcessList.Length > 0)
                {
                    Process MYPROCESS = ProcessList[0];
                    IntPtr BaseAddress = IntPtr.Zero;
 
                    foreach (System.Diagnostics.ProcessModule Module in MYPROCESS.Modules)
                    {
                        if (Module.ModuleName.Contains("name"))
                            BaseAddress = new IntPtr(Module.BaseAddress.ToInt64() + bsadr);
                    }
 
                    if (BaseAddress != IntPtr.Zero)
                    {
                        WriteProcessMemory(MYPROCESS.Handle, BaseAddress, array2, (uint)array2.Length, out nunu);
                    }
                }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2013, 20:22
Помогаю со студенческими работами здесь

Подскажите пожалуйста, что не так сделал и как нужно написать правильно
Идея такова : даны уравнения прямых а1х+b1y=c1, a2x+b2y=c2, a3x+b3y=c3. Выяснить, какие из этих прямых параллельны, а какие - нет.Само по...

При загрузке компа появляется это, не знаете что это и как исправить
при загрузке компа появляется это, не знаете что это и как исправить

Ошибка при компиляции JAVA. error: ';' expected Что это и как это исправить?
Добрый день. В первый раз в жизни пытаюсь скомпилировать примитивную программу Example.java, но компилятор выдает ошибку java:8:...

Что это за ошибка и как это исправить
Что ето за ошибка и как ето исправить???? The OutputPath property is not set for this project. Please check to make sure that...

Что это значит и как это исправить?
//Функция, которая строит вектор, каждый элемент которого равен минимальному элементу соответствующего столбца матрицы большего заданного...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru