wangwei1978 发表于 2015-3-7 11:49:28

让创新声卡KX音效精灵V2.2内部测试版自已显注册码样

   首先让大家看看关于软件介绍,大家度娘应该可以找到:
   创新声卡KX音效精灵是一款专门用于帮助大家调节创新声卡音效的工具。KX驱动的调试和运用对于新手来说比较复杂,河源小编推荐这款创新声卡KX音效精灵,它可帮助用户了解声卡,调试声卡驱动,想要最好的音效效果,那就选KX音效精灵吧。
   这款软件为明码比较的很间单,如何让软件自己显示注册码,我的办法很间单,直接把注册错误提示框中的错提示字串的地址换成真注册码存放的地址,
这样,出错就有真码出现了.但我此次HOOK的地方并非在注册框时,因为此软件在注册时只是记录我们输入注册码并不检验.它属于重启验证.因此要先注册后再使用补丁.我的补丁是Load型补丁.







;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming 3rd Edition>
; by 罗云彬, http://www.win32asm.com.cn
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Patch2.asm
; 使用断点和单步跟踪跳过 Test.exe 上的压缩外壳代码,再进行内存补丁
; 的例子程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff Patch2.asm
; rc Patch2.rc
; Link /subsystem:windows Patch2.obj Patch2.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .586
                .model flat, stdcall
                option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include                windows.inc
include                user32.inc
include                kernel32.inc
includelib        user32.lib
includelib        kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BREAK_POINT1        equ        00405120h
BREAK_POINT2        equ        00401000h
PATCH_POSITION        equ        00401004h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .data?
align                dword
stCT                CONTEXT                <?>
stDE                DEBUG_EVENT        <?>
stStartUp        STARTUPINFO                <>
stProcInfo        PROCESS_INFORMATION        <>
szBuffer        db        1024 dup (?)

                .const
dbPatched        db        90h,90h
dbInt3                db        0cch
dbOldByte        db        60h
szExecFilename        db        'Test.exe',0
szErrExec        db        '无法装载执行文件!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .code
Start:
;********************************************************************
; 创建进程
;********************************************************************
                invoke        GetStartupInfo,addr stStartUp
                invoke        CreateProcess,offset szExecFilename,NULL,NULL,NULL,NULL,\
                        DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS,NULL,NULL,\
                        offset stStartUp,offset stProcInfo
                .if        !eax
                        invoke        MessageBox,NULL,addr szErrExec,NULL,MB_OK or MB_ICONSTOP
                        invoke        ExitProcess,NULL
                .endif
;********************************************************************
; 调试进程
;********************************************************************
                .while        TRUE
                        invoke        WaitForDebugEvent,addr stDE,INFINITE
                        .break        .if stDE.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT
;********************************************************************
; 如果进程开始,则将入口地址处的代码改为 int 3 断点中断
;********************************************************************
                        .if        stDE.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT
                                invoke        WriteProcessMemory,stProcInfo.hProcess,\
                                        BREAK_POINT1,addr dbInt3,1,NULL
;********************************************************************
; 如果发生断点中断,则恢复断点处代码并设置单步中断
;********************************************************************
                        .elseif        stDE.dwDebugEventCode == EXCEPTION_DEBUG_EVENT
                                .if        stDE.u.Exception.pExceptionRecord.ExceptionCode == EXCEPTION_BREAKPOINT
                                        mov        stCT.ContextFlags,CONTEXT_FULL
                                        invoke        GetThreadContext,stProcInfo.hThread,addr stCT
                                        .if        stCT.regEip == BREAK_POINT1 + 1
                                                dec        stCT.regEip
                                                invoke        WriteProcessMemory,stProcInfo.hProcess,\
                                                        BREAK_POINT1,addr dbOldByte,1,NULL
                                                or        stCT.regFlag,100h
                                                invoke        SetThreadContext,stProcInfo.hThread,addr stCT
                                        .endif
;********************************************************************
; 如果单步中断到了指定位置,则进行内存补丁
;********************************************************************
                                .elseif        stDE.u.Exception.pExceptionRecord.ExceptionCode == EXCEPTION_SINGLE_STEP
                                        mov        stCT.ContextFlags,CONTEXT_FULL
                                        invoke        GetThreadContext,stProcInfo.hThread,addr stCT
                                        .if        stCT.regEip == BREAK_POINT2
                                                invoke        WriteProcessMemory,stProcInfo.hProcess,\
                                                        PATCH_POSITION,addr dbPatched,sizeof dbPatched,NULL
                                        .else
                                                or        stCT.regFlag,100h
                                                invoke        SetThreadContext,stProcInfo.hThread,addr stCT
                                        .endif
                                .endif
                        .endif
                        invoke        ContinueDebugEvent,stDE.dwProcessId,stDE.dwThreadId,DBG_CONTINUE
                .endw
                invoke        CloseHandle,stProcInfo.hProcess
                invoke        CloseHandle,stProcInfo.hThread
                invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                end        Start


大家只要修改一下要HOOK的地址及代码就OK,改成下面一样就好了.
00404555    FF7424 20       push dword ptr ss:             ;你的软件没有注册\r\n\r\n请找软件作者免费索取注册码\r\n\r\n单击 是注册或索取注册码
本来不想上传补丁,因为360会报毒,但为了一些和我怕烦的人胆大的人就上传了.只耍和软件同一目录双击就OK了



阳光宅男 发表于 2015-3-7 13:38:36

沙发,支持楼主了

gujin162 发表于 2015-3-7 13:48:42

这个软件好像是不更新了吧

wangwei1978 发表于 2015-3-7 14:16:04

gujin162 发表于 2015-3-7 13:48
这个软件好像是不更新了吧
不知道
朋友叫我搞的,他怕网上补丁不干净

qinccckencn 发表于 2015-3-7 17:43:31

软件在那?好难找啊,呵呵

Nisy 发表于 2015-3-8 11:29:45

感谢分享,好文章。

cgx00 发表于 2015-3-8 15:18:44

好东西 很不错!!支持楼主!

empo 发表于 2015-3-8 22:32:46

谢谢分享..这个不错

龙门之子 发表于 2015-10-4 17:06:31

谢谢楼主。。。收藏了

gblgbl 发表于 2015-12-20 07:35:25

很好!非常實用。
页: [1] 2
查看完整版本: 让创新声卡KX音效精灵V2.2内部测试版自已显注册码样