用SOFTICE破解WINZIP的过程

Win32程序调试利器:SoftIce V4.32 SoftIce,作为软件行业中的资深动态调试器之一,自20世纪90年代初期问世以来,一直是软件调试领域的重要工具。从最初的DOS版本,到后来支持Windows和UNIX系统,SoftIce经历了多个版本的迭代与优化。每个版本都带来了新的特性和改进,如更稳定的性能、更丰富的调试选项、以及更好的用户交互体验。随着技术的进步,SoftIce也逐步整合了更强大的符号分析和反汇编技术,为用户提供前所未有的调试能力。调试器与编译器在软件开发的生命周期中扮演着不可或缺的角色。 阅读详情

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
破解步骤:

1. 用softice载入windows(通过CTRL+D来检查softice是否已经准备好,按F5退出softice);

2. 运行 WinZip,选择“help”下的“Enter Registration Code...”;

3. 在“Name:”中 输入:KraneXH(随意),“Registration #:”中输入:12345678(随意);

4. 用CTRL+D呼出softice,下万能断点:bpx hmemcpy,按F5返回到winzip;

5. 在winzip中选择“OK”,很快程序就被softice拦截下来(因为我们设置了断点bpx hmemcpy,当在winzip中选择“OK”时,winzip会通过hmemcpy这个功能去取我们输入的名字“KraneXH”和注册码“12345678”,softice检测到hmemcpy被调用,于是就中断winzip的运行,停留在winzip中调用hmemcpy的地方);

6. 用 bd * 暂停刚才设置的断点 bpx hmemcpy (为什么要暂停断点bpx hmemcpy呢?因为我们的目的是要在winzip取名字和注册码的时候中断它的运行,但是 bpx hmemcpy 这个断点并不是针对winzip才有效的,计算机里运行的程序都可能会随时调用它。由于我们在winzip中刚输入名字和注册码后设置断点 bpx hmemcpy ,此时winzip会马上去取我们输入的名字和注册码,所以我们能确保是中断在winzip程序中,通过 bd * 这个命令暂停断点 bpx hmemcpy ,能够防止解密时被其它不相干的程序中断,影响解密的正常进行);

7. 按F12键9次,返回到winzip的领空(因为刚才softice中断在hmemcpy中,这是windows系统区域,不能更改的,winzip仅仅是调用这个功能而已,所以我们必须要返回到winzip程序中才有用),来到下面的地方:
......
0167:00407F6D CALL [USER32!GetDlgItemTextA]
0167:00407F73 PUSH EDI             ←- 程序停留在这里,EDI指向“KraneXH”
0167:00407F74 CALL 0043F89A
0167:00407F79 PUSH EDI
0167:00407F7A CALL 0043F8C3
0167:00407F7F POP ECX
0167:00407F80 MOV ESI, 0048CDA4
0167:00407F85 POP ECX
0167:00407F86 PUSH 0B
0167:00407F88 PUSH ESI
0167:00407F89 PUSH 00000C81
0167:00407F8E PUSH EBX
0167:00407F8F CALL [USER32!GetDlgItemTextA]
0167:00407F95 PUSH ESI             ←- ESI指向“12345678”
0167:00407F96 CALL 0043F89A
0167:00407F9B PUSH ESI
0167:00407F9C CALL 0043F8C3
0167:00407FA1 CMP BYTE PTR [0048CD78],00   ←- [0048CD78]指向“KraneXH”
0167:00407FA8 POP ECX
0167:00407FA9 POP ECX
0167:00407FAA JZ 00408005
0167:00407FAC CMP BYTE PTR [0048CDA4],00   ←- [0048CDA4]指向“12345678”
0167:00407FB3 JZ 00408005
0167:00407FB5 CALL 00407905
0167:00407FBA TEST EAX,EAX
0167:00407FC3 JZ 00408005
......

8. 我们从调用hmemcpy的系统区域中返回到winzip领空时,程序停留在0167:00407F73 PUSH EDI上,看看它上面的那条指令0167:00407F6D CALL [USER32!GetDlgItemTextA],这个CALL就是取我们输入数据的程序,也就是这个CALL让我们用 bpx hmemcpy 将winzip拦截了下来。既然winzip用这个CALL去取输入的东西,那么调用之后肯定会返回结果的,让我们来看看:用 D EDI ,观察softice的数据区,你会看到EDI指向的内存区域的内容是我们输入的名字“KraneXH”;

9. 从程序中可看出,下面不远的地方还有一个同样的地方调用USER32!GetDlgItemTextA,既0167:00407F8F CALL [USER32!GetDlgItemTextA]这一行。按F10键多次,走到这个CALL的下一句停下,既程序停在0167:00407F95 PUSH ESI这条指令上,用 D ESI ,同样的我们可以看到ESI指向的内存区域的内容是我们输入的注册码“12345678”。现在winzip已经将我们输入的名字和注册码都取到,让我们来看看它下一步要做什么?

10. 继续按F10多次,当程序走到0167:00407FA1 CMP BYTE PTR [0048CD78],00时停下来,这条指令将内存0048CD78中的数据和00比较,然后根据比较结果判断程序走向。用 D 0048CD78,观察softice的数据区,我们可以看到0048CD78中的数据是“KraneXH”,现在我们知道这条指令的作用是判断我们输入的名字是否为空,如果没有输入任何东西,程序将会跳到00408005去;同样的,按F10走到0407FAC CMP BYTE PTR [0048CDA4],00这行停下,然后用 D 0048CDA4,可以看到0048CDA4中的数据是“12345678”。因为我们输入了名字和注册码,所以程序不会跳到 00408005去,程序检查输入的名字和注册码,如果任何一个没有输入(既其值为00),程序都会跳到00408005去,由此我们应该想到00408005很可能就是显示出错的地方,即当程序走到00408005 的时候,表示输入的名字和注册码是错误的;
11. 按F10两次来到下面的那个CALL 00407905(因为程序刚才停在0167:00407FAC CMP BYTE PTR [0048CDA4],00上):
......
0167:00407FB5 CALL 00407905          ←- 程序停留在这里
0167:00407FBA TEST EAX,EAX
0167:00407FC3 JZ 00408005
......
程序判断输入的名字和注册码是否为空后调用CALL 00407905,这个CALL将结果返回到EAX中,程序根据EAX值判断走向。从程序可以知道,如果EAX的返回值是0,则程序会跳到00408005,就是刚才我们判断是有问题的地方。那么这个CALL倒底藏着什么猫腻呀?现在还不是很清楚,接着按F10两次来到JZ 00408005停下。现在看看softice中的零(即Z)标志位,其值是零,所以程序将会跳到00408005去,我们姑且按F10跳到00408005去看个究竟:
......
0167:00408005 CALL 004082A6          ←- 程序停留在这里
0167:0040800A PUSH 0000028E
0167:0040800F CALL 0043F5ED
0167:00408014 PUSH EAX
0167:00408015 PUSH EBX
0167:00408016 PUSH 3D
0167:00408018 CALL 00430025          ←- 出现错误框
0167:0040801D ADD ESP,10
0167:00408020 INC D Word PTR [00487AF8]
0167:00408026 CMP DWORD PTR [00487AF8],03   ←- 判断错误次数是否到了3次?
0167:0040802D JNZ 0040812C
0167:00408033 PUSH 00
0167:00408035 PUSH EBX
0167:00408036 CALL [USER32!EndDialog]
0167:0040803C JMP 0040812C
......

12. 一直按F10走过0167:00408018 CALL 00430025,这是程序蹦出一个窗口,警告:Incomplete or incorrect information(不完整或不正确的信息),程序走到这里就已经很明朗了:如果程序在前面的时候跳到00408005来,就表示输入的名字和注册码是错误的,所以刚才的那个0167:00407FB5 CALL 00407905一定是比较输入的注册码是否正确的地方,也就是里面肯定有将我们输入的注册码和正确的注册码相比较的地方,所以我们要进入CALL 00430025里去看看。如果继续往CALL 00430025下面的语句看的话,你会看到下面的几句:
0167:00408020 INC DWORD PTR [00487AF8]
0167:00408026 CMP DWORD PTR [00487AF8],03
0167:0040802D JNZ 0040812C
程序先将内存00487AF8处的值加1(其初始值为0,可以在这条语句前用 D 00487AF8 查看),然后比较是否是3,如果不是就跳到0040812C,如果是则执行后面的0167:00408036 CALL [USER32!EndDialog],其作用就是关闭对话框,也就是我们输入名字和注册码的窗口。由此我们可以看出此处程序的作用是检查错误输入名字、注册码的错误次数是否已经到了3次,如果到了3次,则关闭对话框,不允许再输入;如果少于3次,可有机会再次输入名字和注册码。

13. 重复前面的步骤1到11,让程序停在0167:00407FB5 CALL 00407905上,然后按F8进入这个CALL里面去:
......
0167:004079D5 PUSH EBP
0167:004079D6 PUSH EBP,ESP
0167:004079D8 SUB ESP,00000208
0167:004079DE PUSH EBX
0167:004079DF PUSH ESI
0167:004079E0 XOR ESI,ESI
0167:004079E2 CMP BYTE PTR [0048CD78],00
0167:004079E9 PUSH EDI
0167:004079EA JZ 00407A8A
......

14. 按F10键N次(我也不知道几次,你自己数一数吧^_^),一直来到下面的地方停下:
......
0167:00407A91 LEA EAX,[EBP-0140]     ←- 程序停留在这里
0167:00407A97 PUSH EAX
0167:00407A98 PUSH EDI          ←- EDI指向输入的名字“KraneXH”
0167:00407A99 CALL 00407B47        ←- 计算注册码
0167:00407A9E MOV ESI,0048CDA4
0167:00407AA3 LEA EAX,[EBP-0140]
0167:00407AA9 PUSH ESI          ←- ESI指向输入的注册码“12345678”
0167:00407AAA PUSH EAX          ←- EAX指向正确的注册码“5CFC0875”
0167:00407AAB CALL 004692D0
0167:00407AB0 ADD ESP,10
0167:00407AB3 NEG EAX
0167:00407AB5 SBB EAX,EAX
0167:00407AB7 INC EAX
0167:00407AB8 MOV [00489FDC],EAX
0167:00407ABD JNZ 00407B27
0167:00407ABF LEA EAX,[EBP-0140]
0167:00407AC5 PUSH EAX
0167:00407AC6 PUSH EDI          ←- EDI指向输入的名字“KraneXH”
0167:00407AC7 CALL 00407BE4        ←- 计算注册码
0167:00407ACC LEA EAX,[EBP-0140]
0167:00407AD2 PUSH ESI          ←- ESI指向输入的注册码“12345678”
0167:00407AD3 PUSH EAX          ←- EAX指向正确的注册码“23804216”
0167:00407AD4 CALL 004692D0
0167:00407AD9 ADD ESP,10
0167:00407ADC NEG EAX
0167:00407ADE SBB EAX,EAX
0167:00407AE0 INC EAX
0167:00407AE1 MOV [00489FDC],EAX
0167:00407AE6 JNZ 00407B27
......

15. 大家一定会问:为什么会在这里停下,而不是其它地方呢?因为我在前面的程序中已经用 D *** 看过了,没有发现什么可疑的呀^_^!

  按F10走到0167:00407A99 CALL 00407B47处,用 D EAX 和 D EDI 观察其里面是什么?可以看到EDI指向我们输入的名字“KraneXH”,EAX指向的内存区域没有什么特别的数据;紧接着下面的CALL 00407B47 会对“KraneXH”进行一些处理,具体的 我们还不知道,继续往后走;

16. 按F10走到0167:00407AAB CALL 004692D0这一句,然后用 D ESI 和 D EAX 查看内存中的数据,可以看到ESI指向我们输入的注册码“12345678”,而EAX指向另外一串字符“5CFC0875”。不用说,十有八九这就是正确的注册码了,赶紧把它写在纸上吧^_^!继续往下走,我们会在下面的地方紧接着发现另外一个类似程序段,从而得到另外一串码“23804216”;

17. 验证注册码:按F5返回winzip,选择注册,输入名字“KraneXH”和注册码“5CFC0875”或“23804216”。然后你看到了什么?注册 成功的画面出现,直接确认就搞定了,哈哈哈。。。!

18. 现在我们知道CALL 00407B47这条语句的作用是根据我们输入的名字来计算正确的注册码,然后和我们输入的注册码比较,看两者是否相等。处理后事:最后别忘了用CTRL+D呼出softice,然后下命令 BC * 清除所有断点!!!

Softice 4.05:深入理解与应用 Softice 4.05是一款先进的软件调试工具,为系统分析和故障排除提供强大支持。它包括了对各种编程语言的调试支持,提供全面的硬件和软件层面的监控能力,能够实时查看和修改程序执行过程中的内存、寄存器、I/O操作和其他系统级资源。Softice 的命令行提供了一种快速、灵活的方式来执行各种调试操作。以下是一些最为常用的命令:bpm: 在内存地址上设置硬件数据断点。bp: 在代码上设置软件断点。bl: 列出当前所有的断点。bc: 清除指定的断点。dh。 阅读详情

相关推荐

SOFTICE使用说明中文版

SOFTICE使用说明中文版,对wdm编程很有用。-SOFTICE use the Chinese version of `programming useful.

Softice入门

Softice的界面和操作都比较简单,只要熟悉一些基本的命令之后就可以开始利用它为我们服务了。有一点要提醒大家:Softice在WINDOWS启动之前装入系统中,然后将WINDOWS载入(因为要控制、拦截WINDOWS的动作),所以它工作于系统的0级(即特权级)。当在WINDOWS下用热键呼出Softice后,它就控制了整个系统,此时任何其它的程序(包括系统时钟)都将处于停止状态。  本文只是

我的程序世界 1万+

SoftIce4.05.for.nt2000.rar

专业人士用 0.01154阿道夫45e8654f

SOFTICE 使用说明 (断点)

作者:kill      第 四 章 如何使用中断点指令 §4.1 序言 Soft-ICE 具有以往只有硬体除错器才具有的中断点能力。因为 80386 晶片的 威力和弹性,使我们不需要额外的硬体设备就能有更强大的中断点能力。 中断点的触发可以由记忆体某位址的读取、记忆体范围的读取、程式的执行及 埠的存取来达成。Soft-ICE 赋与每个中断点一个一位的 16 进位号码( 0 - F ) 。这个中断

小虎的空间 908

uniapp: err = err.replace(this._UNI_INPUT_DIR_REG, ‘UNI_TypeError: err.replace is not a function问题修复

问题:uniapp的依赖包出现了问题,需要升级解决办法:升级uniapp依赖包,下载"semver"和”@dcloudio/uni-i18n“两个包,本地锁定postcss为7版本,就解决了。

py_boy的博客 1453

3DE重客户端安装

3DE重客户端安装

m0_48170265的博客 9423

使用SoftICE调试程序入门

SoftICE是Numega公司出品的强大的程序调试工具,它可以运行dos,win3.1,win9x,winme,winnt,win2k等多种操作系统,是跟踪调试程序的有力的工具。这篇文章是我在自己使用SoftICE的过程中总结的关于SoftICE软件的安装、使用的方法与心得。   注意:以下讲述的是SoftICE version 4.05 for win2k,其他版本和它大同小异,如果你的Sof

6657

基于Autoware制作高精地图(一)

基于Autoware制作高精地图(一) ​开始进入正题,也是最近在忙的一件事,制作高精地图。 高精地图的制作大概分为以下四个流程(不一定完全正确): 1.构建点云地图; 2.点云地图标注; 3.制作OpenDrive地图; 4.地图存储索引。 这篇文章主要讲解如何构建点云地图。 首先我们要有一段自己录制的激光雷达点云数据,这里推荐大家采用Velodyne16线激光雷达,因为这里我们构建的点云底图是三维的,而采用Velodyne而不是速腾聚创(rslidar)等其他品牌的原因是Autoware里面有一个选项是

weixin_44570248的博客 7797

游戏外挂制作教材V5.5.9破解手记(原创)

本破解仅作学习研究用,请勿用于任何不法行为。软件名称:游戏外挂制作教材V5.5.9下载:编码语言:DELPHI 6.0-7.0大 小:516KB(压缩)加密方式:注册码使用工具:SOFTICE破解日期:2006年1月9日破解人:[certainheart] QQ:8108306本人的机器所对应的密码串为:ESyoyy+CpVGz=密码串所对应的ASCII:45 53 79 6F 79 2B 43

码妖的专栏 7302

视觉Transformer实战 | Cross-Attention Multi-Scale Vision Transformer(CrossViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准 ViT 结构在处理不同尺度的视觉特征时存在局限性。双分支 ViT (Cross-Attention Multi-Scale Vision Transformer, CrossViT) 通过引入双分支结构来解决这一问题,能够同时捕获局部和全局视觉特征。本文将详细介绍 CrossViT 的技术原理,并使用 PyTorch 从零开始实现 CrossViT 模型。

盼小辉丶的博客 721

【异常】OpenClaw 连接异常This site can‘t be reached 127.0.0.1 refused to connect Try: Checking the proxy

在访问OpenClaw相关服务时,浏览器提示如下异常信息,无法正常加载页面:Try:补充说明:该报错仅出现于本地访问场景(127.0.0.1为本地回环地址),涉及OpenClaw核心服务的本地连接交互,无外部网络及敏感信息泄露风险。

奶爸的编程之路,也就一周冷个三天 1483

SoftICE使用说明(六)

   §5.5 公用指令 指令: A --- 组译程式码 S --- 搜寻资料 F --- 将资料填入记忆体 M --- 搬移资料 C --- 比较两记忆区块 A --- 组译程式码 语法: A [address] 解说: Soft-ICE 的组译器允许你把程式码直接组译进记忆体中。这个组译器支援基 本的 8086 程式码及 80186 、80286 真实定址模式的扩充。但是运算辅助器及 8038

Keep Go…… 974

【前端圭臬】二:你知道的和不知道的 HTML

关于 HTML,说几个你可能不太关注的问题。

Evan 的博客 4758

使用SoftICE破解Winzip8.0全攻略

摘要Winzip是大家都很熟悉的压缩解压工具,装机必备工具。Winzip是个免费的共享软件,不注册也一样使用,只是会出现一个未注册的画面而已。它对注册码的保护并不复杂,破解这个软件也是相对简单的。程序名 :Winzip版本   :V8.0(3105)大小   :1,230KB运行平台:Windows 95/98/NT/2000保护方式:注册码破解方式:制作注册补丁?

1666

vue - 网站接入微信扫码登录功能详细教程,完整详细流程及完整功能示例源代码(附常见问题的解决方案与二维码样式修改方案)

vue.js项目植入微信登录,vue网页项目怎么做微信扫码登录,VUE项目中的微信扫码登录,VUE中最简单的js调用微信扫一扫功能,vue:如何设计网页的微信扫码登录功能,微信扫码功能官方文档,通过vue方式实现二维码扫码功能,vue调用微信扫码,vue H5 调用微信扫描二维码,Vue前端实现微信扫码登录,vue-wxlogin 微信授权登录组件,网站引入的微信登录框如何修改宽高或其他样式,wxlogin 组件插件怎么改变宽高,vue-wxlogin组件怎么自定义样式,微信网页授权,vue调用微信JSDK

✅ 精选推荐文章 6364

YOLOv8与Swin Transformer的完美结合:如何提升目标检测的精度与速度

Swin Transformer(Shifted Window Transformer)是一种新型的视觉Transformer架构,采用了局部窗口(Window)和局部窗口偏移(Shifted Window)的策略,极大减少了计算复杂度,同时保持了全局感知能力。局部窗口注意力:每个窗口内的元素进行自注意力计算,减少计算量。窗口偏移:通过在不同层次引入窗口偏移,增强了全局信息的交互。层级设计:通过堆叠多个层次的模块,逐渐捕捉不同尺度的特征。

shrgegrb的博客 2151

SoftIce基础入门

 Softice的界面和操作都比较简单,只要熟悉一些基本的命令之后就可以开始利用它为我们服务了。有一点要提醒大家:Softice在WINDOWS启动之前装入系统中,然后将WINDOWS载入(因为要控制、拦截WINDOWS的动作),所以它工作于系统的0级(即特权级)。当在WINDOWS下用热键呼出Softice后,它就控制了整个系统,此时任何其它的程序(包括系统时钟)都将处于停止状态。 

Deepest_Ice_Blue的专栏 613

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Softice使用指南---使用Softice

 安装并配置好Softice后,我们就可以开始进入使用Softice的阶段了,如果你没有做好前面的工作,还是先返回去将Softice准备好,学软件要一边看一边学习效果才好。Softice的界面和操作都比较简单,只要熟悉一些基本的命令之后就可以开始利用它为我们服务了。有一点要提醒大家:Softice在WINDOWS启动之前装入系统中,然后将WINDOWS载入(因为要控制、拦截WINDOWS的

ArduousBonze的专栏 2849

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Softice使用指南(异域の蜗牛注:经典的调试工具,几乎能调试所有程序.感谢ddcrack让我看了这么好的文章.分享)

  softice是异域の蜗牛了解到的最好的调试工具,对于没有对它进行屏避的软件都能较好的调试.不过本人并没用它成功破解过软件,有兴趣的朋友先看看使用方法,自己钻研钻研,请看下面正题Softice使用指南作者 :ddcrack (2001/5/24)    主页:http://ddcrack.yeah.net

异域の蜗牛's blog 6186

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SoftICE入门

Softice的界面和操作都比较简单,只要熟悉一些基本的命令之后就可以开始利用它为我们服务了。有一点要提醒大家:Softice在WINDOWS启动之前装入系统中,然后将WINDOWS载入(因为要控制、拦截 WINDOWS的动作),所以它工作于系统的0级(即特权级)。当在WINDOWS下用热键呼出Softice后,它就控制了整个系统,此时任何其它的程序(包括系统时钟)都将处于停止状态。   本文

Tonny_007的IT家园 947

软盘加密数据恢复:虚拟机环境搭建与UNLOCK工具实战解析

数据加密是信息安全的基础技术,其核心原理是通过特定算法将明文信息转换为不可读的密文,以保障数据的机密性。从早期的简单异或运算到现代的非对称加密体系,加密技术不断演进,在数据传输、存储安全等领域发挥着关键作用。面对遗留系统的数据恢复需求,特别是软盘等老旧存储介质,常需在隔离的虚拟机环境中操作。本文聚焦于利用VirtualBox搭建Windows XP兼容环境,通过扇区级备份、十六进制编辑器分析等工程实践,深入解析UNLOCK.iso等历史加密工具的解密流程与数据提取方案,为处理异或加密、扇区重排等传统保护机制

weixin_34050519的博客 340

有关SoftICE的详细操作指导教程

有关SoftICE的详细操作指导教程      一 命令: . 作用: 在代码窗口中定位当前指令 语法: . 用法: 当代码窗口可见时, .命令(点命令)使得当前的CS:EIP 所指向的指令可见, 并且高亮显示. 另外,此命令也把 SoftICE 从其他内存区域中切回原先弹出的内存区域. 详见后面的ADDR命令. 点评:    当你在代码窗口中上下浏览时,有可能走得

齐子龙的专栏 2105

常用逆向工具和书籍简介

SoftIce IdaPro OllyDebug 逆向工程核心原理 逆向工程权威指南 goto1 goto2 goto3

心向阳光,斗志昂扬! 673
上一篇: 鼠标屏幕取词技术的原理和实现
下一篇: Soft-ICE实例起步(Windows版)
ShenRui
博客等级 码龄20年 63粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值