1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

UDF Đọc bộ nhớ Memory (NormalMemory)

Thảo luận trong 'Chia sẻ mã nguồn' bắt đầu bởi Tungtata, 9/9/15.

  1. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    271
    Đã được thích:
    842
    Nơi ở:
    Hà Nội
    - Đây là thư viện được nhiều người quan tâm nhất khi nói đến AutoIT, bởi nó cho phép lấy thông tin của 1 chương trình hoặc game thông qua bộ nhớ của máy tính (Memory), từ đây lập trình viên có thể làm được rất nhiều việc từ Hack cho đến Auto. Việc sử dụng nó rất khó và cần một số kiến thức của ngôn ngữ lập trình khác cho nên mình chỉ nói bấy nhiêu và kết thức bài ở đây
    - Nói chơi thôi... đúng là nó khó thật nhưng mình sẽ hướng dẫn những thao tác cơ bản, cách dùng một số hàm bên trong thư viện này. Và để dùng được những hàm đó bạn phải Include thư viện này vào chương trình của bạn, hãy tải nó về từ link ở đính kèm rồi lấy cái file NomadMemory.au3 để chung chỗ với chương trình mà bạn đang viết. Ví dụ giờ tạo 1 file TestMemory.au3 để test và làm tut này, thì mình sẽ viết vào đó 2 câu lệnh sau và bấm F5 nếu không có thông báo lỗi gì là cài thư viện thành công:
    Mã (AutoIt):
     ;Cài thư viện vào chương trình
    #include <NomadMemory.au3>
    ;Thử xem thư viện cài thành công không
    _MemoryOpen(72)
     
    - Nếu chạy tốt rồi thì giờ tụi mình bắt đầu phân tích các hàm nhé. Đầu tiên là thằng _MemoryOpen(), hàm này giống như câu thần chú "Vừng ơi mở ra" của Alibaba, phải có cái này tụi mình mới có thể vào được hang kho báu, nơi cất giấu các thông tin của game. Khi đọc câu thần chú này tụi mình còn phải làm thêm một số động tác phụ họa, tức là truyền biến vào.
    [​IMG]
    - Biến đầu tiên là $iv_Pid, nó sẽ chỉ cho câu thần chú biết phải mở cái nào ra trong vô số những hang ở Task Manager. Ví dụ như giờ tụi mình cần mở hang Memory của game Minesweeper có sẵn trong winxp, thì phải lấy được Pid của nó trước bằng lệnh sau:
    Mã (AutoIt):
     ;Mở game Minesweeper
    $iv_Pid=WinGetProcess ("Minesweeper")
    ;Nếu game đang hoạt động thì lệnh trên chắc chắn thành công, việc tiếp theo là mở Memory ra bằng câu lệnh sau:
    ;Mở Memory game Minesweeper ra
    $ah_Handle=_MemoryOpen($iv_Pid)
     
    - Trong câu lệnh mở này còn có 2 biến khác là $iv_DesiredAccess $iv_InheritHandle, có thể bỏ qua và để như mặc định cho đến khi tui mình thành pro thì mới chỉnh lại chúng. Chỉ có biến $ah_Handle là cần lưu ý, hãy tưởng tượng khi đã mở hang ra rồi nếu ta không đánh dấu nó thì chắc chắn alibaba sẽ nhầm lẫn hang đã mở với những cái khác và biến này có nhiệm vụ đó, sau này những hàm khác sẽ dựa vào biến đánh dấu này để lấy thông tin.
    - Ok, hang đã mở giờ bắt đầu lấy thông tin, cũng như Alibaba chúng ta chỉ lấy đúng thứ mình cần không lấy tất cả như thế là tham lam , hơn nữa không nên bắt con "Lừa PC" tải hết 1 lúc toàn bộ địa chỉ của Game ra ngoài. Ví dụ như tụi mình cần lấy thông tin về số lượng cờ để đánh dấu Bom của game (mặc định là 10) tại địa chỉ là 0x01005194 thì dùng câu thần chú khác đó là _MemoryRead()
    Mã (AutoIt):
     ;Địa chỉ chứa thông tin cần lấy
    $iv_Address="0x01005194"
    ;Đọc Memory trong Game
    $var=_MemoryRead($iv_Address , $ah_Handle)
    msgbox (0 ,"hocautoit.com" ,$var)
     
    (Bài viết được đăng trên hocautoit.com, mong đọc giả vào xem ủng hộ Ban Biên Tập viết tiếp cho cộng đồng)
    - Có thể bạn sẽ thắc mắc là biến $ah_Handle dùng để làm gì, nó chính là biến đánh dấu Hang mà ta đã tạo ở trên khi dùng câu thần chú _MemoryOpen(), nó giúp ta lấy chính xác thông tin từ hang Memory đã mở. Trong trường hợp tụi mình mở nhiều hang cùng một lúc thì biến này rất quan trọng.
    - Theo mặc định sẽ có 1 thông báo hiện ra giá trị là 10, bạn có thể Phải Chuột vào các ô trong game hoặc thay đổi chế độ chơi từ Beginner đến Expert để số lượng cờ thay đổi, lúc đó giá trị xuất cũng sẽ thay đổi theo. Nếu nó hiện ra 0 thì có thể đã có lỗi gì đó trong code của bạn, hãy tải ví dụ ở cuối bài về dùng thử cho bảo đảm.
    - Không như Alibaba, ngoài việc lấy thông tin trong hang ta còn có thể thay đổi thông tin trong đó bằng câu thần chú _MemoryWrite()
    Mã (AutoIt):
     ;Ghi vào Memory của Game
    $v_Data=720
    _MemoryWrite($iv_Address , $ah_Handle , $v_Data)
    - Các biến trong câu thần chú này đều khá quen thuộc, $v_Data cũng chỉ là biến chứa giá trị ta cần thay đổi, không có gì đặc biệt chỉ lưu ý rằng địa chỉ chứa thông tin ở dạng số thì ta nên truyền số vào, ví dụ như số lượng cờ là 10, nhưng bạn truyền chữ "alibaba" vào thì chỉ có Thần Đèn mới biết chuyện gì sẽ xảy.

    - Bài hướng dẫn không thể kết thúc nếu không nói đến Game Online đúng không :> Cài này thì mình chỉ có thể khuyên rằng chưa nên áp dụng cho Game Online trong thời điểm mới học AutoIT, bởi các game đó thường có cấu trúc Memory rất phức tạp hay nói khác hơn là cái Hang Memory của những game này là một Mê Cung, bạn không thể đi thẳng 1 mạch tới nơi chứa thông tin cần lấy được.

    - Hãy thực tập trên những game offline, những phần mềm. Sau này để hỗ trợ các bạn tiếp cận game online mình sẽ có những bài viết khác trên những game thật, ngoài ra cũng sẽ có hướng dẫn về Cheat Engine cho những bạn chưa biết cách lấy Địa Chỉ từ Memory lun.
    Ví dụ minh họa: Đính kèm

    Nguồn bài viết: LeeSai - Forum hocautoit.com
     

    Các file đính kèm:

    HungQuynh84, Phan Dong, Malia and 3 others like this.
  2. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    87
    Đã được thích:
    1,729
    Nơi ở:
    Hà Nội
    Giờ mới đọc ! hay quá sếp
     
    chinhdinhluu and Phan Dong like this.
  3. namhbnam

    namhbnam Thành viên mới
    • 3/6

    Tham gia ngày:
    22/4/16
    Bài viết:
    2
    Đã được thích:
    2
    có cách nào quét các ứng dụng hiện tại đang mở và lập tức đóng lại ứng dụng khi một ứng dụng khác không cho phép mở ra không ad.
    Ví dụ: Mình có 1 ứng dụng A, người dùng 1 sẽ dùng bình thường nếu không làm gì cả, nhưng người dùng lại bật một ứng dụng B định can thiệp ứng dụng A của mình. Có cách nào khi người 2 vừa mở ứng dụng B thì ứng dụng A sẽ tắt và đóng luôn ứng dụng B.
    Mong adm hồi đáp sớm.
     
    kamsamita1 thích bài này.
  4. Cô Giáo Thảo

    Cô Giáo Thảo Thành viên
    • 18/23

    Tham gia ngày:
    4/1/16
    Bài viết:
    57
    Đã được thích:
    89
    Nơi ở:
    ĐH Sư Phạm Hà Nội
    ^ nói gì cô chẳng hiểu, người 2 can thiệp vào ứng dụng A kiểu gì? Cùng 1 máy, hay là khác máy, mà khác thì như nào???
    Nói chung cô chẳng hiểu gì cả.
    Đại loại là trên 1 cùng máy, soft B bật lên thì A tắt, B cũng lụi tàn hả?
    Tham khảo
    Winlist (WinExists), WinClose()
    ProcessList (ProcessExists), ProcessClose() nhé bạn.
    Nếu cụ thể hơn thì cô mới giúp được :D
    Thân!
     
    kamsamita1 and Huân Hoàng like this.
  5. UFO

    UFO Thành viên mới
    • 1/6

    Tham gia ngày:
    16/7/16
    Bài viết:
    1
    Đã được thích:
    1
    Cái địa chỉ "0x01005194" lấy ở đâu ra vậy, làm sao để có dc vậy bạn
     
    kamsamita1 thích bài này.
  6. dathtlavender

    dathtlavender Thành viên mới
    • 3/6

    Tham gia ngày:
    28/9/16
    Bài viết:
    4
    Đã được thích:
    2
    cái này bạn phải lấy bằng cheat engine hoặc art money bạn nhé
     
    kamsamita1 thích bài này.
  7. hailongdoan

    hailongdoan Thành viên mới
    • 1/6

    Tham gia ngày:
    21/7/16
    Bài viết:
    6
    Đã được thích:
    3
    Anh có thể hướng dẫn tìm thông số game bằng cheat engine dc ko ạ ??
     
    kamsamita1 thích bài này.
  8. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    231
    Đã được thích:
    200
    google + youtube là ra hết b ơi. :D search = tiếng anh nhé
     
    kamsamita1 thích bài này.
  9. hailongdoan

    hailongdoan Thành viên mới
    • 1/6

    Tham gia ngày:
    21/7/16
    Bài viết:
    6
    Đã được thích:
    3
    Có bài hướng dẫn search address game Minesweeper ko ạ cho e xin vs
     
  10. A I love you

    A I love you Thành viên mới
    • 1/6

    Tham gia ngày:
    24/7/19
    Bài viết:
    1
    Đã được thích:
    0
    Bài viết rất bổ ích, cám ơn ad.
     
  11. việt adnh

    việt adnh Thành viên mới
    • 1/6

    Tham gia ngày:
    14/3/20
    Bài viết:
    6
    Đã được thích:
    0
    em bật nomadmemory.au3 mà ko đc, phải dán file này vào đâu ạ
     
  12. Trầm Cảm

    Trầm Cảm Thành viên
    • 8/11

    Tham gia ngày:
    10/5/19
    Bài viết:
    37
    Đã được thích:
    8
    Bật cái gì vậy bạn ? Ở trên có 2 file đó bạn down về cùng thư mục rùi chạy cái file testmemory ấy.
     
  13. việt adnh

    việt adnh Thành viên mới
    • 1/6

    Tham gia ngày:
    14/3/20
    Bài viết:
    6
    Đã được thích:
    0
    em mở nomadmemory.au3 thi bị lỗi ai giúp em vs ạ
     
  14. #Rainy# Hoàng Vũ IT

    #Rainy# Hoàng Vũ IT Hoàng Vũ IT
    • 28/34

    Tham gia ngày:
    21/11/16
    Bài viết:
    327
    Đã được thích:
    90
    Nơi ở:
    Quận 12 TP. Hồ Chí Minh
    Bạn chụp hình lỗi hoặc video úp lên. Bạn học khoá học căn bản đi. Mình nghĩ đến cách copy code bạn hình như còn k rõ thì phải.
     
  15. việt adnh

    việt adnh Thành viên mới
    • 1/6

    Tham gia ngày:
    14/3/20
    Bài viết:
    6
    Đã được thích:
    0
    ok chupj video guiwr facebook nha
     
  16. việt adnh

    việt adnh Thành viên mới
    • 1/6

    Tham gia ngày:
    14/3/20
    Bài viết:
    6
    Đã được thích:
    0
    uk ảnh lỗi nè,https://i.imgur.com/QuQluTa.jpg mong bạn giúp mik. Mik tải cái nomadmemory.au3 r nhé
     
    Chỉnh sửa cuối: 15/3/20
  17. việt adnh

    việt adnh Thành viên mới
    • 1/6

    Tham gia ngày:
    14/3/20
    Bài viết:
    6
    Đã được thích:
    0

Chia sẻ trang này

Đang tải...