浅谈VFP程序的破解
- 格式:doc
- 大小:523.00 KB
- 文档页数:15
VBA代码破解法
1.打开要猜解的EXCEL文件。
2.按照下列步骤打开VBE并将VBA代码复制到代码窗口中。
3.将光标定位到代码窗口,按F5运行上述代码。
4.之后该代码会依次执行猜解工作簿保护密码、猜解工作表保护密码和将该EXCEL文件撤销工作表保护和工作簿保护的操作。
注意:该代码不提供密码的复制粘贴功能。
因此想记住密码必须手工抄写或者截图。
5.从核心代码可以看到,猜解出来的密码固定12个字符,前11个字符为大写字母A或者B,第12个字符为95个字符可输入字符之一。
2^11*95=194560种组合。
共有不到20万种组合。
每秒100万个,所以更是“秒”破。
猜解的核心代码:
For i = 65To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 =65 To 66
For i2 = 65 To 66: For i3 = 65 To 66:For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66:For n = 32 To 126
您可回复MMPJ获取相应软件和演示文件哦。
易语⾔程序破解浅析
易语⾔程序⽤PEID查壳显⽰的是 Visual C++ 6.0[overlay] ,其中包含有ecode区段,这基本就是易语⾔程序是不会错了,应为易语⾔底层也是⽤的C++的编译系统所以也是Visual C++ 6.0, overlay(附加数据)是什么意思呢?这是易语⾔独有的特性:程序在库中运⾏,就像加了可⼀样所以说它带有附加数据。
如果你拿到⼀个易语⾔的程序载⼊ OD后就直接查找字符串之类的是⽆果的,就像前⾯所说的,易语⾔程序就像被加了壳⼀样,所以你必须在壳把程序完全解压释放出来你才能查看到程序中有⽤的信息,也就是等程序解码完毕,所以如果你想通过查找字符串来爆破的话,你的先让程序运⾏起来,下⾯是⼀个实例演⽰:
1.OD载⼊程序,⽆论是查找所有参考字串还是ASCII或是 UNICODE都没有看到熟悉的中⽂
2,F9运⾏程序,(看到输⼊注册码的地⽅,在等到程序没有动作再往下进⾏)alt+M 查看内存镜像,在ecode上F2下个断点
3,,输⼊假吗(可能程序有⾛动,等会⼉就好),确认假码,就来到我们程序的代码断(ecode)的开始位置了
4,剩下的就没什么特别的了,是直接往下单步跟踪找关键位置,是直接查找字符串到关键位置就看个⼈喜好了。
以上4点就是关于易语⾔破解的相关指点内容,感谢⼤家对的⽀持。
芯片程序破解芯片程序破解是指对芯片上的程序进行解密和破解的过程。
芯片程序的破解需要通过逆向工程和反汇编技术来分析芯片上的代码,并找出程序的关键部分和算法,以实现对程序的修改和控制。
芯片程序破解的目的一般是为了获取未公开或加密的核心代码,以实现对芯片功能的自定义或增强。
芯片程序破解使得破解者可以修改芯片的功能、设定参数或者通过逆向工程将程序移植到其他芯片上。
芯片程序破解的方法可以分为硬件和软件两种。
硬件破解主要通过对芯片进行物理拆解和分析来获取芯片内部的程序和数据。
这种方法一般需要专门的设备和技术,成本较高。
软件破解主要通过对芯片上的程序进行逆向工程和反汇编,找出程序的关键部分和算法。
这种方法相对容易实施,但需要一定的编程和计算机知识。
芯片程序破解的过程可以分为以下几个步骤:1. 确定破解目标:确定需要破解的芯片和程序,并明确破解的目的和要求。
2. 资料收集:收集与芯片和程序相关的资料,包括芯片规格、技术文档、数据手册等。
3. 逆向工程:通过逆向工程和反汇编技术,将芯片上的程序反汇编为可读的汇编代码。
逆向工程可以通过软件工具实现,如IDA Pro、OllyDbg等。
4. 分析代码:对芯片程序的汇编代码进行分析,理解程序的结构和逻辑。
通过分析代码,找出程序的关键部分和算法。
5. 修改代码:根据破解的目的,对程序的关键部分进行修改,并将修改后的代码重新汇编为机器代码。
6. 烧录:将修改后的程序烧录到芯片上,覆盖原先的程序。
7. 测试和验证:对修改后的芯片进行测试和验证,确保程序的修改达到预期的效果。
需要注意的是,芯片程序破解涉及到知识产权和法律问题,未经授权的破解行为是违法的。
因此,在进行芯片程序破解之前,应该确保自己有合法的使用权或授权,并遵守相关的法律法规。
如何在Visual FoxPro 中制作软件封面一个好的软件还需要有一个漂亮的封面,用Visual FoxPro 编制应用程序时往往会忽视这一问题。
在Visual FoxPro 5.0中我们一样可以制作出如同微软的WORD、POWERPOINT等软件的漂亮的封面。
一、创建表单集。
Visual FoxPro的应用程序一般都至少有一个表单,进入主表单中,选择…表单‟菜单中的…创建表单集‟,创建一个表单集(FORMSET1)。
需要注意的是,如果你的表单中的自定义的属性、方法等,当创建表单集之后,这些属性和方法会升级为表单集的属性和方法,原程序中的调用则需要进行修改。
设置表单集的Windowtype属性为1-模式。
二、制作封面表单。
选择…表单‟菜单中的…添加新表单‟,建立一个新的表单。
设置它的Name属性为“FormStart”,AlwaysOnTop属性为.T.,AutoCenter属性为.T.,BorderStyle属性为2-固定对话框,Caption属性为"",ControlBox属性为.F.,MaxButton属性为.F.,MinButton属性为.F.,Movable属性为.F.,ShowWindow属性为2-作为顶层表单,WindowType属性为1-模式。
既是封面,自然要有一个漂亮的底图,此图片可自行用绘图软件制作,大小可自定,只是别忘了在底图上写清软件的名称。
底图做好之后,设置封面表单的Picture属性为此图片名即可。
三、显示用户名和用户单位。
见过WORD封面的人可能都会注意到其封面上有一提示“本软件使用权属于”,其下面是安装Windows 95时输入的用户名和用户单位,通过对Windows 95的注册表的访问,在Visual FoxPro中也可以实现这一设计。
在…表单控件‟工具条上选择…标签‟并在表单体上点击一下即可生成一个标签,设置它的Name属性为LabelTitle,Caption属性为…本软件使用权属于:‟,Autosize属性为 .T.,BackStyle属性为0-透明。
浅谈VFP程序的破解由于VFP程序的编译是一种伪编译过程,经过一定的处理,可以得到完整的源代码。
自从ReFox、UnFoxAll等反编译软件出现后,为保护作者自己的利益,软件的加密保护就显得十分重要,相应的,VFP程序的加密也越来越严。
但由于VFP固有的特点—即解释执行,VFP的解释器必须要得到可识别的代码,所以VFP程序的破解相对其他语音编译的程序来说,还是比较简单的。
一、VFP EXE程序的特点VFP标准的编译EXE文件是如下一种格式:可执行部分+APP文件+结构说明其中可执行部分是标准的PE文件,APP部分就是VFP编译的应用程序代码,最后的结构为14个字节,用来描述APP文件,其中重要的是最后4个字节,反映的是APP文件的大小。
头部的可执行部分只是简单地加载VFP的解释器(解释器名称为vfp6r.dll、vfp7r.dll、vfp8r.dll分别对应6.0、7.0、8.0.版本)执行app文件。
现在的加密软件大多利用这个特点,自己构造一个PE头,利用各种壳的技术保护APP代码。
因此我们可以这样认为,对于VFP的可执行文件,除APP文件以外的可执行部分,都可认为是壳。
二APP文件的结构1.app文件结构app文件是vfp生成的应用程序或Active Document其结构为:字节偏移说明0-1 文件标识&Hf2fe为vfp的app2 加密标识bit 0 为1,未加密bit 0 为0,加密,此时bit 4(0或1)区分为两类3-4 编译版本&H0220 -vfp 6.0/7.0&H021f -vfp 5.05-6 文件数目7-8 主文件位置(从0开始)9-12 文件名列表地址13-16 文件说明结构列表地址17-20 文件名列表长度21-36 加密类型密码表37-38 解密key39-40 文件校验和文件名列表地址[目录名],00,文件名,00,文件名,00,...文件说明结构列表地址每个文件占用25个byte,总长度为文件数*250 文件类型0为代码其他数据1-4 文件开始地址5-8 文件结束地址9-12 文件名相对文件名列表的首地址其他不详三、VFP的加密特点及脱壳VFP的加密基本上可以分为两种—文件型加密和内存型加密,这两种加密的区分主要在APP文件的存放位置,存放在某个文件中就为文件型,存放在内存中就叫内存型。
但对解密者来说,关心的是算法。
以上的分类加不加以区别问题不大。
1、文件头简单替换型这种加密方式是比较早期的一种加密方式,能够阻止反编译软件,但APP代码在文件中以明码出现,如xx王5.05B()脱壳方法:打开HEX,查找FEF2找到后与APP文件的结构对比一下,发现没有问题,把从FEF2开始到文件尾的数据存成一个文件,取名XXX.app,脱壳完成。
2、文件隐藏型这类加密在exe文件中已经没有app的明码了,app文件是由主程序运行过程中动态生成的,以文件形式存在硬盘的某处。
如xx通用计划管理系统6.02()用TRW2000加载程序下断bpx createfileacreatefilea的定义为:HANDLE CreateFile(LPCTSTR lpFileName, // pointer to name of the fileDWORD dwDesiredAccess, // access (read-write) modeDWORD dwShareMode, // share modeLPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDisposition, // how to createDWORD dwFlagsAndAttributes, // file attributesHANDLE hTemplateFile // handle to file with attributes to copy);每次中断后观察打开的文件名,经过两次foxpro.int下面一个就是脱壳后的文件名了。
文件放在c:\windows\history\...\ (x)因为c:\windows\history\是windows的系统目录,下面的文件不可显示,程序运行结束后又会删除这个文件,所以必须在程序没有结束前得到这个文件方法一:用suspend将程序挂起,用procdump kill现有进程,回dos利用xcopy /s 将所有文件考出,处理方法二、利用copyfilea函数BOOL CopyFile(LPCTSTR lpExistingFileName,// pointer to name of an existing fileLPCTSTR lpNewFileName, // pointer to filename to copy toBOOL bFailIfExists // flag for operation if file exists);在上图的位置r eax 0 r ebx 63e630 r edx 63e660将63e660地址的内容改成目的文件如 d:\ab\s.exe然后编一段代码a eippush eaxpush edxpush ebxcall copyfilea最后一句不能直接输入,要用exescope找到import中copyfilea的位置,计算相对地址用ff 15 xx xx xx xx填入单步运行完copyfilea后,隐藏的文件就被考出来了。
考出的文件是exe文件,用1的方法就能得到app文件,但这个app文件可运行,用unfoxall反编译会出错,后面会讲到app文件的标准化处理。
3 改变解释器动态解码这种加密方式采用了狗的方式,用trw2000加载跟踪时,在文件开始运行的代码部分会看到大量的花指令,再将主文件加密的同时,它把解释动态连接库也进行了加壳,运行时用壳中的代码将app文件解码后执行。
因vfp6r.dll被改动,无法放到系统目录下,因此文件安装目录下能看到vfp6r.dll,用exescope文件观察此文件,能看到gtide段,这就是这种文件的特征。
例如:xx建筑工程预结算系统6.6版()处理方法:采用2的方法下断createfilea,得到调用文件后,下断readfile,readfile定义如下:BOOL ReadFile(HANDLE hFile, // handle of file to readLPVOID lpBuffer, // pointer to buffer that receives dataDWORD nNumberOfBytesToRead, // number of bytes to readLPDWORD lpNumberOfBytesRead, // pointer to number of bytes readLPOVERLAPPED lpOverlapped // pointer to structure for data);第3次读200byte时中断,在读出的代码处下断,bpm xxxxxxxx,观察程序如何解码解码部分的指令0167:0C2FA505 INC DWORD [EBP-04] 已处理字节数0167:0C2FA508 MOV EAX,[EBP+0C] 要处理字节数0167:0C2FA50B CMP [EBP-04],EAX0167:0C2FA50E JNC 0C2FA53A0167:0C2FA510 MOV EAX,[EBP-04]0167:0C2FA513 MOV ECX,[EBP+08] 要处理数据的首地址0167:0C2FA516 XOR EDX,EDX0167:0C2FA518 MOV DL,[ECX+EAX] 要处理的数据送DL0167:0C2FA51B MOV AL,[EDX+0C3352E2] 0C3352E2—0C3354E2 512个字节为密钥0167:0C2FA521 MOV [EBP-08],AL0167:0C2FA524 XOR EAX,EAX0167:0C2FA526 MOV AL,[EBP-08]0167:0C2FA529 MOV AL,[EAX+0C3353E2]0167:0C2FA52F MOV ECX,[EBP-04]0167:0C2FA532 MOV EDX,[EBP+08]0167:0C2FA535 MOV [EDX+ECX],ALJMP 0C2FA505W 0C3352E2 0C3354E2 key.bin记下读出的内容,用hex workshop 在主文件中查找,将到文件尾的内容写入另一个文件code.bin 用VB的语言,上述的解密算法为Dim keyfiledata(0 to 511) As ByteDim codefiledata() As ByteDim middata() As ByteDim keyfilelen As LongOpen " Key.bin" For Binary As #1Get #1, 1, keyfiledata()Close #1keyfilelen = FileLen("code.bin")Redim keyfiledata(0 to keyfilelen-1) as byteRedim middata(0 to keyfilelen-1) as byteOpen "code.bin" For Binary As #2Get #2, i, codefiledataClose #2For I=0 to keyfilelen-1Middata(i) = keyfiledata(keyfiledata(codefiledata (i)) + 256)Next iOpen "code.app" For Binary As #2Put #2, 1, middata()Close #2MsgBox "finish"得到app文件4 改变解释器的加密方式这种文件的加密方式的app文件是以加密app的方式出现,加密者将vfp6r.dll的解密部分代码和文件头标志加以改变,变成自己的动态连接库,这个库文件同样放在文件的安装目录下,但有的程序采用了一定的手段让用户看不到这个文件。
例如:xx工程造价软件6.6版()这个软件安装后,改变注册表HKEY_LOCAL_MACHINE\software\Microsoft\windows\currentversion\explorer\advanced\fold er\hidden\showall\checkedvalue将键值由0改为1,这样隐含系统文件你就看不到了,我认为这种方法是不可取得,文件加密的同时不应干扰用户其他的功能,利用这种方法有点缺德之嫌。