Kết quả 1 đến 4 của 4
-
14-03-25, 07:47 AM #1
- Ngày tham gia
- Dec 2015
- Bài viết
- 10
- Thanks
- 6
- Thanked 3 Times in 3 Posts
Chia sẻ script Python để dump nhanh danh sách file trong file pak
Như các bạn đã biết để có được danh sách file thuộc file pak thì phải tự mày mò khá lâu nếu không biết cách.
Nay mình viết 1 chương trình python tự động chạy game và bắt những file mà game gọi tới. Bạn chỉ cần bật script là game sẽ tự chạy và chơi 1 lúc là đã có danh sách file để unpack rồi.
Script cũng khá đơn giản nên mình không giải thích nhiều. Nếu ai chưa hiểu script (không phải dân code) thì có thể hỏi trên đây mình sẽ chỉ đầy đủ.
Script có 1 nhược điểm là không lấy được chính xác tên file Trung Quốc do file Trung Quốc đặt encoding kiểu gì đó, mình thử decode nhưng không ra đúng ký tự.
Python code:
import frida
import sys
import os
# Định nghĩa phần prefix cần loại bỏ
PREFIX_TO_REMOVE = r"D:\Kiem-the-client"
# Tên file lưu kết quả
OUTPUT_FILE = "file_paths.txt"
# Đảm bảo file được tạo mới (nếu cần) với mã hóa UTF-8
if not os.path.exists(OUTPUT_FILE):
with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
pass
# Tạo tập hợp lưu các đường dẫn đã ghi
saved_paths = set()
if os.path.exists(OUTPUT_FILE):
with open(OUTPUT_FILE, "r", encoding="utf-8") as f:
for line in f:
saved_paths.add(line.strip())
# Hàm callback xử lý message từ Frida script
def on_message(message, data):
if message['type'] == 'send':
path = message['payload']
# Loại bỏ phần prefix nếu có
if path.startswith(PREFIX_TO_REMOVE):
path = path[len(PREFIX_TO_REMOVE):]
# Nếu đường dẫn chưa được lưu thì ghi vào file
if path not in saved_paths:
saved_paths.add(path)
with open(OUTPUT_FILE, "a", encoding="utf-8") as f:
f.write(path + "\n")
elif message['type'] == 'error':
print("[!] Lỗi từ script:", message['stack'])
# Khởi chạy game.exe qua Frida
pid = frida.spawn(["game.exe"])
session = frida.attach(pid)
# Script hook hàm CreateFileA trong kernel32.dll
script = session.create_script("""
const CreateFileA = Module.getExportByName("kernel32.dll", "CreateFileA");
Interceptor.attach(CreateFileA, {
onEnter: function (args) {
var lpFileName = Memory.readAnsiString(args[0]);
send(lpFileName);
}
});
""")
script.on("message", on_message)
script.load()
# Tiếp tục tiến trình game.exe
frida.resume(pid)
print("[*] Đang theo dõi CreateFileA... Nhấn Ctrl+C để dừng.")
try:
sys.stdin.read()
except KeyboardInterrupt:
print("\n[!] Kết thúc theo dõi.")
session.detach()Khách viếng thăm hãy cùng hdvd2309 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến hdvd2309 vì bài viết này !
quan2051993 (14-03-25)
-
14-03-25, 05:31 PM #2
- Ngày tham gia
- Dec 2012
- Đang ở
- Đà Lạt city
- Bài viết
- 1,998
- Thanks
- 220
- Thanked 1,004 Times in 390 Posts
Ðề: Chia sẻ script Python để dump nhanh danh sách file trong file pak
TQ hình như xài 8859-1
-
Các thành viên gởi lời cảm ơn đến ZhouJieLun vì bài viết này !
hdvd2309 (14-03-25)
-
17-03-25, 09:26 AM #3
- Ngày tham gia
- May 2011
- Đang ở
- Biện Kinh
- Bài viết
- 731
- Thanks
- 222
- Thanked 162 Times in 130 Posts
Ðề: Chia sẻ script Python để dump nhanh danh sách file trong file pak
Code:import frida import sys import os # Định nghĩa phần prefix cần loại bỏ PREFIX_TO_REMOVE = r"D:\Kiem-the-client" # Tên file lưu kết quả OUTPUT_FILE = "file_paths.txt" # Đảm bảo file được tạo mới (nếu cần) với mã hóa UTF-8 if not os.path.exists(OUTPUT_FILE): with open(OUTPUT_FILE, "w", encoding="utf-8") as f: pass # Tạo tập hợp lưu các đường dẫn đã ghi saved_paths = set() if os.path.exists(OUTPUT_FILE): with open(OUTPUT_FILE, "r", encoding="utf-8") as f: for line in f: saved_paths.add(line.strip()) # Hàm callback xử lý message từ Frida script def on_message(message, data): if message['type'] == 'send': path = message['payload'] # Loại bỏ phần prefix nếu có if path.startswith(PREFIX_TO_REMOVE): path = path[len(PREFIX_TO_REMOVE):] # Nếu đường dẫn chưa được lưu thì ghi vào file if path not in saved_paths: saved_paths.add(path) with open(OUTPUT_FILE, "a", encoding="utf-8") as f: f.write(path + "\n") elif message['type'] == 'error': print("[!] Lỗi từ script:", message['stack']) # Khởi chạy game.exe qua Frida pid = frida.spawn(["game.exe"]) session = frida.attach(pid) # Script hook hàm CreateFileA trong kernel32.dll script = session.create_script(""" const CreateFileA = Module.getExportByName("kernel32.dll", "CreateFileA"); Interceptor.attach(CreateFileA, { onEnter: function (args) { var lpFileName = Memory.readAnsiString(args[0]); send(lpFileName); } }); """) script.on("message", on_message) script.load() # Tiếp tục tiến trình game.exe frida.resume(pid) print("[*] Đang theo dõi CreateFileA... Nhấn Ctrl+C để dừng.") try: sys.stdin.read() except KeyboardInterrupt: print("\n[!] Kết thúc theo dõi.") session.detach()
ông thớt chỉnh lại indent đi, python dùng indent phân biệt block mà ông chơi thẳng tuột
à mà file tên là ansi thì sao không lưu ở ansi mà utf8 ?
với lại có thể mở file 1 lần rồi ghi trong hết 1 session chứ cứ đóng mở file liên tụcLần sửa cuối bởi ookurooo, ngày 17-03-25 lúc 09:47 AM.
hóng được share jx2
-
Các thành viên gởi lời cảm ơn đến ookurooo vì bài viết này !
hdvd2309 (17-03-25)
-
17-03-25, 03:06 PM #4
- Ngày tham gia
- Dec 2015
- Bài viết
- 10
- Thanks
- 6
- Thanked 3 Times in 3 Posts
Ðề: Chia sẻ script Python để dump nhanh danh sách file trong file pak
Vâng indent là e hơi lười
Tại e nghĩ 1 số đường dẫn có thể là tiếng Trung nên lưu UTF-8.
Đọc ghi file thì đúng rồi ạ, đang làm k tối ưu.
Tks bác đã chia sẻ.Khách viếng thăm hãy cùng hdvd2309 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
Các Chủ đề tương tự
-
[JX] [Help] Pak Thư Mục UI hoặc spr thành data file pak
Bởi robjnsonsh trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 2Bài viết cuối: 27-04-19, 08:07 AM -
Giúp em sửa lỗi khi Pak file Sound.pak với ạ
Bởi hackonline trong diễn đàn Chinh ĐồTrả lời: 0Bài viết cuối: 03-10-17, 11:48 AM -
[JX] Mấy tiền bối ai biết Pak file thành đuôi .pak rồi gộp lại hog?
Bởi heodat139 trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 0Bài viết cuối: 08-08-15, 11:47 AM -
Blender Cookie: Introduction to Python Scripting for Blender Artists
Bởi apple2000 trong diễn đàn Thư Viện SoftwareTrả lời: 0Bài viết cuối: 20-10-14, 12:30 AM -
[CROSSFIRE] Server incomplete [python] Emulator
Bởi hichay trong diễn đàn Các Server Không Nằm Trong BoxTrả lời: 29Bài viết cuối: 31-08-14, 09:45 AM