Ollydbg手动脱壳得几点小结

手把手教你用PEiD和Ollydbg脱壳:从查壳到脚本脱壳的完整流程 本文详细介绍了使用PEiD和Ollydbg进行软件脱壳的完整流程。从利用PEiD进行外壳识别开始,逐步讲解在Ollydbg中通过手动跟踪、设置硬件断点定位原始入口点(OEP),并完成内存转储与输入表修复的核心技法。文章还介绍了如何利用脚本实现自动化脱壳,提升逆向分析效率,适合具备汇编基础的逆向分析爱好者学习实践。 阅读详情

手动脱壳


Ollydbg手动脱壳得几点小结: 
  
      一般认为手动脱壳的关键是找到软件的真正入口OEP,但是用ollydbg脱壳知道软件的真正入口OEP并不能解决问题,因为ollydbg的工作原理和softice、trw2000等的有所不同,在OEP未解压以前是不能在OEP设断上的,因此用ollydbg脱壳的关键是让程序中断在OEP,一旦中断在OEP脱壳就告完成。当然能够用冲击波等软件知道软件的OEP在用ollydbg脱壳中还是有一定帮助的。那么如何让程序中断在OEP呢?这里小结几种方法。 
    方法一、用ollydbg载入程序,,第1个消息框,点yes,第2个消息框,点no,程序停在入口处EP(注意不是OEP) ctrl+b  Hex中输入壳的入口特征代码(如upx  61 E9),回车 
              popad 
    看到入口点jmp xxxxxx 
F2在此行设断(或者将光标移动到这一行上按f4),F9,F8走1-2下,来到入口点,用ollydbg的插件dump选中程序进程dump程序。但此法对于有些入口点附近代码被压缩的程序就无能为力了。对于这种程序有方法二。 
    方法二、用ollydbg载入程序,,第1个消息框,点yes,第2个消息框,点no,ctrl+b  Hex中输入壳的入口特征代码(如upx  61 E9),回车,找不到 
          popad 
    jmp  xxxxxx 
对于这种情况在用ollydbg载入程序,,第1个消息框,点yes,第2个消息框,点no时程序停在入口处EP(注意不是OEP),先用F9,F8走几下,使特征代码解压缩再用上面的方法搜索壳的特征代码。一般都能解决问题。对于那些不知到壳特征代码的那怎么办呢?于是有了方法三。 
    方法三、用ollydbg载入程序,,第1个消息框,点yes,第2个消息框,点no,程序停在入口处EP(注意不是OEP),一般代码为pushad、  pushfd等。自己用眼睛向下搜索与pushad 、 pushfd对应的popad、popfd 。F2在此行设断(或者将光标移动到这一行上按f4),F9,F8走1-2下,来到入口点,用ollydbg的插件dump选中程序进程dump程序。那么怎么知道找到的popad、popfd是与程序EP对应的popad、popfd呢?一般情况,对于保护不是非常强悍的壳向下找十几行或几十行看到的第一个popad、popfd即为对应的popad、popfd。而且入口点附近popad往往在下面几行还有指令ret。有些壳如PECompact它的入口处EP有  xxxxxxx    pushad 
                        xxxxxxx    pushfd 

那么当你看到            xxxxxxx    popfd 
                        xxxxxxx    popad    就找到了。如果向下找十几行或几十行找不到的popad、popfd那该怎么办呢?于是有了方法四。 
    对方法三的补充:有些壳如果在ollydbg中找popad是行不通的,因为用ollydbg载入脱壳对象时第1个消息框,点yes,第2个消息框,点no,ollydbg没有中断在pushad上,我曾碰到过用ollydbg载入脱壳对象时第1个消息框,点yes,第2个消息框,点no,ollydbg没有中断在popad上,这样OEP应该在pashad附近,所以应该与之对应pushad。一般这样的壳保护比较弱。很容易脱的。 
  方法四、用ollydbg载入程序,,第1个消息框,点yes,第2个消息框,点no,程序停在入口处EP(注意不是OEP),一般代码为pushad、  pushfd等。自己用眼睛向下搜索与pushad 、 pushfd对应的popad、popfd。向下找十几行或几十行找不到的popad、popfd那必须先用F9,F8走几下,使特征代码popad、popfd解压缩再搜索popad、popfd。 
  方法五、对于大量使用SEH,保护非常强悍的壳,如aspr需采用以下方法。 
        1、使程序运行到最后一次SHE,最后一次SHE如何确定?记下程序运行的shift+f9次数n,shift+f9            n-1就是。
        2、看堆践处SHE  handle  f2设断,shift+f9查找popad、popfd即可。 
        3、如果能够知道OEP,此时步骤2也可用ctrl+g OEP按f4而且有些aspr版本必须用此法,否则非常麻烦 
附表:壳名称、版本相应的特征代码 
壳名称及版本    特征代码 
Asprotect  1.0以下    EB 02 EB E8 61 EB 01 
Asprotect  1.2    61 FF E0 
ASPack 2.0以下    61 75 08 b8 
PECompact 1.33    61 9D 50 68 
Petite 2.1/2.2    61 66 9D 83 C4 
PE-pack  all    89 44 24 1c 61 FF E0 
Armadillo 2.51    03 F9 E8 A9 EE FF 
Armadillo 2.52    03 F9 E8 2D EE FF 
VBox 4.6.5    CD 20 FF E3 
ASPack 2.12    B8 01 00 00 00 C2 
UPX 1.20w    61 E9 
Telock0.71    61 FF 64 24 DC 
Exe32Pack 1.3x    E9 5E FE FF FF 
有待补充     

病毒分析-ollydbg脱壳的步骤和原理 启动OllyDbg,将需要脱壳的可执行文件加载到调试器中。OllyDbg会加载程序并停在程序的入口点(EP),但此时通常不是原始入口点(OEP)。 阅读详情

相关推荐

ollydbg教学篇

写之前先说点废话(谁扔的香蕉皮,鸡蛋^^^^^^^^^^^): ollydbg是个功能强大的软件,以前我也不用他(不习惯),而且很多经典教程都是用trw和softice作为示例工具写的. 初学者(注:和我一样的人)往往一开始就接触这些工具,做练习也就用这些工具!可以说已经上手了! 对ollydbg的动态调试功能也就陌生了! 现在一个很现实的问题让我改变了习惯,我的键盘鼠标是usb的,显示器也给

WiNrOOt的逆向工程专栏 7675

逆向基础——软件手动脱壳技术入门

YHZX_2013 · 2015/09/07 14:06这里整合了一下之前自己学习软件手工脱壳的一些笔记和脱文,希望能给新学软件逆向和脱壳的童鞋们一点帮助。1 一些概念1.1 加壳加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码。要经过脱壳才可以查看源代码。加壳是利用特殊的算法,对EXE、DLL文件里的资源进行压缩、加密。类似WINZIP 的效...

weixin_34248118的博客 989

菜鸟的逆向经验(一):尝试脱壳UltraISO

菜鸟的我终于开始了脱壳的第一次尝试,虽然失败了好多遍但是总算是知道了怎么做了,接下来就来说一下基本的思路。     查壳,发现是Aspack壳。     通过OllyDBG找到入口点,利用ESP定律就可以了。 注意到 push addr retn 相当于 jmp addr 表示直接跳转到OEP     找到OEP之后就可以dump了,使用LordPE将当前的内存dump

Wind_Desert的博客 1255

脱壳基础教程

软件脱壳相关介绍

Aquarius_ego的博客 1万+

脱壳-UPX

首先需要准备一个新鲜的upx壳还有exeinfo和OD。 exeinfo看是什么壳,可以看到这是一个upx的壳。 然后放到OD里面 一、单步跟踪 按F8,或者反汇编区上面的下箭头进行单步调试 看到十六进制区域出现红色的箭头,说明出现跳转,按F8,直接跳转到箭头指向处,继续单步调试 出现上箭头,我们不让他跳回,选择(005790AB)地址按F4(右键,断点,运行到指定位置),运行到指定位置,...

weixin_43657323的博客 1053

Windows逆向实战:用x64DBG和OllyDBG手把手教你脱UPX壳(附避坑指南)

本文提供了一份详细的Windows平台UPX壳脱壳实战指南。通过使用OllyDBG和x64DBG两款经典调试器进行动态调试,手把手教学员从识别壳、定位原始入口点到内存转储的完整流程,并附有常见问题的避坑指南,帮助逆向工程初学者掌握核心脱壳技能。

fanta的博客 439

Ollydbg手动脱壳得几点小结,转自www.pediy.com

 标 题:Ollydbg手动脱壳得几点小结 (4千字) 发信人:sxssl[BCG] 时 间:2003-5-4 22:21:32 详细信息: Ollydbg手动脱壳得几点小结:      引子:2002.5.5是我有生以来最最黑暗的日子,那段时间我正当高三班主任而且5月份已临近高考,学生很需要我,我正带着高三4个班的

小虎的空间 2482

OllyDbg专用自动化脱壳脚本项目实战

OD(OllyDbg)是一款流行的x86架构程序的调试器,以其用户友好和功能强大著称。它能够进行反汇编,设置断点,分析寄存器和堆栈操作,非常适合在逆向工程中使用。使用OD进行脱壳的主要目的是为了恢复原始的可执行文件,以便进行代码分析和修改。脱壳过程一般包括以下几个步骤:首先识别程序的入口点,然后通过OD加载程序并开始调试。在这个过程中,会遇到各种壳特有的保护机制,必须逐个处理。脱壳通常分为手动脱壳和使用自动化脚本两种方式。手动脱壳依赖调试者的经验和直觉,而自动化脚本则能够简化过程并提高效率。

weixin_33068055的博客 1927

比较常用的脱壳方法

OllyDBG常用快捷键 F2:设置断点,只要在光标定位的位置按F2键即可,再按一次F2键则会删除断点。 F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到CALL等子程序不进入其代码。 F7:单步步入。功能同单步步过(F8)类似,区别是遇到CALL等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。 F4:运行到选定位置。作用就是直接运行到光标所在位置处暂...

行走在黑暗中的狙击者 513

ollydbg脱壳教程

里面有10多个教程,这个要多谢那些录制的大哥,我来分享给大家认识

Python+Seaborn可视化:双因素方差分析结果这样呈现更专业

本文详细介绍了如何利用Python中的Seaborn和statsmodels库,专业地执行并可视化双因素方差分析结果。通过模拟实验数据,演示了从模型构建、统计检验(包括交互作用分析)到诊断验证的全流程。重点展示了如何使用Seaborn绘制交互效应图、组合分布图及热图,将复杂的统计结果转化为直观、富有洞察力的可视化图表,助力科研论文与商业报告的专业呈现。

weixin_29274969的博客 137

2021-08-26

逆向学习(一)环境汇编寄存器指令脱壳常用工具理论知识方法与修复OllyDBG动态调试常用快捷键破解 环境 1、工具 IDA、OllyDBG 、ExeinfoPE、DIE 汇编 寄存器 1、CPU通用寄存器 EAX 累加器, 它是很多加法乘法指令的缺省寄存器。 EBX 基地址寄存器, 在内存寻址时存放基地址。 ECX 计数器, 是重复(REP)前缀指令和LOOP指令的内定计数器。 EDX 则总是被用来放整数除法产生的余数。 ESI/EDI 分别叫做”源/目标索引寄存器”,因为在很多字符串操作指令中, DS:E

AMBER54321的博客 1433

摄像头读取出现VIDIOC_STREAMON: No space left on device 错误

先说下原因,linux中为usb camera提供了一个标准的V4L2的驱动以方便使用,只要符合驱动规范就可以实现即插即用usb camera设备,即免驱动安装。 但市面上的USB 摄像头都是2.0的。usb bus的 bandwidth是有限的,而V4L2驱动采用的是贪心原则,即camera会要求获取最大带宽;因此将两个camera接入一路usb bus,打开第二个camera(尤其是采用YUV...

houge101的博客 9288

手动脱壳教程

一、什么是壳?         壳是指在一个程序的外面再包裹上另一段代码,保护里面的代码不被非法修改或反编译的的程序。它们一般先于程序运行,拿到控制权,然后完成它们保护软件的任务。 二、壳的加载过程 1、保存程序入口参数         加壳程序初始化时保存各个寄存器的值(用堆栈),外壳执行完毕后,再恢复各个寄存器的值,最后再跳到源程序执行。 2、获

weixin_44032972的博客 1万+

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id => 1110, resp_id => 50597, resp_appl_id => 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4766

实战解析:如何通过LTspice仿真优化MOS管缓启动电路,解决上电冲击电流问题

本文详细解析如何通过LTspice仿真优化MOS管缓启动电路,有效解决上电冲击电流问题。文章从问题根源分析入手,介绍LTspice环境搭建、缓启动电路设计原理、参数优化技巧及实际工程问题排查,帮助工程师掌握MOS管电源开关电路的关键设计方法,提升系统可靠性和性能。

weixin_28683689的博客 512

使用 OllyDump 完成一次脱壳实战解析

加壳是通过特定算法将原始程序代码和数据进行压缩、加密或变形处理,并添加额外的代码来实现解压缩、解密和还原原始程序的功能。加壳后的程序在运行时,首先执行壳程序代码,完成对原始程序的加载和环境初始化,然后将控制权交给原始程序,使其正常运行。常见的加壳类型有压缩壳(如 UPX)、加密壳(如 ASProtect)等,不同类型加壳技术在保护强度和解壳难度上有所差异。使用 OllyDump 进行脱壳是一个复杂但有趣的过程,需要综合运用调试技巧、汇编语言知识和对程序运行机制的理解。

m0_57836225的博客 1266

addBumpConnectTargetConstraint 命令详解

本文介绍了Cadence Innovus中用于倒装芯片设计的addBumpConnectTargetConstraint命令的核心功能和使用方法。该命令主要用于为凸点(Bump)添加连接目标约束,通过绑定实例、引脚/网络和端口号等属性,实现凸点与电源/信号网络的精准映射。文章详细解析了命令语法结构、参数说明及使用场景,包括必选参数(指定凸点方式)、分支选择(实例连接或电源连接类型)以及互斥参数(引脚名与网络名)等重要注意事项,并提供了典型应用示例。该命令特别适用于倒装芯片设计中凸点与PG网络、IO实例的连接

u013620135的博客 394

OllyDbg实战:加壳程序脱壳与反调试绕过全攻略

在恶意代码分析与软件逆向工程中,加壳与反调试是最常见的攻防手段之一。加壳并非简单加密,而是为可执行文件套上一层运行时解释器,在内存中动态还原原始代码,同时通过API检测、PEB直读、异常触发、时间戳对比等方式构建反调试屏障。理解这些检测原理,是绕过机制、定位原始入口点(OEP)和修复导入表(IAT)的基础。OllyDbg作为经典的32位用户态调试器,配合StrongOD插件和ESP定律等技巧,可有效应对压缩壳与保护壳。本文从静态侦察、动态调试到手动Patch,系统讲解加壳程序的脱壳流程与反调试绕过策略,帮助

weixin_32736961的博客 238

IIC软件协议及硬件知识汇总

IIC软件协议及硬件相关知识,真的是非常齐全了!

记得诚 1万+

ARM CoreLink 系列 5.1.1 -- CI-700 System Address Map 】

所有的CHI 命令都包含一个 Source ID 和 Target ID, 其中 Source ID 可以来自于 RN Node, Target ID 可以来自于HN node或者其他 SN node. 其中 Target ID 是通过 SAM解析传入的地址得到的。对于 CI-700中的所有 RN Node 中的 SAM 多会进行配置,因为RN Node 访问的是整个地址空间,不同的地址空间会有不同的属性(I/O, DRAM),所以会对RN SAM 配置多个不同属性的区域。

CodingCos的博客 770

Ollydbg手脱UPX加壳的DLL

Ollydbg手脱UPX加壳的DLL 作者:FLY 文章来源:网络 点击数:33 更新时间:2005-2-27   Ollydbg手脱UPX加壳的DLL                          [fly]                               【目标程序】:UPX加壳的EdrLib.dll。附件中还有输入表、重定位数据、UPXAngela以及UnPacked以供参考

修养生息,以得佳境 1813

台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)

*完整源码地址**:[https://github.com/billiards/pcol-core](https://github.com/billiards/pcol-core)(包含详细文档与示例)通过这个项目,我们不仅创建了一个游戏,更构建了一个**可扩展的物理引擎框架**,为网页端复杂物理模拟开辟了新的可能性。**在线体验**:[https://pcol.billiards](https://pcol.billiards)(支持移动端触控操作)clone.velocity.x *= -0.92;

Loving_enjoy的博客 2796

逆向基础:软件手动脱壳技术入门

最后一次异常法的原理是,程序在自解压或自解密过程中,可能会触发无数次的异常。如果能定位到最后一次程序异常的位置,可能就会很接近自动脱壳完成位置。现在最后一次异常法脱壳可以利用Ollydbg的异常计数器插件,先记录异常数目,然后重新载入,自动停在最后一次异常处。

2401_84206094的博客 2999

WINCC7.3破解文件

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

深度学习工具包 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")

逆向分析之脱壳

计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。他们附加在原程序上通过Windows加载器载入内存后,先于原始程序的执行,得到控制权,执行过程中对原始程序进行解密和还原操作,还原后再把控制权交给原始程序,执行原来的代码部分。壳可以划分为压缩壳和加密壳,压缩壳侧重于压缩体积,加密壳侧重于加密,二者的出发点是不一样的。常见的压缩壳有upx、ASPack等,常见的加密壳有ASProtect、Armadillo等。

m0_51227834的博客 899

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OllyDBG 入门系列(一)-认识OllyDBG

导读:  <!--google_ad_client = "pub-7058131363132249";/* 468x15, 创建于 08-6-3 */google_ad_slot = "4187223796";google_ad_width = 468;google_ad_height = 15;//--> <script type="text/javascript"

Tisty的兵工厂--新Blog:http://www.UbuntuSky.cn 1559

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: PE文件加载和修改
下一篇: SEH in ASM 研究
vbsourcecode
博客等级 码龄17年 19粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值