CF手游2022体验服12月问卷答案是什么?应该有很多CF手游的玩家都想要知道这个,那么这里就为玩家们带来本次问卷的全部答案,有需要的玩家都可以在这里领取,方便你去完成答题,并领取这个问卷的奖励,希望对你有所帮助。
CF手游2022体验服12月问卷答题答案汇总:
答案:ACDCBABCDC
问题1:带队前往绝命之谷夺取生化武器的是以下哪位
A刀锋
B灵狐者
c斯沃特
D猎狐者
答案:刀锋
问题2:在穿越米线中,会有神奇的广告音效请问是以下那个植入
A四川烹饪
B灵狐米线
C新东方
D蓝翔
答案:C新东方
问题3:请问“冥山诡谯"是什么类型的地图
A爆破
B团队
C躲猫猫
D生化
答案:D生化
问题4:请问“七周年赏金"中免费获得的武器是什么
A源·m4a1-蔚蓝
B源·m4a1-运输
C源·m4a1-运输船
D源·m4a1-运输车
答案:C源·m4a1-运输船
问题5:黄昏的海滩,A47king大战破坏后,是被以下哪个小队清理干净
AAG
BDID
CLGD
DEGP
答案:BDID
问题6:集装箱手雷获得方式是哪种
A钻石夺宝
B飞行棋
C各类活动
D商城购买
答案:A钻石夺宝
问题7:运输船(重置)地图中,以下哪个是在集装箱上
AGLOBALRLSK
BGLOBALRISK
CGLOBCLRISK
DGLODALRISK
答案:BGLOBALRISK
问题8:异域小镇中高楼上的字母是啥
AMNJY-MNP!
BMNPY-MVP!
CMNPY-MNP!
DMVPY-MNP!
答案:CMNPY-MNP!
问题9:请问圣人遗迹中圣人缺少那些部位
A手,脚
B上半身
C头,脚
D头,手
答案:D头,手
问题10:请问赏金猎人的家在哪
A黄金之国
B圣人遗迹
C暗影宝藏岛
D金字塔
答案:C暗影宝藏岛、
这些就是CF手游2022体验服12月问卷的全部答案了,玩家只需要按照答案去游戏答题即可,是不是非常方便呢!快去领取这个问卷的奖励吧。
ZIP模式是指把U盘模拟成ZIP驱动器模式,用它来启动后符盘大多是A
HDD模式是指把U盘模拟成硬盘模式,符盘是C
FDD模式是指把U盘模拟成软驱模式,符盘是A,但是这个模式很可能启动的时候会显示找不到U盘
HDD FDD ZIP详解
HDD
硬盘(英语:Hard Disk Drive,简称HDD)是电脑上使用坚硬的旋转盘片为基础的非易失性存储设备,它在平整的磁性表面存储和检索数字数据,信息通过离磁性表面很近的写头,由电磁流来改变极性方式被电磁流写到磁盘上,信息可以通过相反的方式回读,例如磁场导致线圈中电气的改变或读头经过它的上方。早期的硬盘存储媒介是可替换的,不过今日典型的硬盘是固定的存储媒介,碟片与磁头被封装在机身里(除了一个过滤孔,用来平衡工作时产生的热量导致的气压差)。
FDD
是移动通信系统中使用的全双工通信技术的一种,与TDD相对应。FDD采用两个独立的信道分别进行向下传送和向上传送信息的技术。为了防止邻近的发射机和接收机之间产生相互干扰,在两个信道之间存在一个保护频段。
FDD操作时需要两个独立的信道。一个信道用来从基站向终端用户传送信息,另一个信道用来从终端用户向基站发送信息。
ZIP
ZIP驱动器又称为海量存储器,是一款驱动器,容量可达750MB,采用非接触式磁头,速度较快,而且携带方便,其外型跟144M软盘很相似。ZIP盘的外壳十分坚硬,比起一般的软盘可靠。但由于 ZIP驱动器价格太高,难以普及,随着存储设备的发展逐渐退出市场。
拓展内容:
注意事项
1、制作启动盘之前请备份好U盘上有用的数据,最好能完全格式化一遍U盘。
2、有NTFS分区的硬盘或多硬盘的系统,在DOS下硬盘的盘符排列和在Windows中的顺序可能不一样,请自行查找确定,以免误操作
如果启动U盘在使用中发生问题,请试试下面的方法:
a 换成其他的工作模式(ZIP、HDD、FDD);
b 选择DOS启动菜单中其他的选项;
U盘启动盘出现问题主要原因:
a 主板不支持U盘启动(或支持的不完善);
b 某些DOS软件(尤其是对磁盘操作类的)对U盘支持的可能不是很好
c U盘是DOS之后出现的新硬件,种类比较繁杂,而且目前绝大多数的USB设备都没有DOS下的驱动,目前使用的基本都是兼容驱动,所以出现一些问题也在所难免;
该内存不能read 或written数值内存不能为“read”的所有可行性解决方案!
先用最近升级的杀毒软件查杀一下,确认系统没有病毒情况下,再作其它处理!
但个人的意思是,如果你对电脑不是很精通,还是彻底重做系统,解决最彻底!这样因为是新系统电脑运行速度也很有很大提升!
方法一:选用这个方法试试,或许会管用
运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\dll) do regsvr32exe /s %1
技巧如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:\,按鼠标右键使用“编辑-粘贴”功能就不容易输错了。在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。直到你的指示灯不闪了再做别的。
方法二:从软件方面排除故障
先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。
首先建议:
1、 检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2、 更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。
3、 尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。
4、 删除然后重新创建 Winnt\System32\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。 在"服务和应用程序"下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。 删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。(在删除前请创建这些文件的备份副本。) 打开"服务和应用程序",单击服务,然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs
下面搜集几个例子给大家分析:
例一:IE浏览器出现“08ba9ef”指令引用的“0x03713644” 内存,或者“0x70dcf39f”指令引用的“0x00000000”内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。解决方法:
1、 开始-运行窗口,输入“regsvr32 actxprxydll”回车,接着会出现一个信息对话 框“DllRegisterServer in actxprxydll succeeded”,确定。再依次运行以下命令。(这个方法有人说没必要,但重新注册一下那些dll对系统也没有坏处,反正多方下手,能解决问题就行。)
regsvr32 shdocvwdll
regsvr32 oleaut32dll
regsvr32 actxprxydll
regsvr32 mshtmldll
regsvr32 msjavadll
regsvr32 browseuidll
regsvr32 urlmondll
2、 修复或升级IE浏览器,同时打上系统补丁。看过其中一个修复方法是,把系统还原到系统初始的状态下。建议将IE升级到了60。
例二:有些应用程序错误: “0x7cd64998” 指令参考的 “0x14c96730” 内存。该内存不能为 “read”。解决方法:Win XP的“预读取”技术这种最佳化技术也被用到了应用程序上,系统对每一个应用程序的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟“内存映像”,并把这些信息储存到Windows\Prefetch文件夹。一旦建立了映像,应用软件的装入速度大大提高。XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。建议将虚拟内存撤换,删除Windows\Prefetch目录下所有PF文件,让windows重新收集程序的物理地址。
例三:在XP下双击光盘里面的“AutoRunexe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRunexe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\winnt\apppatch\slayeruidll。右键,属性,也会出现兼容性的选项。
例四:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。 解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。
例五:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。 解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。
例六:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内 存,该内存不能为“read” ,并且提示Clientdat程序错误。解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX90。
例七:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。 解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。
方法三:出现这种情况,如果是硬件原因一般内存有问题的机率很大。
一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
从网上搜索来的几篇相关文章
文章一
使用Windows操作系统的人有时会遇到这样的错误信息:
「“0X”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。
如果去请教一些「高手」,得到的回答往往是「Windows就是这样不稳定」之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的一般原因。
一、应用程序没有检查内存分配失败
程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的「中断描述符表」,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的「写内存」错误,并指出被引用的内存地址为「0x00000000」。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中「安装」的病毒程序),更改了大量的系统参数和系统档案之后。
二、应用程序由于自身BUG引用了不正常的内存光标
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试突读写一块「应该可用」的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是「忘记了」向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而「没有留意」等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图「违法」的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为「0x00000000」,而是其它随机数字。如果系统经常有所提到的错误提示,下面的建议可能会有说明 :
1检视系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,
从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。
有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。
3试用新版本的应用程序。
Mode:
将虚拟内存撤换
答案:
目前为止是肯定的,也就是如在下次冷天到来时亦没再发生,就代表这是主因
追加:
如果你用 Ghost 恢复 OS 后建议 删除WINDOWS\PREFETCH目录下所有PF文件因为需让windows重新收集程序的物理地址
有些应用程序错误 "0x7cd64998" 指令参考的 "0x14c96730" 内存。该内存不能为 "read"推论是此原因
源由:
Win XP的「预读取」技术
这种最佳化技术也被用到了应用软件上,系统对每一个应用软件的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟「内存映像」,并把这些信息储存到WINDOWSPREFETCH数据夹。一旦建立了映像,应用软件的装入速度大大提高。XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。
后叙:
目前此方法亦是独步网络的(其码自己针对此问题查了许久),也是常见问题,原本几乎每天睡前关闭软件时一些程序都会发生read
现在就没发生了。
文章二
运行某些程序的时候,有时会出现内存错误的提示(0x后面内容有可能不一样),然后该程序就关闭。
“0x”指令引用的“0x”内存。该内存不能为“read”。
“0x”指令引用的“0x”内存,该内存不能为“written”。
不知你出现过类似这样的故障吗?
一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
下面先说说硬件:
一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。
如果都没有,那就从软件方面排除故障了。
先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当你放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。
下面我从几个例子给大家分析:
例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。 解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了60,自升级后,会被IE50代替。
例二:在windows xp下双击光盘里面的“AutoRunexe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRunexe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\winnt\apppatch\slayeruidll。右键,属性,也会出现兼容性的选项。
例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。 解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。
例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。 解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。
例五:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内 存,该内存不能为“read” ,并且提示Clientdat程序错误。 解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX90。
例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。 解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。
原因 解决方法
1 内存条坏了 更换内存条
2 双内存不兼容 使用同品牌的内存或只要一条内存
3 内存质量问题 更换内存条
4 散热问题 加强机箱内部的散热
5 内存和主板没插好或其他硬件不兼容 重插内存或换个插槽
6 硬件有问题 更换硬盘
7 驱动问题 重装驱动,如果是新系统,应先安装主板驱动
8 软件损坏 重装软件
9 软件有BUG 打补丁或更新到最新版本
10 软件和系统不兼容 给软件打上补丁或是试试系统的兼容模式
11 软件和软件之间有冲突 如果最近安装了什么新软件,卸载了试试
12 软件要使用其他相关的软件有问题 重装相关软件,比如播放某一格式的文件时出错,可能是这个文件的解码器有问题
13 病毒问题 杀毒
14 杀毒软件与系统或软件相冲突 由于杀毒软件是进入底层监控系统的,可能与一些软件相冲突,卸载试试 15 系统本身有问题 有时候操作系统本身也会有BUG,要注意安装官方发行的更新程序,象SP的补丁,最好打上如果还不行,重装系统,或更换其他版本的系统。
〔又一说〕
在控制面板的添加/删除程序中看看你是否安装了微软NETFramework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NETFramework时候,可以再重新安装。
另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NETFramework正常工作的环境下)。这种情况你可以找一款不需要NETFramework支持的ATI显卡驱动。
如果以上两种方法并不能完全解决问题,你试着用一下“IE修复”软件,并可以查查是否有病毒之类的。
〔微软NETFramework升级到11版应该没问题了〕
〔还有一说〕
方法一:
微软新闻组的朋友指点:开始--运行:regsvr32 jscriptdll
开始--运行:regsvr32 vbscriptdll
不过没解决---但提供了路子-----一次运行注册所有dll
搜索查找到方法如下:
运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\dll) do regsvr32exe /s %1
这个命令老兄你慢慢输 输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再打开看
方法二:
这是个典型问题~~~~~引起这个问题的原因很多。一般来讲就是给系统打上补丁和更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了]
造成这种问题的原因很多,不能单纯的下结论,尽量做到以下几点可能对你有帮助:
1。确保使用的是未修改过的软件(非汉化、破解版)
2。使用改软件时尽量不要运行其他软件。(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰)
3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)”
处理方法:
运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。
〔我个人的最后解决和看法〕
我今天尝试了多种办法,最后我发现问题出在微软的NETFramework上面。我升级了这个软件,并打齐了补丁,短暂平安后,有出现“内存不能为read”的情况。后来我受上面文章的启发,卸载了微软的NETFramework10和11,世界太平了。
另外:如果是打开“我的电脑”、“我的文档”等的时候出现上述情况,还有一种可能,就是你的右键菜单太臃肿了,此时只要清理右键菜单问题就解决了。
1、天冷要防寒
寒冷干燥是导致手足皲裂的主要原因,防寒保暖对防治手足皲裂十分重要。在严寒的冬季,要特别注意手部的保暖,做到手套随身,常戴手套。
/iknow-piccdnbceboscom/242dd42a2834349bb87ed06dc7ea15ce37d3beda"target="_blank"title="大图"class="ikqb_img_alink">/iknow-piccdnbceboscom/242dd42a2834349bb87ed06dc7ea15ce37d3bedax-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-piccdnbceboscom/242dd42a2834349bb87ed06dc7ea15ce37d3beda"/>
2、减少接触冷水
为了避免手脚出现干裂的情况,日常生活中应该尽量减少接触冷水。冷水的刺激容易让皮肤的皮脂分泌减少,从而导致皮肤干燥度提高,干裂程度增加。所以平常要多注意一些,洗手的时候尽量用温水,不要被冷水刺激到。
/iknow-piccdnbceboscom/7c1ed21b0ef41bd59159561c5fda81cb38db3dcb"target="_blank"title="大图"class="ikqb_img_alink">/iknow-piccdnbceboscom/7c1ed21b0ef41bd59159561c5fda81cb38db3dcbx-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-piccdnbceboscom/7c1ed21b0ef41bd59159561c5fda81cb38db3dcb"/>
3、涂抹药膏
手指皲裂其实是由脱皮和气候干燥共同造成的,在秋冬季节来临时,可涂抹凡士林、甘油等来防止皮肤干裂。
对于手部已经干裂的患者,可以去药店买一些含有弱效皮质类固醇激素的软膏,如果脱皮严重并伴有干燥疼痛者,可用低浓度的水杨酸软膏或硼酸软膏,起到软化痂皮润滑保护的作用,也可以用润肌止痒的中药膏。
/iknow-piccdnbceboscom/80cb39dbb6fd5266935a82fca518972bd50736e0"target="_blank"title="大图"class="ikqb_img_alink">/iknow-piccdnbceboscom/80cb39dbb6fd5266935a82fca518972bd50736e0x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-piccdnbceboscom/80cb39dbb6fd5266935a82fca518972bd50736e0"/>
扩展资料:
冬季是手足皲裂症多发季节,不少人手指头、脚后跟裂口、出血,只能用橡皮膏贴上,严重者甚至继发感染,疼痛难忍,影响工作和生活。
冬季气候寒冷而干燥,随着西北风吹过,人们的手足由湿润转为干燥,如果不加以保护,极易出现裂口,严重者还会引起疼痛、出血,医学上称之“皲裂症”。
这是因为在皮肤里有一种皮脂腺,它在人体上分布得很不均匀,头皮上、脸上分布得较多,所以这些地方爱出“油”。而手、脚就不大爱出“油”,特别是手掌和脚跟,几乎没有皮脂腺。
皮脂腺有一个特点,就是气温越高、天气越暖,它分泌的油脂就越多。在温暖季节它经常会顺着毛孔自动外流,给皮肤不断地“加油”润滑,使它不干裂。
进入冬季,气温逐渐下降,皮脂腺的分泌也就随之减少,再加上冬季常有冷空气侵袭,手与脚的热量和油脂很快就会挥发掉了。因此一到冬天,不少人总觉得手上和脚上干巴巴的不舒服,甚至出现皮肤皲裂、流血。
/hljpeoplecomcn/n2/2017/1129/c368181-30975077html"target="_blank"title="人民网-冬季手脚干裂该怎么办?吃这种水果能缓解">人民网-冬季手脚干裂该怎么办?吃这种水果能缓解
/fjpeoplecomcn/n/2014/1222/c368313-23303927html"target="_blank"title="人民网-冬季常见病——手足皲裂症皮肤护理少不了">人民网-冬季常见病——手足皲裂症皮肤护理少不了
1代表唯一的爱情 2代表两人世界 3代表分散,双方随分隔两地,但思念永不改变 4代表无尽的思念 5是我的意思,也可以理解为不分你我 6代表顺利,代表喜剧式的爱情双方的爱情将一帆风顺,幸福过一生 7代表凄美,代表爱情注定经历坎坷,或许中间有很痛苦的事,但双方要用爱来度过 8是可以看成两个0靠在一起,是最浪漫的一个,指标是两个人肩靠肩的样子 9代表永久,爱你一生一世直到永久的意思 10代表十全十美,完美的爱情
正确获得同益起名大师v337 的注册号――解读 moon 帮主的妙文
作者gzgzlxg
声明只是好奇,没有别的目的,如有,我就把注册机发表了(已经写好了),不要发信向我要注册机,我不会发表的,这也是看雪老大的要求,其实我觉得这篇文章已经很过分。按这篇文章,你100%可以得到正确的注册码。
工具IDA,OllyDBG
软件使用我在ACProtect 141 -- 同益起名大师 v336、v337、vp333(专业版)完美脱壳中所完美脱壳后的 GoodNameExe v337版。使用脱壳版,跟踪比较容易,当然你也可以直接使用原版,但会困难一些。
http://bbspediycom/showthreadphpthreadid=16204
注读此文前,请先读 moon 帮主的谜----同益起名大师336注册算法分析,
http://bbspediycom/showthreadphpthreadid=14716 凡是和moon 相同的部分我就不再多废笔墨。
本文同时发表在看雪论坛和DFCG,转载时请保持完整,版主如果觉得不合适可以删除。
前言:
同益起名的注册码验证遍布全程序,在主窗体建立,子窗口建立,按键操作,对注册码和注册申请码的验证无所不在,而且计算方法来回重复,例如获取注册申请码就有三个完全相同的过程,DES 算法也有完整的两套。我们用来分析注册码取的是注册操作部分,其实在主窗口建立、子窗口建立的过程中都可以进行,因为他们是完全相同的。
这是注册窗口(Tfxhm)VMT表中的方法表部分,(全表太长)。这些代码都是在 IDA 中分析得到的。
代码:--------------------------------------------------------------------------------
0055647F TfxhmMethodTable dw 6
00556481 dw 16h
00556483 dd offset Tfxhm@suiButton2Click ;退出按键
00556487 aSuibutton2click db 0Fh,'suiButton2Click'
00556497 dw 10h
00556499 dd offset Tfxhm@FormClose ;关闭窗口
0055649D aFormclose_0 db 9,'FormClose'
005564A7 dw 11h
005564A9 dd offset Tfxhm@FormCreate ;建立窗口
005564AD aFormcreate_0 db 0Ah
005564AD db 'FormCreate'
005564B8 dw 16h
005564BA dd offset Tfxhm@suiButton1Click ;注册按键
005564BE aSuibutton1cli ck db 0Fh,'suiButton1Click'
005564CE dw 0Fh
005564D0 dd offset Tfxhm@get_text ;suiButton1Click 调用的校验注册申请码
;和注册码并注册的子过程
005564D4 aGet_text db 8,'get_text'
005564DD dw 0Fh
005564DF dd offset Tfxhm@FormShow ;显示窗口
005564E3 aFormshow_0 db 8,'FormShow'
005564EC Tfxhm db 5,'Tfxhm' ;类名
005564F2 word_5564F2 dw 5
005564F4 dd offset TsuiForm@VMT@Prt ;父辈 TsuiForm 的 VMT 表指针地址
--------------------------------------------------------------------------------
我们分析的所有代码都是属于 Tfxhm@get_text 过程和它的子过程的。 Tfxhm@get_text 起始地址: 0055986C
一、 获取注册码第28位
确定你想注册姓氏的正确笔划数(必须和同益数据库中 slzik 所查到的相同,以繁体字笔画数为准,同益库中有些字的笔画数并不正确,这时你可以在同益起名的姓名分析中获得姓氏的笔画数)。在下面的字符串中从左到右查寻,得到第 28 位注册码:例如,吕:繁体字为 7 划。(从0开始数)
0123456 7 89012345678901234567890
0AH6CD3 B EF4TRS2PUV5K1MN78YZ9GIJ
得到的字母为 B,这样我们的注册码有如下形式:(31 位)下面是我们的起始注册码
123456789012345678901234567 8 901
123456789ABCDEFGHIJKLMNOPQR S TUV
加入第 28 个字母 B,得如下注册码:
123456789ABCDEFGHIJKLMNOPQR B TUV
根据 moon 提出的换位法(4i+1位和4(i+1)位互换,i=0,1,2,,末尾不足4位时,最后两位互换),25<->28位对调,这个B应该在第25 位
为了便于调位,写了几句Delphi的小程序来完成:(这种操作,还是汇编容易,所以实际还是汇编写的)
代码:--------------------------------------------------------------------------------
procedure TForm1Button2Click(Sender: TObject);
var
Str: String;
begin
Str := Edit1Text;
asm
PushA
Xor Edx, Edx
Mov Esi, Str
Mov Ecx, 7
@1:
Mov Al, [Esi + Edx]
Xchg Al, [Esi + Edx + 3]
Xchg Al, [Esi + Edx]
Dec Ecx
Add Edx, 4
Cmp Ecx, 0
Jnz @1
Mov Al, [Esi + Edx + 1]
Xchg Al, [Esi + Edx + 2]
Xchg Al, [Esi + Edx + 1]
PopA
end;
Edit2Text := Str;
end;
--------------------------------------------------------------------------------
在 Edit1 中输入 123456789ABCDEFGHIJKLMNOPQRBTUV,按 Button2 键得到下面的新注册码:
新注册码为:
123456789012345678901234 5 678901
42318675CAB9GEFDKIJHOMNL B QRPTVU
具体分析请看 moon 的解释。
二、 获取注册码 23~27 位注册码
用OD载如 UNGDNexe (脱壳后的程序)
代码:--------------------------------------------------------------------------------
Tfxhm@get_text
0055CF7E mov eax, ds:AppIDAndName_CryHex@Prt ;注册申请号加姓氏和1FH 异或得到的结果
0055CF83 mov eax, [eax]
0055CF85 call sub_4FED88 ;EncodeFunction1
0055CF8A lea eax, [ebp+var_94] ;这里断下获取计算23-27位的三个字符
0055CF8A ;按照 moon帮主的给出的算法可以获得
0055CF90 pus eax
0055CF91 lea edx, [ebp+var_98]
0055CF97 mov eax, ds:Serial_CryHex@Prt ;注册号和 1FH 异或得到的结果
0055CF9C mov eax, [eax]
0055CF9E call CycleConversionStr ;经过 1FH 异或,即还原
0055CFA3 mov eax, [ebp+var_98]
0055CFA9 mov ecx, 5
0055CFAE mov edx, 17h
0055CFB3 call LStrCopy ;取第 23~27位
0055CFB8 mov eax, [ebp+var_94]
0055CFBE lea edx, [ebp+var_90]
0055CFC4 call sub_4F0048 ;进行计算得到三个字符,如果和上面计算得到的三个字符相同,则过
0055CFC9 mov edx, [ebp+var_90]
0055CFCF mov eax, [ebp+var_C]
0055CFD2 call LStrCmp ;关键比较,比较两种方式和数据计算得到的三个字符
0055CFD7 jnz loc_55D157
0055CFDD lea eax, [ebp+var_A0]
0055CFE3 push eax
0055CFE4 lea edx, [ebp+var_A4]
0055CFEA mov eax, ds:Serial_CryHex@Prt
0055CFEF mov eax, [eax]
0055CFF1 call CycleConversionStr
0055CFF6 mov eax, [ebp+var_A4]
0055CFFC mov ecx, 5
0055D001 mov edx, 17h ;取注册号23~27
0055D006 call LStrCopy
0055D00B mov eax, [ebp+var_A0]
0055D011 lea edx, [ebp+var_9C]
0055D017 call sub_4F0048
0055D01C mov edx, [ebp+var_9C]
0055D022 mov eax, [ebp+var_C]
0055D025 call LStrCmp ;关键比较,比较两种方式和数据计算得到的三个字符,和前面相同
0055D02A jnz loc_55D0EA
0055D030 lea eax, [ebp+var_A8]
0055D036 push eax
0055D037 lea edx, [ebp+var_AC]
0055D03D mov eax, ds:Serial_CryHex@Prt
0055D042 mov eax, [eax]
0055D044 call CycleConversionStr
0055D049 mov eax, [ebp+var_AC]
0055D04F mov ecx, 3
0055D054 mov edx, 1Dh ;取注册号 29~31 位
0055D059 call LStrCopy
0055D05E mov eax, [ebp+var_A8]
0055D064 call 31decimalToHex ;对29~31位注册码进行31进制到十六进制的转换
0055D069 mov ebx, eax
0055D06B lea eax, [ebp+var_B0]
0055D071 push eax
0055D072 lea edx, [ebp+var_B4]
0055D078 mov eax, ds:Serial_CryHex@Prt ;取注册号(经过1FH异或处理)
0055D07D mov eax, [eax]
0055D07F call CycleConversionStr ;经过相同的过程还原
0055D084 mov eax, [ebp+var_B4]
0055D08A mov ecx, 1Ch
0055D08F mov edx, 1 ;取注册号 1~28 位
0055D094 call LStrCopy
0055D099 mov eax, [ebp+var_B0]
0055D09F call SumSerial_1to28 ;做 1~28 位累加(中间还有判断是否大于27000,见moon帮主的解释)
0055D0A4 cmp ebx, eax ;关键比较,将前面进制转换得到的数和累加和比较,在这里下断点
0055D0A6 jnz loc_55D157 ;因为注册码没有完成,为了能够继续,暂时将这句 Nop 掉
0055D0AC mov eax, offset a111_2 ; "111"
0055D0B1 call CheckSerial_17to22 ;这里是获取 17~22 位注册码的入口
0055D0B6 mov [ebp+var_1], al
0055D0B9 cmp [ebp+var_1], 0
0055D0BD jz short loc_55D0CC
0055D0BF lea eax, [ebp+var_C]
0055D0C2 mov edx, offset a111_2 ;"111"
0055D0C7 call LStrLAsg
0055D0CC
0055D0CC loc_55D0CC:
0055D0CC cmp [ebp+var_1], 0
0055D0D0 jz loc_55D157
0055D0D6 mov eax, [ebp+var_C]
0055D0D9 mov edx, offset a111_2 ;"111"
0055D0DE call LStrCmp
0055D0E3 jnz short loc_55D0EA
0055D0E5 call CheckSerial_1to16 ;这里是获取 1~16 位注册码的入口
--------------------------------------------------------------------------------
在0055CF8A 处下断点,F9 运行,出现同益启动画面后选‘注册’->‘输入注册码',注册申请码是不能修改的,由你的机器的 CPU 和硬盘的参数变化而来。在起名的姓氏中输入你的姓氏,我这里是输入‘吕’,在输入注册码中将上面的 123456789ABCDEFGHIJKLMNOBWRSTUV 注册码拷贝到输入窗口。按注册键,中断在 0055CF8A ,清除断点(或关闭),由 [ebp - c] 中的内容,得到三个字符 VRB,记录下这三个字符,用moon帮主给出的方法:
求逆方法:
1 执行到00559D0A,然后下:d [ebp-c],记下数据区显示的正确值x,y,z;
2 对3个字节的正确值进行调位,得到5个字节a,b,c,d,e,调位方法为:
0,0,0,x7,x6,x5,x4,x3
0,0,0,x2,x1,x0,y5,y4
0,0,0,0 ,y3,y2,y1,y0
0,0,0,y7,y6,z7,z6,z5
0,0,0,z4,z3,z2,z1,z0
3 根据5个字节查表"0KMT1EIJ2AB34FGH56PYZ7NRS89CDUVX",得到5位注册码即为23~27位。
--摘自 moon 帮主文
我用Delphi写了几句小程序完成这个转换,程序如下:
代码:--------------------------------------------------------------------------------
procedure TForm1Button1Click(Sender: TObject);
const
Str = '0KMT1EIJ2AB34FGH56PYZ7NRS89CDUVX';
var
X1, X2: Integer;
x, y, z: Char;
a, b, c, d, e: string;
Pin: string;
begin
Pin := Edit1Text;
x := Pin[1];
y := Pin[2];
z := Pin[3];
x1 := (Byte(x) shr 3) and $1F;
a := Copy(Str, x1 + 1, 1);
x1 := ((Byte(x) shl 2) and $1C) or ((Byte(y) shr 4) and $03);
b := Copy(Str, x1 + 1, 1);
x1 := Byte(y) and $0F;
c := Copy(Str, x1 + 1, 1);
x1 := ((Byte(y) shr 3) and $18) + ((Byte(z) shr 5) and $07);
d := Copy(Str, x1 + 1, 1);
x1 := (Byte(z) and $1F);
e := Copy(Str, x1 + 1, 1);
Edit2Text := a + b + c + d + e;
end;
--------------------------------------------------------------------------------
在 Edit1 输入 VRB 按 Button1 键,在 Edit2 窗口中给出我们要的结果 B8MBM 。现在来继续完善我们的注册码。将得到的字符串替换原注册码中第 23~27 位:
1234567890123456789012 34567 8 901
123456789ABCDEFGHIJKLM B8MBM B TUV
用前面的小程序进行调位,得新注册码如下:
1234567890123456789012345678901
42318675CAB9GEFDKIJH8MBLBBMMTVU
三、 获得的 17~22 位注册码:
在OD中按 Ctrl-F2组合键,重新运行程序,将 0055D0A6 的 jnz loc_55D157 Nop 掉
代码:--------------------------------------------------------------------------------
0055D0A6 jnz loc_55D157 ;因为注册码没有完成,为了能够继续,暂时将这句 Nop 掉
0055D0AC mov eax, offset a111_2 ;"111"
0055D0B1 call CheckSerial_17to22 ;这里是获取 17~22 位注册码的入口
跟进 0055D0B1 call CheckSerial_17to22
省略
0050C705 mov edx, [ebp+var_20]
0050C708 mov eax, [ebp+var_1C]
0050C70B call DES_EncryStr ;在这里进行 DES 的 EncryStr 加密运算,运算结果再经过
0050C70B ;另一过程处理,这个子过程我们后面还要用到
0050C710 mov edx, [ebp+var_60] ;moon 文中提到在这个位置获取 17~22 位注册码,可能
0050C710 ;是帮主写文章时粗心了,正确的位置应该在下面删除第5位
0050C710 ;相同字母后才取结果。
0050C713 lea eax, [ebp+var_20]
0050C716 call LStrLAsg
0050C71B lea ecx, [ebp+var_64]
0050C71E mov eax, [ebp+var_20]
0050C721 mov dl, [eax+5] ;取出 EncryStr 运算结果的字符串的第 5 位
0050C724 mov eax, [ebp+var_20]
0050C727 call DelChr ;将 EncryStr 运算结果中凡是和第5位相同的字母删除
0050C72C mov edx, [ebp+var_64]
0050C72F lea eax, [ebp+var_20] ;这里下断点,从Edx中取前6位,即我们要的第 17-22 位
省略
--------------------------------------------------------------------------------
在 0050C72C 处下断点,按F9 运行,出现同益启动画面后选‘注册’->‘输入注册码',在起名的姓氏中输入你的姓氏,我这里是输入‘吕’,在输入注册码中将上面的最后得到的注册码(42318675CAB9GEFDKIJH8MBLBBMMTVU)拷贝过去。点击注册按键。中断在 0050C72F,在Edx 返回一个长度为30的字符串(这个字符串的长度是不一定为30的,要看删除相同字符的数目而定),取前 6 为,即为我们要的注册码的第 17~22位,在我们的例子中得到的字符串是:DEDAHI。现在我们来修改我们的注册码:
1234567890123456 789012 34567 8 901
123456789ABCDEFG DEDAHI B8MBM B TUV
用前面的小程序调位后得新注册码:
1234567890123456789012345678901
42318675CAB9GEFDAEDD8IBHBBMMTVU
四、 获取 1~16 位注册码
我们首先来看看程序的代码,从前面列出的程序最后一句:
代码:--------------------------------------------------------------------------------
0055D0E5 call CheckSerial_1to16 ;这里是获取 1~16 位注册码的入口
跟进 call CheckSerial_1to16
省略
00508EEB lea edx, [ebp+var_18]
00508EEE mov eax, ds:AppIDAndName_CryHex@Prt
00508EF3 mov eax, [eax]
00508EF5 call ConversionHex10To16
00508EFA lea eax, [ebp+var_18]
00508EFD lea edx, [ebp+var_8]
00508F00 call ConversionHexAndFNameToStr
00508F05 lea eax, [ebp+var_20]
00508F08 push eax
00508F09 lea edx, [ebp+var_24]
00508F0C mov eax, ds:Serial_CryHex@Prt
00508F11 mov eax, [eax]
00508F13 call CycleConversionStr
00508F18 mov eax, [ebp+var_24]
00508F1B mov ecx, 10h
00508F20 mov edx, 1 ;取注册号 1~16 位
00508F25 call LStrCopy
00508F2A mov eax, [ebp+var_20]
00508F2D lea ecx, [ebp+var_1C]
00508F30 mov edx, [ebp+var_8]
00508F33 call DES_DecryStr ;这是 DES 的逆运算,我们再跟进
00508F38 mov eax, [ebp+var_1C]
00508F3B lea edx, [ebp+var_18]
00508F3E call ConversionHex10To16
00508F43 lea eax, [ebp+var_18]
00508F46 push eax
00508F47 lea edx, [ebp+var_38]
00508F4A mov eax, ds:AppIDAndName_CryHex@Prt
00508F4F mov eax, [eax]
00508F51 call sub_4FBA70
00508F56 mov eax, [ebp+var_38]
00508F59 lea edx, [ebp+var_34] ;这里是我们要下断点的地方
省略
跟进 call DES_DecryStr
省略
004F788E lea edx, [ebp+var_C]
004F7891 mov eax, [ebp+var_4]
004F7894 call sub_4E97BC
004F7899 mov ecx, ebx
004F789B mov edx, [ebp+var_8]
004F789E mov eax, [ebp+var_C]
004F78A1 call DecryStr ;DES 逆运算
004F78A6 xor eax, eax ;这里是 moon 帮主提出下断点处,还有一些其他相应的做法
;请看 moon 原文。
省略
--------------------------------------------------------------------------------
在OD中按 Ctrl-F2,重新启动,在00508F59下断点,同上,将 0055D0A6 的 jnz loc_55D157 Nop 掉,按F9 运行,出现同益启动画面后选‘注册’->‘输入注册码',在起名的姓氏中输入你的姓氏,我这里是输入‘吕’,在输入注册码中将上面的最后得到的注册码(42318675CAB9GEFDAEDD8IBHBBMMTVU)拷贝过去。点击注册按键。中断在 00508F59,下面是堆栈内容:
代码:--------------------------------------------------------------------------------
EBP-38 0012F910 00F303D0 ASCII "5FF51115"
EBP-34 0012F914 00000000
EBP-30 0012F918 00000000
EBP-2C 0012F91C 00000000
EBP-28 0012F920 00000000
EBP-24 0012F924 00F30038 ASCII "123456789ABCDEFGDEDAHIB8MBMBTUV"
EBP-20 0012F928 00F29F5C ASCII "123456789ABCDEFG"
EBP-1C 0012F92C 00F3009C
EBP-18 0012F930 C338FAD3
EBP-14 0012F934 DD5CB3D0
EBP-10 0012F938 D5D42656
EBP-C 0012F93C A2BB6C94
EBP-8 0012F940 00F2FFF8 ASCII "M9BJBBRIDE88TNP4"
EBP-4 0012F944 00000000
--------------------------------------------------------------------------------
注意: EBP-38 0 00F2A130 ASCII "5FF51115" 这是我们要的 DES 加密的明文。
EBP-8 0> 00F2FFE4 ASCII "M9BJBBRIDE88TNP4" 这是 Key。
按 moon 帮主的方法,修改两句代码,进行逆运算,但我经过努力,总是没有成功,可能是对 moon 的方法不能深刻的理解,于是决定改用其他的方法。我们注意到如下代码:
代码:--------------------------------------------------------------------------------
004F788E lea edx, [ebp+var_C]
004F7891 mov eax, [ebp+var_4]
004F7894 call sub_4E97BC
004F7899 mov ecx, ebx
004F789B mov edx, [ebp+var_8]
004F789E mov eax, [ebp+var_C]
004F78A1 call DecryStr ;DES 逆运算
--------------------------------------------------------------------------------
在最后一句 Call DecryStr 做的其实是DES的逆运算,前面还有一个辅助的运算,我认为,同益的代码中一定有一个DES的正向运算,即EncryStr,所以我找了一下,其实就在上面第三节--获得的 17~22 位注册码中出现过,下面我们跟进这个Call:
代码:--------------------------------------------------------------------------------
0050C70B call DES_EncryStr
跟进
省略
004F781A lea ecx, [ebp+var_C] ; 返回地址
004F781D mov edx, [ebp+var_8] ; Key = M9BJBBRIDE88TNP4
004F7820 mov eax, [ebp+var_4] ; Str = 5FF51115
004F7823 call EncryStr
004F7828 mov edx, ebx
004F782A mov eax, [ebp+var_C]
004F782D call sub_4E63F4
004F7832 xor eax, eax ;这里下断点
省略
--------------------------------------------------------------------------------
可以看出,它和上面的代码正好相反,我们用下面的方法来获得 1~16 位的代码。
接前面,我们中断在
代码:--------------------------------------------------------------------------------
00508F59 lea edx, [ebp+var_34]
--------------------------------------------------------------------------------
在代码窗口中按 Ctrl-G,输入004F781A,转移到 004F781A。按 Ctrl-,将Eip地址改到 004F781A。
我们要做的工作其实就是修改堆栈的地址,下面是具体操作。
代码:--------------------------------------------------------------------------------
EBP-38 0012F910 00F303D0 ASCII "5FF51115"
EBP-34 0012F914 00000000
EBP-30 0012F918 00000000
EBP-2C 0012F91C 00000000
EBP-28 0012F920 00000000
EBP-24 0012F924 00F30038 ASCII "123456789ABCDEFGDEDAHIB8MBMBTUV"
EBP-20 0012F928 00F29F5C ASCII "123456789ABCDEFG"
EBP-1C 0012F92C 00F3009C
EBP-18 0012F930 C338FAD3
EBP-14 0012F934 DD5CB3D0
EBP-10 0012F938 D5D42656
EBP-C 0012F93C A2BB6C94 结果返回地址,这里改为 0,程序运行时会自行分配新的内存
EBP-8 0012F940 00F2FFF8 ASCII "M9BJBBRIDE88TNP4"
EBP-4 0012F944 00000000 这里是 Str 所以将这里改为 00F303D0,也就是[EBP-38] 指向的地址。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)