开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2856|回复: 8
收起左侧

[其它] MASM的反反汇编技术(献给爱浪费破J者生命的同学)

[复制链接]
结帖率:50% (2/4)
发表于 2012-7-2 18:16:43 | 显示全部楼层 |阅读模式   湖南省长沙市
由于汇编语言是与机器语言机器码一一对应的,所以程序的代码非常简洁,编译、链接程序不会在其中加入任何其它代码,所以,用Win32DASM等把汇编工具反汇编汇编语言写的程序,其列出的汇编代码几乎与编写的顺序、过程、代码一模一样,这也是汇编语言简洁的证据。
  但是这种过于简洁的代码却给了破J者提供了方便,破J者只需要有一定的Windows SDK编程与汇编的经验,破J就非常简单,根本不需要用SoftICE这些动态工具就可以破J。于是,相应的防止跟踪的技术就出来了,比如花指令、不按规则调用API等等,今天就花指令和大家研究研究。
  花指令,其实就是在程序中加入一些字节来干扰静态工具反汇编,毕竟汇编工具没有人的思维,所以这招非常好骗。
  打开EditPlus,新建一个ASM - Sample文件,输入以下代码:
.386
.Model Flat, StdCall
  Option Casemap :None

  Include windows.inc
  Include user32.inc
  Include kernel32.inc

  IncludeLib user32.lib
  IncludeLib kernel32.lib
.data
  Welcome db "欢迎来到汇编的世界",0
.CODE
  START:
  invoke MessageBox,0,offset Welcome,0,0
  invoke ExitProcess,0
  END START
  保存,Ctrl + 1编译。
  用Win32DASM打开编译后的文件,可以在其菜单命令[函数]->[输入]中看到我们使用了的MessageBox与ExitProcess名字,在菜单命令[参考]->[字符串]中看到我们定义的字符串Welcome的值,假如您的程序这段代码要做的是在用户输入错误的注册码后报错,那么,破J者只需要找到对话框显示的字符串使用的地址,然后向上查找跳到此地址的跳转指令,更改指令就能轻易破J,我们要做的,就是把字符串隐藏起来,不让破J者轻易找到它的地址,如下:
  ;先关闭Win32DASM(以下同).
  ... ...
  lea eax,Welcome
  invoke MessageBox,0,eax,0,0
  ... ...
  也就是说,我们并没有使用花指令,而是在使用字符串时先把字符串的地址传给eax,然后再把eax做为参数传给MessageBox,这样做,Win23DASM这些反汇编工具就无法识别了,好,用Win32DASM重新打开编译的文件,在[参考]菜单中,[字符串]这一项灰色显示,提示这个程序没有字符串,骗过它了!^_^
  还有就是使用花指令,花指令不但可以使反汇编工具无法识别出字符串,更会让它们把汇编出错误的代码,花指令一般都是使用一些无用的字节来进行干扰,但是干扰反汇编的字节仍是可以使用的,像这样子:
  ... ...
  jz @F
  jnz @F
   www db "欢迎来到汇编世界",0
  @@:
  lea eax,www
  lea ebx,Welcome
  invoke MessageBox,0,eax,ebx,0
  invoke ExitProcess,0
  ... ...
  编译后再用Win32DASM打开EXE,发现不但[字符串]这一项灰色显示,反汇编出来的代码变得面目全非,现在的程序只有很少的代码,如果代码一多,破J者不晕才怪,不过这样只会把一些初级破J者难倒,有经验的破J者根据jz与jnz的跳转是否指向不存在的地址而知道使用了花指令,还可以根据MessageBox的使用地址来进行分析,我们现在要做的就是使用手工调用API加花指令来骗反汇编工具,如下:
  ... ...
  lea eax,Welcome
  push 0
  push 0
  push eax
  push 0
  jz @F
  jnz @F
   www db "欢迎来到汇编世界",0
  @@:
  call [MessageBox]
  invoke ExitProcess,0
  ... ...
  (上述代码WinDASM32黄金版能正确识别)
  也就是说,在压入参数后,不要马上使用call来调用API,而是在调用前使用花指令,结果会怎样?编译后进行反汇编,看看吧,不但[字符串]这一项灰色显示,[函数]->[输入]一项也是灰色,哈,骗过了!再看看把汇编出来的代码,天啦,乱七八糟的,如果这些代码是在一个几百K的程序中,我看那个破J者如何应付,哈,他不晕才怪!
  再来点狠的:
;=================
;完整API花指令示例:
;=================
.386
.Model Flat, StdCall
Option Casemap :None   ; 不区分大小写(对API与API常数无效)
;_____________________________________________________________
Include windows.inc
Include user32.inc
Include kernel32.inc

IncludeLib user32.lib
IncludeLib kernel32.lib
.CODE
START:
  push 0
  push 0
  push offset Welcome
  push 0
  jz @F
  jnz @F
  Welcome db "Welcome",0   
@@:
  mov eax,[MessageBox+4]
  sub eax,4
  jnz @F
    Welcome1 db "Welcome",0   
@@:
  call eax
  invoke ExitProcess,0
  END START
  再看看反汇编的代码,更加!@$$%#!@#$。
  顺便说一句,上面的"完整API花指令示例"对付SoftICE一样有效,虽然SoftICE能用MessageBoxA中断上面的程序,但是,它反汇编出来的代码一样是惨不忍睹,

  不过,程序中也不要过份使用花指令啦,一般只有在关键的代码才使用这些,如果您整个程序都使用花指令,不但会让破J者恼火,也会让你自己恼火的--这么多$%@$!@##@#的代码,您怎么维护啊。哈...
希望对你有所收获·!
结帖率:33% (2/6)
发表于 2012-7-2 18:21:00 | 显示全部楼层   广东省揭阳市
看来是一个新星  是原创的吧
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)
 楼主| 发表于 2012-7-2 18:22:09 | 显示全部楼层   湖南省长沙市
{:3_244:}{:3_244:}你免杀怎么样?
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)
 楼主| 发表于 2012-7-2 18:22:51 | 显示全部楼层   湖南省长沙市
易水寒2 发表于 2012-7-2 18:21
看来是一个新星  是原创的吧

你会免杀否?
回复 支持 反对

使用道具 举报

结帖率:33% (2/6)
发表于 2012-7-2 18:23:50 | 显示全部楼层   广东省揭阳市
我只是一个新手  不过免杀教程很多的
回复 支持 反对

使用道具 举报

结帖率:33% (2/6)
发表于 2012-7-2 18:24:21 | 显示全部楼层   广东省揭阳市
在论坛搜索一下把
回复 支持 反对

使用道具 举报

结帖率:50% (2/4)
 楼主| 发表于 2012-7-2 18:26:09 | 显示全部楼层   湖南省长沙市
易水寒2 发表于 2012-7-2 18:24
在论坛搜索一下把

哦哦  我想找个精通免杀的 老师。。最好脱壳也强的
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 13 天

发表于 2015-2-11 14:02:06 | 显示全部楼层   广东省深圳市
值得学习哦。。。
回复 支持 反对

使用道具 举报

发表于 2015-4-23 15:17:32 | 显示全部楼层   四川省成都市
谢谢分享!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表