mirror of https://github.com/cosine0/dllhook.git
59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
# you can download alsong at http://www.altools.co.kr/Download/ALSong.aspx
|
|
# run: python -mdllhook "C:\Program Files (x86)\ESTsoft\ALSong\ALSong.exe" alsong_skip_logging.py
|
|
from __future__ import print_function
|
|
import datetime
|
|
import dllhook
|
|
import ctypes
|
|
import sqlite3
|
|
import os
|
|
|
|
|
|
db_file = os.path.expanduser(r'~\Desktop\alsong_skip_log')
|
|
cursor = None
|
|
|
|
|
|
@dllhook.hook_dll(u'ALSongCommon.dll', b'?AudioPlay@CAudio@@QAEHUAUDIO_ITEM@@@Z')
|
|
def play_hook(a1, a2, a3, a4, a5, a6):
|
|
# arg6 == &file name (utf16-le, null-terminated)
|
|
global cursor
|
|
if cursor is None:
|
|
cursor = sqlite3.connect(db_file,
|
|
isolation_level=None).cursor()
|
|
cursor.execute('CREATE TABLE IF NOT EXISTS alsong (time TEXT, action TEXT, name TEXT);')
|
|
name = ctypes.wstring_at(a6)
|
|
print(datetime.datetime.now().isoformat(), 'play', name)
|
|
cursor.execute("INSERT INTO alsong (time, action, name) VALUES (current_timestamp, 'play', ?);", (name,))
|
|
|
|
|
|
@dllhook.hook_dll(u'ALSongCommon.dll', b'?AudioStop@CAudio@@QAEHXZ')
|
|
def stop_hook():
|
|
global cursor
|
|
if cursor is None:
|
|
cursor = sqlite3.connect(db_file,
|
|
isolation_level=None).cursor()
|
|
cursor.execute('CREATE TABLE IF NOT EXISTS alsong (time TEXT, action TEXT, name TEXT);')
|
|
print(datetime.datetime.now().isoformat(), 'stop')
|
|
cursor.execute("insert into alsong (time, action) values (current_timestamp, 'stop');")
|
|
|
|
|
|
@dllhook.hook_dll(u'ALSongCommon.dll', b'?AudioPause@CAudio@@QAEHXZ')
|
|
def pause_hook():
|
|
global cursor
|
|
if cursor is None:
|
|
cursor = sqlite3.connect(db_file,
|
|
isolation_level=None).cursor()
|
|
cursor.execute('CREATE TABLE IF NOT EXISTS alsong (time TEXT, action TEXT, name TEXT);')
|
|
print(datetime.datetime.now().isoformat(), 'pause')
|
|
cursor.execute("INSERT INTO alsong (time, action) VALUES (current_timestamp, 'pause');")
|
|
|
|
|
|
@dllhook.hook_dll(u'ALSongCommon.dll', b'?OnAudioResume@CAudio@@MAEXXZ')
|
|
def resume_hook():
|
|
global cursor
|
|
if cursor is None:
|
|
cursor = sqlite3.connect(db_file,
|
|
isolation_level=None).cursor()
|
|
cursor.execute('CREATE TABLE IF NOT EXISTS alsong (time TEXT, action TEXT, name TEXT);')
|
|
print(datetime.datetime.now().isoformat(), 'resume')
|
|
cursor.execute("INSERT INTO alsong (time, action) VALUES (current_timestamp, 'resume');")
|