0x00 實現原理:
通過互斥體進行判斷是實現防多開最傳統的方式之一
定位到關鍵判斷的位置,並且修改程序跳轉邏輯就可以實現多開
下面先介紹具體操作,然后介紹分析過程
0x01 具體操作:
找到微信的安裝路徑,在目錄下找到 WeChatWin.dll :
使用二進制工具打開該文件,並且定位到下圖中的位置,然后修改成圖中的數據(只需要修改圖中箭頭所指的一個字節):
修改完成之后記得保存,然后驗證:
0x02 分析過程:
先正常啟動一個微信,然后通過調試器啟動一個微信,調試器首次斷下之后在命令欄使用下面的命令設置斷點:
bp Kernel32.CreateMutexA
bp Kernel32.CreateMutexW
查看斷點是否設置成功:
確認斷點設置成功之后全速執行程序,調試器再次斷下:
可以發現命中了 CreateMutexW 的斷點,同時可以在堆棧窗口看到該函數的參數
單步調試跟蹤到調用的位置:
到這里代碼的邏輯結構就比較清晰了,修改上圖2個箭頭所指向的跳轉指令的任意一處即可:
這里將第一處位置的 je 指令修改為 jmp 指令,硬編碼從 74 變成了 EB
同時記住這里的地址,在調試器中查看進程的模塊列表:
通過地址范圍,可以確定該代碼位於 WeChatWin.dll 這個文件中
可以在這段代碼的附近選擇一段可靠的硬編碼作為 特征碼
使用二進制工具打開 WeChatWin.dll 文件並通過特征碼定位目標位置進行修改
文件具體修改過程參考前面 0x01 中的內容









