Мой .exe открывается и закрывается на других компьютерах - PullRequest
0 голосов
/ 27 апреля 2020

Я создал скрипт обучающего устройства fifa15, но у меня возникают проблемы с отправкой его другим людям, для отладки я попросил другого пользователя запустить .exe и отправить мне логи, но он сказал, что программа просто открывается и закрывается. Может ли это быть проблемой совместимости?

Мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace cheat_birthyear
{
class Program
{
    public static string path;
    public static IntPtr BaseAddress = IntPtr.Zero;
    static void Main(string[] args)
    {
        Process[] processes = Process.GetProcessesByName("fifa15");
        if(processes.Length > 0)
        {
            IntPtr BaseAddress = IntPtr.Zero;
            Process MyProc = processes[0];
            foreach(ProcessModule module in MyProc.Modules)
            {
                if (module.ModuleName.Contains("fifa15"))
                {
                    BaseAddress = module.BaseAddress;
                    path = module.FileName;
                    Console.WriteLine(path);

                }
            }

            if (BaseAddress != IntPtr.Zero)
            {


                VAMemory memory = new VAMemory("fifa15");
                long finalAddress = memory.ReadInt64((IntPtr)BaseAddress + 0x01F441E8);
                Console.WriteLine(finalAddress);
                int newaddr = memory.ReadInt32( (IntPtr)finalAddress + 0x390);
                Console.WriteLine(newaddr);
                Console.ReadLine();
                string yearPath = path.Replace("fifa15.exe", "cheat_birthyear\\birthyear.txt");
                string[] lines = System.IO.File.ReadAllLines(@yearPath);
                string yearVal = lines[0];
                //float Basefifthvalue = memory.ReadFloat((IntPtr)newaddr);
                //Console.WriteLine(Basefifthvalue);

                memory.WriteInt32((IntPtr)finalAddress + 0x390, 1998);

            }
            else
            {
                Console.WriteLine("baseaddress não encontrado");
                Console.ReadLine();
            }
        }
        else
        {
            Console.WriteLine("jogo não encontrado");
            Console.ReadLine();
        }
    }
}
 }

И это файлы генератора, когда я компилирую и генерирую publi sh версию

Печать папки

Есть ли способ отладки, чтобы я знал, правильно ли программа работала на другом компьютере?

1 Ответ

0 голосов
/ 28 апреля 2020

Существует 3 пути, по которым ваше приложение может пройти

  1. Нет процессов Fifa15
  2. BaseAddress - IntPtr.Zero
  3. BaseAddress - не IntPtr.Zero (приложение работает)
  4. Что-то взрывается

В первом и втором случаях вы добавили вызов Console.ReadLine(), который будет держать консоль открытой после завершения кода. Похоже, вы забыли об этом в # 3 и # 4.

Возможно, попробуйте изменить структуру кода, чтобы всегда вызывать Console.ReadLine(), чтобы консоль оставалась открытой и они могли видеть результаты. Возможно что-то вроде этого:

using System;
//... the rest of the imports

namespace cheat_birthyear
{
    class Program
    {
        //... other class code

        static void Main(string[] args)
        {
            try {
                //... your code here
            } finally {
                Console.ReadLine()
            }
        }
    }
}
...