安下载(俺下载):打造放心的绿色安全下载站! 安下载首页|软件分类|最近更新

所在位置: 首页  >  电脑软件  >  编程开发  >  编程工具 > ollyice v1.10 绿色中文版
ollyice

ollyice

 v1.10 绿色中文版
  • 软件大小:4.73 MB
  • 更新日期:2019-10-31 10:56
  • 软件语言:简体中文
  • 软件类别:编程工具
  • 软件授权:免费版
  • 软件官网:
  • 适用平台:WinXP, Win7, Win8, Win10, WinAll
  • 软件厂商:

6
软件评分

本地下载文件大小:4.73 MB

软件介绍 人气软件 下载地址

为您推荐: 编程开发

  ollyice是一款非常实用的反编译工具,它已经成功将SoftICE代替,跻身成为最流行的应用调试解密程序之一,可以为用户提供更多的服务帮助;用户可以根据需要将其打开您的应用代码,然后通过数据代码分析得到应用加密部分,从而获取应用注册密码;此版本程序已经支持插件功能,可以为用户提供一个程序功能拓展窗口,可以添加多个函数分析模块以及可以添加代码调用模块,支持API调用以及支持二进制代码的可读性,功能拓展主要是为了方便用户材操作,还可以把出错率降低到最小,从而使得管理员的调试工作更加容易;强大又实用,需要的用户可以下载体验

ollyice

软件功能

  1、支持的处理器

  ollyice支持所有 80x86、奔腾、MMX、3DNOW、Athlon扩展指令集、SSE指令集以及相关的数据格式,但是不支持SSE2指令集。

  1、支持自定义名称编辑

  ollyice可以根据Borland 和Microsoft格式的调试信息,显示输入/输出符号及名称。Object 扫描器可以识别库函数。其中的名称和注释您可任意添加。如果DLL中的某些函数是通过索引号输出的,则您可通过挂接输入库来恢复原来的函数名称。不仅如此,ollyice还能识别大量的常量符号名(如:窗口消息、错误代码、位域[bit fields]…)并能够解码为已知的函数调用。

  3、已知函数调用

  ollyice可以识别2300多个C和Windows API 中的常用函数及其使用的参数。您可以添加描述信息、预定义解码。您还可以在已知函数设定Log断点并可以对参数进行记录。

  4、支持函数调用

  ollyice可以在没有调试信息或函数过程使用非标准的开始部分和结尾部分的情况下,对递归调用进行回溯。

  5、支持自定义配置

  有多达百余个选项用来设置ollyice的外观和运行。

  数据格式:ollyice的数据窗口能够显示的所有数据格式:HEX、ASCⅡ、UNICODE、 16/32位有/无符号/HEX整数、32/64/80位浮点数、地址、反汇编(MASM、IDEAL或是HLA)、PE文件头或线程数据块。

软件特色

  1、启动

  用户可以采用命令行的形式指定可执行文件、也可以从菜单中选择,或直接拖放到ollyice中,或者重新启动上一个被调试程序,或是挂接一个正在运行的程序。ollyice支持即时调试,根本不需要安装,可直接在软盘中运行!

  2、线程

  ollyice可以调试多线程程序。因此您可以在多个线程之间转换,挂起、恢复、终止线程或是改变线程优先级。并且线程窗口将会显示每个线程的错误(就像调用 GETLASTERROR 返回一样)。

  3、调试DLLs

  您可以利用ollyice调试标准动态链接库(DLLs)。ollyice会自动运行一个可执行程序。这个程序会加载链接库,并允许您调用链接库的输出函数。

  4、源码级调试

  ollyice可以识别所有Borland和Microsoft格式的调试信息。这些信息包括源代码、函数名、标签、全局变量、静态变量。有限度的支持动态(栈)变量和结构。

  5、代码高亮

  ollyice的反汇编器可以高亮不同类型的指令(如:跳转、条件跳转、入栈、出栈、调用、返回、特殊的或是无效的指令)和不同的操作数(常规、FPU/SSE、段/系统寄存器、在栈或内存中的操作数,常量)。您可以定制个性化高亮方案。

使用说明

  用户可以点击本网站提供的下载路径下载得到对应的程序安装包

ollyice

  通过解压功能将压缩包打开,打开程序数据包后就可以看到对应的程序文件

ollyice

  找到主程序,双击主程序即可将程序打开,弹出功能分布清晰的界面

ollyice

  方法一:用插件隐藏OllyDBG

  HideOD:一般的Anti可以用HideOD隐藏,能调试大部分带有Anti-Debug软件。但某些壳还是检测到OllyICE存在。

  PhantOm: 推荐,这款插件出来有一段时间了,一直没被大众所关注,仅少数人使用,这也使得目前加壳软件没有对它的检测,可以很好地隐藏OllyDBG。

  例:如下设置PhantOm后,即可调试Themida v1.9.3.x

ollyice

  方法二:用HideToolz藏OllyDBG

  HideToolz是一款利用驱动实现隐藏进程、窗口工具,可以保护相关工具不被检测到。

  1.HideToolz 选项设置,单击图一的Option菜单。

ollyice

  图1 Option菜单

  2.打开Option界面后,按着图2设置,Anti-anti debug一定要勾选。

ollyice

  图2 设置Option

  3.设置好后,在主界面单击右键,执行Add Path,将需要被保护的进程所在目录(此处为OllyICE所在的安装目录)添加进去。

ollyice

  图3 增加被保护进程的路径

  IDATATABLE: 输入表基地址(Base address of import data table)

  entry: 模块入口

  nsect: 节数目(Number of sections in the module)

  V1.53(2007/05/03) pop,push,test,xchg命令

  findcmds(查找命令序列)更换官方PLUGIN重新编译,消除DBH,DBS的BUG

  引导/执行脚本顺序紊乱的重大BUG修复(内部引用NRU和MRU混乱),这个BUG困扰了我很久

  原版一直有这个BUG,以前不太注意,最近调试多才下决心解决了这个问题.

  中文说明做了大规模的补充和命令解释以及例子

  为兼容以前版本的脚本,去掉了类C的操作符.

  添加了asmtxt(调文本asm文件汇编后写入指定地址, asm文件不支持jmp类汇编)

  添加了bpx,bpd功能(下,禁止调用函数断点);

  添加了opentrace功能(打开跟踪)

  添加了setoption功能(调设置菜单)

  添加了GAPI功能(判断指定地址API)

  添加了READSTR功能(读地址中指定大小的字符串)

  支持16位寄存器(ax,bx...)

  find命令全面升级,可以直接支持变量和内存数据以及字符串,并支持搜索范围

  findop命令全面升级,可以直接支持变量和内存数据,并支持搜索范围

  添加了findcmd功能(查找命令);

  修正编辑变量数量不能大于50的问题

  在这个版本中,附带了两个脚本例子(tElock098.osc 和 UPX.osc)。

  这两个脚本,可以迅速找到对应壳的入口。

  3.1 语言

  OllyScript脚本语言是一个种类汇编的语言。你使用它来控制ODbgScript和脚本运行.

  在后面的文档中, “源操作数” 和 “目的操作数”表示以下含义:

  十六进制常数,既没有前缀也没有后缀。 (例如:是00FF, 而不是 0x00FF 和 00FFh的形式)

  十进制常数,在后缀中加点. (例如:100. 128. 也可以是浮点数128.56,浮点数只能保留小数点后2位)

  变量,这个变量必须在使用前用Var进行定义

  32位寄存器 (EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP)。

  16位寄存器 (AX, BX, CX, DX, SI, DI, BP, SP)

  8位的寄存器(AL, AH, ... DL, DH)

  被中括号括起来的内存地址 (例如:[401000] 指向内存地址为401000里存放分数据,

  [ecx] 指向内存地址为寄存器ecx里存放分数据).

  一个标志位,带有感叹号前缀(!CF, !PF, !AF, !ZF, !SF, !DF, !OF)

  字符串,也可叫数据序列。其格式为: #6A0000# (数值在两个“#”号之间),两个“#”号之间必须包含至少有一个数值。

  对当前调试进程,执行在EXEC和ENDE之间的指令。

  有这个命令就是你可以直接跳入进程,对进程进行直接控制.

  它的原理就是取当前进程的信息进行保存,然后新分配一个代码内存区(可读/写/执行.大小1000)

  调用OD汇编器将你的汇编语句转成OPcode,将OPcode拷贝到代码区,然后将EIP指向你的代码开头.

  然后将控制权交给你.执行完后将EIP归还原位,然后将控制权交还ODbgScript.

  这里的好处就是让你以很高的效率来避免在较慢的脚本环境运行需要高效的操作.

  注意:由于进程控制权交给你了,那么,你的代码有效性将只有你自己来控制了.

  注意:执行后不保存现场.这都需要你来做工作.(要保存现场,你可以使用pushad,popad)

  有大括号的,会被大括号中的变量的值替代。

ollyice

  从地址addr开始填充长度为len的值value

  注:value的值最大8个字节,可以为寄存器值,标志位值,变量值,16进制值,10进制值,[]指针操作数.

  从指定地址开始在内存中查找指定的内容。

  如果查找成功,地址会保存到保留变量$RESULT中,否则$RESULT将等于 0。

  查找的串支持通配符“??”(见下面的例子)。

  ##中的为HEX,""中的为字符串,什么都不带的为内存数据

  !注:输入的16进制字符必须是成偶数

  从1.52版开始支持直接变量和数据查找.

  从指定地址开始查找指定一个指令,这个指令是以指定内容为开始的。

  如果查找成功,地址会保存到保留变量$RESULT中,否则$RESULT将等于 0。

  查找的串支持通配符“??”(见下面的例子)。

  注意:findop由于是opcode查找,不支持字符串查找.

  findop和find的区别是findop查找到的必须是opcode.

  1.52起支持直接变量和内存数据

  GAPI 地址

  获得指定代码处的API调用信息

  API信息保存到保留变量$RESULT中。

  如果符号名是一个API函数,则

  $RESULT保存API信息

  $RESULT_1保存链接库名(比如 kernal32)

  $RESULT_2保存符号名(比如 ExitProcess)。

  $RESULT_3保存调用地址XXXX(比如 call xxxxx)

  注意:这个和GN的区别是GN必须指向IAT地址

  而GAPI直接给出代码地址就可得出API

  还有如果你是在此处下了软件断点,请先清除断点再用此句,因为软件断点修改了代码为CC

  这里如果不清除此处的软件断点,将造成这句不能很好的识别.

  获得指定地址所在模块的相关信息。

  “信息”可以是

  MODULEBASE: 模块基地址(base address of module in the memory space of debugged process)

  MODULESIZE: 模块大小(total size occupied by module, not necessarily contiguous memory)

  CODEBASE: 代码段基地址

  CODESIZE: 代码段大小(size of executable code, as stays in COFF header. In some cases, OllyDbg may correct definitely invalid code size)

  DATABASE: 数据段基地址

  RESBASE: 资源段基地址

  RESSIZE: 资源段大小

  IDATATABLE: 输入表基地址(base address of import data table, as stays in COFF header)

  entry: 模块入口(ddress of module's entry point, as stays in COFF header)

  nsect: 节数目(Number of sections in the module)

  (如果您想在将来的版本中,获得更多的信息,请联系我)。

  信息会保存到保留变量$RESULT中 (如果没有找到信息,则$RESULT等于0).

  3.4 菜单

  ODBGScript的主菜单包含了下面几项:

  Run script...[运行脚本...]: 用户选择一个脚本,并运行这个脚本。

  Abort [中止]: 中止脚本运行

  Pause [暂停]: 暂停脚本运行

  Resume[恢复]: 恢复脚本运行

  脚本运行窗口:动态观察脚本运行

  脚本日志窗口:记录脚本运行情况

  在使用中,有一些语句比较难以理解和使用,这里将进行部分的解释.

常见问题

  Q:为什么我使用一些脚本,var ->x1这句要挂掉OD?

  A:变量名最好是由字母和数字组合成的容易识别的变量名

  +-*/?>等等符号最好不要附加在变量中,以免引起不可预测的错误

  由于为了兼容以前的系统,请不要将A,B,C,D,E,F作为变量(系统容易和16进制abcdef混淆).

  Q:我能仅仅取[401000]中的一个字节么??

  A:mov语句在这个版本中功能做了巨大的扩充,和以前的版本最大的区别是增加了第三个参数(size),也就是限定赋值的最大字节数.这样你可以从内存中任意存取数值.

  Q:EOB,EOE功能我常常混淆,以及使用上感觉很困惑,能解释么???

  A:eob,eoe功能是中断或者异常的转向功能,当脚本执行到中断或者异常后,可以指定脚本转向自己设定的标签处,它主要是为了进行流程的转向.比如判别版本号后,转向相应的标签处理脚本处.

  由于ODBGscript程序设计的原因,你必须先设置好eob,eoe的转向处再run.这个和我们常规的逻辑有点相反,我们常常喜欢设计成为run后设定eob,eoe.其实也好理解,你必须先声明你要转向的地方再让脚本去触发你设定的条件,而不是你触发了条件在去寻找你要求的标签处.

  Q:某些情况下,我需要直接下OD来执行自己所希望的代码,怎么实现呢??

  A:脚本不是万能的,常常需要自己写一些汇编代码来执行,那么,我们可以寻找一些程序空白处,利用mov addr,#xxxxxxxxxxxx#这样的语句来将自己的代码放入相应的地址,再记录当前的EIP,然后mov eip,addr,也就是将程序的流程转向自己的代码处,执行自己的代码完毕后,可以将EIP改回原程序的地址, 请记住保存现场,你下到了OD直接执行你的代码,那么你必须为你的代码负责.ODbgscript并不帮你保存现场.

  Q:find,findop,findmem好像没有什么区别,能告诉我它们真正的区别么???

  A:这三句都是在内存中寻找数据,但不同的是.

  find仅仅找到相应的匹配关系的地址

  findop要寻找的是OPCODE相匹配的地址,也就是找到的地址必须是OPCODE匹配处.它寻找方式和find完全不同,它先将一小节一小节的将数据转化为opcode,然后进行匹配查找.这句和find配合能很好鉴别花指令.

  findmem寻找的是在指定的节地址处相匹配的关系.比如.data节处

  Q:eval这句是什么意思?

  A:eval是计算含义变量的表达式,变量必须已经在脚本中声明。

  插到字符串中时,要放在大括号{ }中,结果保存在保留变量$RESULT中.

      这句和其它语句结合将产生很多的变化,用好它将让你的脚本十分灵活.

      这里相当于变化成了变量的变量.请好好掌握它并灵活运用它,它将给你的脚本带来无穷的变化.

  比如现在的壳常常运用了多态变形,而利用好这句,你将有了有利的武器.

  Q:GAPI和GN的区别是什么??

  A:GAPI是求出代码处的API信息

  而GN是给出IAT地址处的API信息.

  Q:opcde的用处

  A:我们知道,现在的壳常常使用动态解码,而这句就是对付动态解码的有力武器

  opcode反汇编指定地址处的代码,如果opcode和指定的代码比较,那么你就能牢牢的盯住动态解码的流程和算法.

  Q:我能调试我的脚本么??

  A:在odbgscript版本以前的ollyscript 0.92版本中,你只能凭直觉来写脚本,造成

  写脚本的效率比较低,而新的ODBGscript 版本中,你有了一个脚本窗口,能很好的监测到脚本的运行状态,并且你能单步执行你的脚本,快快使用强大的脚本调试功能吧,记得单步执行是在脚本窗口中按"s"键,空格就是放开让脚本跑.你能在这里为脚本设置断点,调试脚本,编辑变量还能手工执行脚本命令

  Q:脚本有什么好处,和脱壳机以及补丁相比有什么好处???

  A:脚本最大的好处就是你能根据脚本的思路来掌握软件的思路.脚本能让你的工作轻松很多,无论是你在调试程序还是脱壳或者做逆向工作.

  而脱壳机和补丁严格的限制对应程序的版本,而脚本来说做常常简单的添加或者修改就能很好的适应不同的版本.当然这个前提是你能掌握它的使用.

  某种意义上说,脚本是OD动作的重复播放,所以,掌握OD的强弱也就会影响你编写和使用

  ODBGscript的能力.

  Q:Ollyscript和ODBGscript有什么区别?

  A:Ollyscript是SHag利用BC编写的,它是ODBGscript的原生版本,但是它于04年就停止了

  开发,所以就诞生了ODBGscript.ODBGscript在Ollyscript的基础上进行了大规模的扩充无论在语句数量上和语句的深化功能上都有了大幅度的扩展.但你知道,ODBGscript还不那么稳定和你期望的强大,我期待你的BUG报告和指出希望的功能.

人气软件