프로그래밍
첫 페이지 랜덤 글 회원가입 로그인
비공개 손님 2023-01-10 04:07:33
그림판 전체보기 기능 성공?

using System.Data;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;

namespace mspaintcap
{
    public partial class Form1 : Form
    {
        [DllImport("kernel32.dll")]
        public static extern int OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);

        [DllImport("kernel32.dll")]
        public static extern bool ReadProcessMemory(int hProcess, Int64 lpBaseAddress, byte[] buffer, int size, int lpNumberOfBytesRead);

        // https://blog.sweetchip.kr/265
        public uint DELETE = 0x00010000;
        public uint READ_CONTROL = 0x00020000;
        public uint WRITE_DAC = 0x00040000;
        public uint WRITE_OWNER = 0x00080000;
        public uint SYNCHRONIZE = 0x00100000;
        public uint END = 0xFFF;

        Process[] p;

        public Form1()
        {
            InitializeComponent();
        }

        int processHandle = 0;

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                p = Process.GetProcessesByName("mspaint");
            }
            catch { textBox1.Text = "error"; }
            processHandle = OpenProcess((DELETE | READ_CONTROL | WRITE_DAC | WRITE_OWNER | SYNCHRONIZE | END), false, p[0].Id);
        }

        private void buttonFind_Click(object sender, EventArgs e)
        {
            NewMethod();

        }

        private void NewMethod()
        {
            if (processHandle == 0) return;


            textBox1.Text = processHandle.ToString();
            int w = 900;
            int h = 737;
            var ImageBytes = ReadMemory(0x22adc540a70, w * h * 4, processHandle);
            //File.WriteAllBytes("a.raw", buf);
            //Bitmap output = new Bitmap(w, h, PixelFormat.Format24bppRgb);
            Bitmap output = new Bitmap(w, h, PixelFormat.Format32bppArgb);
            Rectangle rect = new Rectangle(0, 0, output.Width, output.Height);
            BitmapData bmpData = output.LockBits(rect, ImageLockMode.ReadWrite, output.PixelFormat);
            IntPtr ptr = bmpData.Scan0;
            Marshal.Copy(ImageBytes, 0, ptr, ImageBytes.Length);
            output.UnlockBits(bmpData);
            pictureBox1.Image = output;
            pictureBox1.Refresh();
        }

        public static byte[] ReadMemory(Int64 adress, int processSize, int processHandle)
        {
            byte[] buffer = new byte[processSize];
            ReadProcessMemory(processHandle, adress, buffer, processSize, 0);
            return buffer;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            NewMethod();
        }
    }
}

잡담 | 754명이 읽었어요. 3.214.184.223

0
1 비공개 손님 2023-01-10 05:16:07
https://winduck.tistory.com/1
2 비공개 손님 2023-01-10 05:18:40
https://www.codeproject.com/Articles/716227/Csharp-How-to-Scan-a-Process-Memory
3 비공개 손님 2023-01-10 07:07:31
이걸 어케 쓰지여?.. 문과충 ㅠㅠ
4 비공개 손님 2023-01-10 07:09:16
3/ 쓸수있게 만드는거도 일이네
시간좀 걸릴거 같네요 사용법이 너무 어려워서
5 비공개 손님 2023-01-10 07:10:45
이런건 어디서 배우셨나여?
진짜 나중에 저는 닭 튀기는거 말곤 할수 있는게 없을듯
6 비공개 손님 2023-01-10 23:18:03
5/ 그냥 만들고 싶으면 찾아서 만드는거지... 이런걸 가르쳐 주는데가 있을리가요

일단은 본업이 프로그램이긴한데...
7 비공개 손님 2023-01-11 00:01:45
6/ 존경합니다...
댓글을 작성하실 수 없습니다.
(권한이 없는 회원레벨)
목록으로
△ 이전글: 그림판 뷰어 소스
▽ 다음글: 망했지만 기록용으로 보관 - 그림판(64비트) 메모리 읽기
이용약관 | 광고/제휴 | 개인정보취급방침 | 문의/신고 | 모바일 TE31 | 서버 부하 : 11.75%
실시간 Issue 커뮤니티 TE31 [알지롱] ⓒ 2002-2023
TOP arrow_upward