灰鸽子远程控制软件

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12819|回复: 1

QQ勋章墙全版本通用补丁v2.0 (附源码) 配图+下载地址

[复制链接]
发表于 2017-12-14 10:58:46 | 显示全部楼层 |阅读模式
QQ勋章墙全版本通用补丁v2.0 (附源码) 配图+下载地址

QQ勋章墙全版本通用补丁v2.0

QQ勋章墙全版本通用补丁v2.0

本工具非写入预定文件,而是在当前版本的dll基础上修改,保证了稳定性
在腾讯修改勋章墙功能前,本工具是可以一直用下去的


本地测试通过,测试环境:winxp,windows10 x64
python编译版本:2.7.14

下载地址:https://pan.baidu.com/s/1hsnJVdq 密码:boav

使用方法:
1. 下载exe直接运行即可,无需关闭QQ。
2. 电脑有python环境的下载源码,自行运行。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
import os
import _winreg
from time import sleep
import subprocess
 
 
Debug = False
version = '2.0'
 
def main():
    qqdir = ''
    dllfile = ''
     
    try:
        if ('PROGRAMFILES(X86)' in os.environ) == True:
            key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\Wow6432Node\Tencent\QQ2009",)
        else:
            key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\Tencent\QQ2009",)
    except WindowsError, e:
        print('can\'t find qqdir, maybe not install')
    else:
        qqdir = _winreg.QueryValueEx(key, "Install")[0]
        if Debug == True:
            print('[Debug] ' + qqdir)
        if qqdir != '':
            dllfile = qqdir + "\\bin\\OPMiscDll.dll"
            print('[Info] qqdir: ' + qqdir)
            crack(dllfile)
        else:
            print('[Error] can\'t find qqdir, maybe file is missing')
         
def crack(path):
    print('[Info] find file succeed: OPMiscDll.dll')
    print('[Info] start kill progress: QQExternal.exe')
     
    cmd = "taskkill /F /IM QQExternal.exe 2>nul 1>nul"
    ret = subprocess.Popen(cmd, shell=True)
    ret.wait()
     
    f = open(path, 'rb')
    filecontent = f.read()
    f.close()
    byte = bytearray(filecontent)
    if len(byte) == 0:
        print('[Error] read file failed: OPMiscDll.dll')
    else:
        result = modify(byte)
        if filecontent != result:
            g = open(path + '.new', 'wb')
            g.write(result)
            g.close()
         
            if os.path.exists(path):
                if os.path.exists(path + '.bak'):
                    os.remove(path + '.bak')
                sleep(1)
                if Debug == True:
                    print('[Debug] ' + path)
                print('[Info] backup file to OPMiscDll.dll.bak')
                os.rename(path, path + '.bak')
            if os.path.exists(path + '.new'):
                print('[Info] build new OPMiscDll.dll')
                os.rename(path + '.new', path)
     
def modify(byte):
    index = find(1, 0, ['b3', '01', 'eb', '02', '32', 'db', '0f'], byte);
    if (index != 0):
        index2 = find(2, index, ['ff', 'ff', '8a', 'd8', '0f', 'b6', 'd3'], byte);
        if (index2 != 0):
            index3 = find(3, index2, ['32', 'db', 'eb', '02', 'b3', '01', '0f'], byte);
            if (index3 != 0):
                index4 = find(4, index3, ['b3', '01', 'eb', '02', '32', 'db', '0f'], byte);
                if (index4 != 0):
                    index5 = find(5, index4, ['00', '00', '8a', 'd8', '0f', 'b6', 'd3'], byte);
                    if (index5 != 0):
                        index6 = find(6, index5, ['00', '00', '8a', 'd8', '0f', 'b6', 'd3'], byte);
 
    if (index != 0 and index2 != 0 and index3 != 0 and index4 != 0 and index5 != 0 and index6 != 0):
        byte[index] = int('b3', 16)
        byte[index + 1] = int('01', 16)
        byte[index2] = int('b3', 16)
        byte[index2 + 1] = int('01', 16)
        byte[index3] = int('b3', 16)
        byte[index3 + 1] = int('01', 16)
        byte[index4] = int('b3', 16)
        byte[index4 + 1] = int('01', 16)
        byte[index5] = int('b3', 16)
        byte[index5 + 1] = int('01', 16)
        byte[index6] = int('b3', 16)
        byte[index6 + 1] = int('01', 16)
        print('[Info] patch succeed')
    else:
        print('[Error] patch failed, maybe it already patched')
    return byte
 
def find(id, index, param, source):
    result = 0
     
    for i in range(index, len(source)):
                 
        if source == int(param[0], 16):
            if source[i + 1] == int(param[1], 16):
                if source[i + 2] == int(param[2], 16):
                    if source[i + 3] == int(param[3], 16):
                        if source[i + 4] == int(param[4], 16):
                            if source[i + 5] == int(param[5], 16):
                                if source[i + 6] == int(param[6], 16):
                                    if id == 3:
                                        result = int(i)
                                    elif id == 2 or id == 5 or id == 6:
                                        result = int(i + 2)
                                    else:
                                        result = int(i + 4)
                                    print('[Info] find ' + str(id) + ': ' + str(result))
                                    return result
                                 
    return result
                                                                         
if __name__ == '__main__':
    print("[Info] ==========================")
    print("[Info] http://www.52pojie.cn")
    print("[Info] ==========================")
    print("[Info] ")
    print("[Info] medalwall patch... v" + version)
    print("[Info] ")
    main()
    print("[Info] all mission done, Press any key to exit...")
    import msvcrt
    while True:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if ord(msvcrt.getch()) < 255:
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break
评帖赚银币(0) 收起
回复

使用道具 举报

发表于 2017-12-15 19:15:34 | 显示全部楼层
的点点滴滴多多多多多多多多多多多多多多多多多多多多多多多多多多
评帖赚银币(0) 收起
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|灰鸽子远程控制软件|灰鸽子远程控制软件 ( 鲁ICP备14000061号-4 )

GMT+8, 2024-11-23 05:57 , Processed in 0.066945 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表