




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教你注册机和补丁的制作一、概念介绍 何为注册机?注册机就是针对某一软件,通过一定算法算出注册码的程序。我们写注册机时,一般 都要了解注册码的算法(这当然是通过跟踪调试了解的),之后用汇编语言或其它高级语言来把算法还原。这样大家可根据自己的要求输入注册码,如根据自- 一、概念介绍 何为注册机?注册机就是针对某一软件,通过一定算法算出注册码的程序。我们写注册机时,一般都要了解注册码的算法(这当然是通过跟踪调试了解的),之后用汇编语言或其它高级语言来把算法还原。这样大家可根据自己的要求输入注册码,如根据自己的姓名,公司的名称注册。目前共享软件有两种注册方式: 一 种是交费后,作者给寄有全部功能的 Register软件,原来的Shareware根本没有某些功能; 第二种交费后, 作者给你个注册码(RegisterNumber),注册后功能就无限制了 。 共享软件注册前后基本相同 , 只是功能受限制 ,或者使用时间受限制 ,或者经常出现要求注册的画面 , 等等 。 我们平时所接触的共享软件是第二种,通过算出注册码或打补丁使该软件有注册后的功能。 软件的破解也分两种: 一是、补丁( patches ), 这些小程序的功能是用来改变某种软件内某些特定的部位, 因此它们的作用通常只限于某一个软件的版本。请勿使用针对不同版本所设计的 patch,必须注意所使用软件版本的版本号与 patch 是否相同 。倘若使用不当,将导至错误信息,会破坏程序,严重时也有可能死机!二是、序列号 (serialnumber) 和注册码 (keygenerator) 就显的安全多了。有时候旧版的序号亦适用于新出的版本,就算不能用也毫无伤害。只有在极少数的情况下软件作者会设下某些陷阱,当使用者输入黑名单上的序号后 , 软件会自动销毁而无法使用。通过补丁和注册机可以大大方便用户的注册,就是目前有不少的程序,它的注册码都与硬件有关,就是在每一台机上安装都有一个机器码,要把这个机器码E-MAIL给作者, 作者把收到的机器码用注册程序算出注册码后再寄回给用户,这样做使得软件的防复制方面加强了,但造成了不少用户的麻烦,因为只要用户一重装系统或升级主板 ,就要重新去注册了。对于这种程序,一般初学者只能在内存中找到自己机器的注册码,但这种注册码到了其它的机器上又不能用了。所以要求大家能自己写出注册机来。而有的软件注册码计算很复杂,或只是试用版,到期就停止使用,根本无法输入注册码。对这类软件只能通过改动原程序代码指令,但如何让大家很方便地解除限制,当然你可把改动的字节告诉大家,用二进制编辑工具修改,但很不方便。所以大家有必要自己制作补丁程序,只要用户运行该补丁程序,让它帮你改动指定的代码,就可解除原软件限制,是不是很方便。二、补丁制作1、文件补丁制作今天我们接触补丁制作工具是CodeFusion,界面制作也不错,它有以下功能:1、可以自动比较补丁前后的差别2、可以对字节逐个补丁,也可以使用普通和模板两种查找、替换;3、补丁前后的文件尺寸可以不同;4、可以对单个文件补丁,也可以处理多个不同盘、不同目录、甚至名字并不匹配的多个文件;5、界面文字和链接等完全定制;6、可以使用内置和外部的压缩器;也可以不压缩自行修改窗体;为了使初学者能更快掌握这一工具使用,我就把一补丁最常用的制作过作写下来。首先建立一个临时目录C:TEMP(只是为了下面讲述的方便罢了).并在其下建立两个子目录,分别为C:TEMP1以及 C:TEMP2. 以网络吸血鬼NET VAMPIRE 3.2为例: 将没有CRACK的主程序VAMPIRE.EXE拷到C:TEMP1目录下. 将已经CRACK的主程序VAMPIRE.EXE拷到C:TEMP2目录下.(图一)是用CodeFusion制成的补丁程序运行的界面。(图一)界面还是不错的,只要你用用CodeFusion,你就发现它很容易上手。第一步、运行CodeFusion,界面如图二:(图二)图一和图二中的数字1、2、3、4、5是彼此对应的,要得到(图一)结果只需在(图二)中键入你自己的说明即可。你自己定制好界面可以存盘,存盘名是*.cfp,以后你只要打开该文件,就可出现所要的界面。很简单,自己摸索一下就能掌握。第二步、定制好界面后,可以按预览按钮(就是上面的眼睛图标)看看界面自己是否满意,满意后按下一步。(图三)在图三中,按(1)处的绿色的十字,以添加原文件(在这里是吸血鬼的原主文件),按1后出现左边的一窗口,按2选择吸血鬼的原主文,选好按Ok即可。第三步、这一步按图四的1处的绿色十字,出现如下结果:(图四)按上图中的2处是文件比较。第3处是Byte-path offset,在原文件中指定的地址处打字节补丁。第4处是Find &Replace,在原文件查找替换字节。第五处是Truncate offset,从指定地址处切断原文件。3,4,5的用处我在这里就不写了,大家可自己试试。第四步、用鼠标按图四中的2处(File Compare)出现图五,选择己被crack的文件,进行比较,在这里是C:TEMP2目录下, 已经CRACK的主程序VAMPIRE.EXE。教你注册机和补丁的制作(2)在1 处选择C:TEMP2目录下, 已经CRACK的主程序VAMPIRE.EXE。下一步按第2处的compare,进行两文件的比较,比较结束后按Ok,再按下一步。 第五步,这是最后一步,出现 图六 。 (图六) 在这界面上的各项选项就以默- 在1 处选择C:TEMP2目录下, 已经CRACK的主程序VAMPIRE.EXE。下一步按第2处的compare,进行两文件的比较,比较结束后按Ok,再按下一步。第五步,这是最后一步,出现图六。(图六)在这界面上的各项选项就以默认值为主,它们都是些压缩选项,压缩补丁以保护你的版权。最后一步按1处(Make win32 Executable),选择路径、文件名,生成你的补丁。好了你可以把这补丁散发给大家,真可谓,辛苦你一人,方便千万人啊!该软件的其它功能,大家自己再摸索一下,是不是很直观好用。2、内存补丁制作2.1 R!SCsPatcher 工具使用简介 RPP.EXE 是内存动态补丁制作软件。它通过脚本命令创建 win32 文件,以此文件装载程序,装载过程中等待软件解压或解除其自身保护后,然后按脚本要求修补内存中的指令,以使软件能够按我们要求运行。如 ACDSEE3.0 是用 ASPACK 压缩软件,你 crack 时发现在内存地址 433FEA 处把 6A00 改成 EB17 就可成功,但你不可能直接修改压缩过的 ACDSEE.EXE 文件;这里就可用 RPP.EXE 按我们要求生成一 LOAD.EXE 文件,首先运行 LOAD.EXE ,它自动装载 ACDSEE.EXE, 等其自解压完成后,然后修改内存 433FEA 地址为 EB17, 这样 ACDSEE.EXE 就可按我们要求运行了,不过我不赞成用此法对付 ACDSEE.EXE ,因为 ACDSEE.EXE 运行有两种界面,其中 VIEW 界面用此法不太灵。 RPP.EXE 还可很方便对付 NAG (一些提示、警告窗口的软件),如用 NEOLITE2.0Y 压缩过的软件运行之前弹出来的那种窗口,当然也有专门除掉 NAG 的工具。 用法在资源管理器中双击 rpp.exe 文件,它弹出一菜单,你选择事先编好的脚本文件,然后按 OK 。 或在 WINDOWS 下的 DOS 窗口下用命令方式“ rpp.exe ”,其中 script.rpp 为脚本命令文件。 如你的输出文件己存在,它将覆盖。在命令方式下,脚本文件可是任何文件名和扩展名;但在对话窗口操作方式下,文件名必须为 *.rpp 脚 本 命 令 - ; 注释符号 , 跟着的只是些说明 , 不会执行的 , 直到下一行 . T= 表示对内存的检测次数, T=1000: 意味着对内存检测 1000 次,在放弃之前,告诉你的应用程序是 不正确的版本。 注意:在脚本文件里,默认值 T=8000 。 F= 需要补丁的文件名 O= 生成的补丁文件名 , 如你没指定文件名,默认为 LOAD.EXE P= 如何在内存补丁 , 格式:内存地址 / 原码 / 补码 具体看看脚本的例子 R: 把前面需要补的全部补好后 , 再继续 , 可以看看 azpr243.rpp 这个例子 : 每一行都要以冒号结尾 , 相当于回车 $ 脚本结束标志 所有数字采用 16 进制 内存地址和原码都符合才会进行补丁 , 字节间请用逗号分开。脚本文件不能大于 40K, 被补的字节有限为 1f0h 字节,被处理的原文件不小于 30h 字节。 脚本例子 ;script.rpp T=1000:; 对内存尝试 1000 次补丁 , 不行则放弃 , 如果不设默认为 8000 F=test.exe:; 要补丁的程序 P=40101D/74,60/74,00:; 将命令 jzxx 改为 jznextinstruction P=4024A6/46,52,45,45,20/52,21,53,43,00:; 将字符 FREE 替换成 R!SC $; 结束 具体的脚本范例大家可参考其自带的 Scripts.zip 。 一些问题 下面是一有趣的试验,写一脚本文件,输入输出名一样,产生一执行文件,该文件将不断装载其自身 最后导致 windows 崩溃,你只好重新启动了。 P=401000/68/B8: F=fun.exe: O=fun.exe:, 然后运行 fun.exe 不一会你只好重新启动微机了 :) 2.2 如何写Loader 作者:夜月 E-mail: 写作日期:31th, August 2001 使用的工具 Trw2000 V1.23-Win9X Debugger Masm32 V5.00-Loader Compiler 难易程度 Easy( ) Medium(X) Hard( ) Pro( ) -=Declare=- 未经作者同意,不得修改、引用原文,一切权利保留。 本教程只供教学用,其他一切用途皆被禁止。 -=Begin=- 以Director 7.0为例,和大家谈谈如何写 Loader。当然,破解Director 7.0并不一定需要Loader, 它既没加壳,也没有CRC校验,完全可以用Patch的方法。但我这篇文章的目的不是教你如何破解Director, 而是教你如何写Loader。Clearly? Ready? Go! Director 7.0也是一个狗保护的软件,和Authorware差不多。跟踪过程并不复杂,在此略去。 程序判断的关键点: * Referenced by a CALL at Address: |:00445A24 | :0058CC24 53 push ebx :0058CC25 32DB xor bl, bl :0058CC27 E835000000 call 0058CC61 :0058CC2C 83F852 cmp eax, 00000052 :0058CC2F 741D je 0058CC4E :0058CC31 83F856 cmp eax, 00000056 :0058CC34 7418 je 0058CC4E :0058CC36 3D76030000 cmp eax, 00000376 :0058CC3B 7411 je 0058CC4E :0058CC3D 3D54030000 cmp eax, 00000354 :0058CC42 740A je 0058CC4E :0058CC44 83F841 cmp eax, 00000041 :0058CC47 7405 je 0058CC4E :0058CC49 83F851 cmp eax, 00000051 :0058CC4C 7502 jne 0058CC50 教你注册机和补丁的制作(3)* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:0058CC2F(C), :0058CC34(C), :0058CC3B(C), :0058CC42(C), :0058CC47(C) | :0058CC4E B301 mov bl, 01 * Referenced by a (U)ncondition-* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:0058CC2F(C), :0058CC34(C), :0058CC3B(C), :0058CC42(C), :0058CC47(C) | :0058CC4E B301 mov bl, 01 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0058CC4C(C) | :0058CC50 E83E000000 call 0058CC93 :0058CC55 84C0 test al, al :0058CC57 7402 je 0058CC5B :0058CC59 B301 mov bl, 01 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0058CC57(C) | :0058CC5B 8AC3 mov al, bl -改为 mov al,1 :0058CC5D 5B pop ebx :0058CC5E C20400 ret 0004 Loader的写作思路很简单,主要是你要知道有这些个API存在。我买了一本32位汇编的书,上面 竟然说在Window98里面,不能对别的进程进行读写。幸亏有论坛精华2中,DDXia翻译的一篇文章上 面有介绍如何读写别的进程,不然,我到现在还被蒙在鼓里。哎!现在的书呀,真有误人子弟的嫌疑了。 写Loader要用到的几个API函数: (1) BOOL GetOpenFileName( LPOPENFILENAME lpofn / 指向一个OPENFILENAME的结构 ); 该函数的作用是得到要被Load的程序的路径以及文件名 (2) (摘自罗云彬的Win32Asm教程) BOOL CreateProcess( LPCTSTR lpApplicationName, / 执行程序文件名 LPTSTR lpCommandLine, / 参数行 LPSECURITY_ATTRIBUTES lpProcessAttributes, / 进程安全参数 LPSECURITY_ATTRIBUTES lpThreadAttributes, / 线程安全参数 BOOL bInheritHandles, / 继承标记 DWORD dwCreationFlags, / 创建标记 LPVOID lpEnvironment, / 环境变量 LPCTSTR lpCurrentDirectory, / 运行该子进程的初始目录 LPSTARTUPINFO lpStartupInfo, / 创建该子进程的相关参数 LPPROCESS_INFORMATION lpProcessInformation / 创建后用于被创建子进程的信息 ); 改函数的作用是创建进程,使被Load的程序运行起来 (3) BOOL ReadProcessMemory( HANDLE hProcess, / 被读的进程的句柄 LPCVOID lpBaseAddress, / 开始读的地址 LPVOID lpBuffer, / 读完后,数据存放的地址 DWORD nSize, / 要读的数量,以字节为单位 LPDWORD lpNumberOfBytesRead / 实际上读的数量,以字节为单位 ); 改函数的作用是读去一片范围的内存,可以作校验用看看运行的进程是不是我们要Load的那个。 (4) BOOL WriteProcessMemory( HANDLE hProcess, / 被写的进程的句柄 LPVOID lpBaseAddress, / 开始写的地址 LPVOID lpBuffer, / 要写入的数据存放地址 DWORD nSize, / 要写的数量,以字节为单位 LPDWORD lpNumberOfBytesWritten / 实际上写的数量,以字节为单位 ); 写一个Loader要用的主要就是这4个函数。 还有一个问题:如果程序被加壳了,我们如何知道它已经在内存里面节压缩完毕? R!sc用的是WaitForInputIdle的方法。这个方法很不错,对付大多数的壳都可以行得通。 但是,对于这个程序而言,就没有WaitForInputIdle的必要了。因为它并没有加壳。 好了,下面看看我写的这个Loader的源代码: Loader源代码(load.exe): -Cut From Here- ; ;* ; 主程序 * ;* .386p .model flat,stdcall option casemap :none include windows.inc include kernel32.inc include user32.inc include comdlg32.inc include comctl32.inc includelib kernel32.lib includelib user32.lib includelib comdlg32.lib includelib comctl32.lib ;* ; Normal Data * ;* .data CSiR_Tag db PE LOADER & CRACKER-ROBOTOW 2001,0 CSiR_Error db Error!,0 CSiR_Error1 db Something fucked up.,0 OpenERR_txt db CreateProcess Error :( ,0 ReadERR_txt db ReadProcess Error :(,0 WriteERR_txt db WriteProcess Error :P,0 VersionERR_txt db Incorrect Version of application :(,0 CSiR_ProcessInfo dd 4 dup(0) CSiR_StartupInfo db 48h dup(0) CSiR_RPBuffer db 10h dup(0) szFilter db Director.exe,0,Director.exe,0 db Execute Files,0,*.exe,;*.com,0 db 0 szTitleOpen db Find Director.exe,0 szExt db *.exe,0 ;* ; Patch Data * ;* CSiR_AppName OPENFILENAME CSiR_AppName_Buffer db 512 dup(?) fuck dd 58cc5bh mysizeof dd 6h checkbytes db 08Ah,0C3h,05Bh,0C2h,04h,00h patch_data_1 db 0B0h,0 patch_size_1 dd 2 patch_addr_1 dd 58cc5bh .code Start: invoke InitCommonControls invoke GetModuleHandle,NULL mov CSiR_AppName.Flags,OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST mov CSiR_AppName.lStructSize,SIZEOF CSiR_AppName mov CSiR_AppName.hwndOwner,eax mov CSiR_AppName.lpstrFilter,offset szFilter mov CSiR_AppName.lpstrFile,offset CSiR_AppName_Buffer mov CSiR_AppName.nMaxFile,512 mov CSiR_AppName.lpstrInitialDir,0 mov CSiR_AppName.lpstrTitle,offset szTitleOpen mov CSiR_AppName.lpstrDefExt,offset szExt invoke GetOpenFileName,offset CSiR_AppName mov dword ptr CSiR_StartupInfo,44h invoke CreateProcessA,offset CSiR_AppName_Buffer,0,0,0,0,20h,0,0, offset CSiR_StartupInfo,offset CSiR_ProcessInfo test eax,eax jz OpenERR invoke ReadProcessMemory,CSiR_ProcessInfo,fuck,offset CSiR_RPBuffer, mysizeof,0 test eax,eax jz ReadERR cld lea esi,CSiR_RPBuffer lea edi,checkbytes mov ecx,6 repe cmpsb jnz VersionERR Patch: 教你注册机和补丁的制作(4)invoke WriteProcessMemory,CSiR_ProcessInfo,patch_addr_1,offset patch_data_1, patch_size_1,0 test eax,eax jz WriteERR close_this_app: invoke CloseHandle,CSiR_ProcessInfo invoke CloseHandle,C-invoke WriteProcessMemory,CSiR_ProcessInfo,patch_addr_1,offset patch_data_1, patch_size_1,0 test eax,eax jz WriteERR close_this_app: invoke CloseHandle,CSiR_ProcessInfo invoke CloseHandle,CSiR_ProcessInfo+4 invoke ExitProcess,NULL VersionERR: lea eax,VersionERR_txt jmp abort ReadERR: lea eax,ReadERR_txt jmp abort WriteERR: lea eax,WriteERR_txt jmp abort OpenERR: lea eax,OpenERR_txt abort: invoke MessageBox,0,eax,offset CSiR_Error,0 jmp close_this_app End Start -Cut End- -=Last Words=- 看过TKC教程的人都会发现,我写的这个Loader,和R!sc的相差无几。的确,R!sc的这个程序的框架 很不错,可以很方便地通过改变很小的代码而实现我们想要的不同功能。 :) -=Ending=- aNY qUESTIONS,pLEASE eMAIL tO: Thanks To All!Good Luck! 三、注册机制作工具1、CrackCode2000使用介绍以前我们写注册机时,一般都要了解程式的算法,之后用汇编语言或 C 语言来把算法还原,这样做一个注册机一般都有要花不少的时间,而且要对汇编语言和编程有比较高的要求,所以对于初学者来说,是一件很难的事情,对于不少的初学者 ,有时他们能在内存中找到注册码,但却没有能力写出注册机来,这大大削弱了他 们的破解积极性,但还有更可恶的事,就是目前有不少的程式,它的注册码都与硬 件有关,就是在每一台机上安装都有一个机身码,要把这个机身码 E-MAIL 给作者,作者把收到的机身码用注册程式算出注册码后再寄回给用户,这样做使得软件的防 复制方面加强了,但造成了不少用户的麻烦,因为只要用户一重装系统或升级主板 ,就要重新去注册了。对于这种程式,一般初学者只能在内存中找到自己机器的注 册码,但这种注册码到了其它的机器上又不能用了,而自己又没有办法写出注册机来,为了解决这方面的问题,我写了一个小软件,它可以从另一进程内存中取出注 册码来,显示出来,而不需要你去了解注册程式的算法,但它的应用面是很有限的, 只能对付符合以下条件的软件: 一、必须在内存中或在寄存器中可以找到正确的注册码; 二、被取注册码的软件不能反跟踪程式; 三、被取注册码的软件的比较部分程式是静态的存在的; 四、注册码比较程式只作比较注册码使用。 好了,讲了这么多,不如来个例子说明一下如何使用它吧!哦对了,大家还不知那 个东西是什么呢?它叫 CrackCode2000 啊! 以下是一个软件的注册码比较程式,大家不要问我怎么样得到了,大家只要听下去 就可以了。 015F:004149D28A06MOVAL,ESI 这里放你的输入的注册码 015F:004149D484C0TESTAL,AL 015F:004149D6740DJZ004149E5 015F:004149D88A11MOVDL,ECX 这里放正确的注册码 015F:004149DA41INCECX 015F:004149DB46INCESI 015F:004149DC3AC2CMPAL,DL 015F:004149DE751FJNZ004149FF 015F:004149E0803900CMPBYTEPTRECX,00 015F:004149E375EDJNZ004149D2 015F:004149E5803900CMPBYTEPTRECX,00 015F:004149E87515JNZ004149FF 015F:004149EA803E00CMPBYTEPTRESI,00 015F:004149ED7510JNZ004149FF 015F:004149EFB801000000MOVEAX,00000001 最后正确就把 EAX=1 015F:004149F45FPOPEDI 015F:004149F55EPOPESI 015F:004149F65DPOPEBP 015F:004149F75BPOPEBX 015F:004149F881C460030000ADDESP,00000360 015F:004149FEC3RET 好了,大家在 Winsoftice 下以下的命令可以看到: :desi 0167:0041F1F83438343834383438-3438343800000000484848484848. 0167:0041F2080000000000000000-0000000000000000. 0167:0041F218040D000000000000-0000000000000000. 0167:0041F2280000000000000000-0000000000000000. 0167:0041F2380000000000000000-0000000000000000. 0167:0041F2480000000000000000-00C000000A040000. 0167:0041F258040000000A000000-010000009003CA00. 0167:0041F26800000000D003CA00-0000000000000000. :decx 0167:0066F3E458514D505A435758-5445525300010800XQMPZCWXTERS. 0167:0066F3F49AEE8B17E3A40000-1000E02C00000001.,. 0167:0066F4040003000000000000-8001AB018D019C01. 0167:0066F4140000AB018D010000-80019C018C01A401. 0167:0066F4248D019C018C01A401-8D0104000000B60C. 0167:0066F43400A952FB832AD178-218873DAA20BF059.R.*.x!.s.Y 0167:0066F44465CC379EE64FB41D-44ED16BFC76E953Ce.7.O.D.n. 0167:0066F454ED44BF166EC73C95-CC659E374FE61DB4.D.n.e.7O. 教你注册机和补丁的制作(5)见到了吧!那个 XQMPZCWXTERS 就是正确的注册码了,但如果我们用以前的方法来写注册机, 就要去分析前面的程式了,但我们今次不是用这种方法来制作,而是用 CRACKCODE 来做,这 样大家可以见到用 CRACKCODE 来做注- 见到了吧!那个 XQMPZCWXTERS 就是正确的注册码了,但如果我们用以前的方法来写注册机, 就要去分析前面的程式了,但我们今次不是用这种方法来制作,而是用 CRACKCODE 来做,这样大家可以见到用 CRACKCODE 来做注册机实在是太方便了,太简单了! 好,我们为 CRACKCODE 来写一个 INI 文件吧! 第一种写法(这是一种不提倡的写法!): 内存直接寻址的方法: Options CommandLine=Axplorer.exe 这是被取注册码的 EXE 文件名 Mode=0 采用模式 0 读取注册码 First_Break_Address=4149D2 程式的中断地址,它和 ICE 中见到的是一样的 First_Break_Address_Code=8A 中断程式的 1Byte 代码,这个 8A 就是 015F:004149D2 的 8A First_Break_Address_Code_Lenth=2 中断行代码的长度(单位: byte ) Save_Code_Address=66F3E4 存放注册码的内存地址 第二种写法(这种值得推荐!) 寄存器间接寻址的方法: Options CommandLine=test.exe 这是被取注册码的 EXE 文件名(化名) Mode=0 取用模式 0 读取注册码 First_Break_Address=4149D2 程式的中断地址,它和 ICE 中见到的是一样的 First_Break_Address_Code=8A 中断程式的 1Byte 代码,这个 8A 就是 015F:004149D2 的 8A First_Break_Address_Code_Lenth=2 中断行代码的长度(单位: byte ) Save_Code_Address=ECX 存放注册码的内存地址,这个 ECX 是从 015F:004149D8 来 的,大家见到了吧!这和上前的方法相差就只是这句, 当你使用了这句,就不怕软件是否被压缩过了。 注意: 目前 CRACKCODE2000 对所中断地址的代码长度已经是无有要求的,只要把长度写进 INI 就可以了! 015F:004149D28A06MOVAL,ESI 本行代码为 2Bytes 015F:004149DA41INCECX 本行代码为 1Byte 015F:004149E0803900CMPBYTEPTRECX,00 本行代码为 3Bytes 生成后保存为 CRACKCODE.INI 文件,把 CRACKCODE.EXE 和 CRACKCODE.INI 一起 copy 到被注册的 软件的安装目录下,运行 CRACKCODE.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 聚焦2025年工业互联网平台边缘计算硬件架构高性能计算优化报告
- 2025年急救药品、器材管理制度考试试题(附答案)
- 2025年医护人员法律法规知识竞赛题库及答案
- 2025年农业科技推广员执业能力考核试卷及答案
- 2025年试验动物技术人员职业资格考试试题及答案解析
- 2025年污水工考试题库及答案
- 2025年机械伤害培训试题及答案大全
- 2025年生物技术应用职业资格考试题及答案
- 2025污水操作考试题库及答案
- 《大雁归来》教案 部编版语文七年级上册
- 机械购销合同电子版
- 2024-2034年中国女式情趣内衣市场发展现状及战略咨询报告
- 五星级酒店总投资估算表及其投资占比
- 【小学体育教学中学生自主学习研究-以S区小学为例(附量表)21000字(论文)】
- 【初中数学】你有多少种画平行线的方法课件 2023-2024学年人教版数学七年级下册
- 网络安全培训试题附有答案
- 尿红细胞形态分析报告
- 网络产品行业报告
- 中药热奄包在皮肤瘙痒中的临床应用观察
- 监理人员考勤表
- 全国各气象台站区站号及经纬度
评论
0/150
提交评论