win32汇编学习随笔(1)

    最近罗云彬的win32汇编语言程序设计代码练习到了第十章,同时开始研究驱动开发和一些系统内部结构耽误了一些时间,所以用在汇编上的时间不多。争取1,2周能写点东西吧,同时开了一下,按照论坛那个说法,现在大概能算3.3版本的程序员了呢,也算可以了,呵呵

    讲一下我最近的一些小实验的结果吧,也许能对一些人有所帮助。当有一个exe文件,希望修改它的程序的话,比如破解等等,都需要反汇编或是观察内存中的16进制内容。我得方法可能目前还不专业,不过应该算是容易使用,

      如果用vc6建立一个空的工程(普通的application即可),名为Test1,那么把一个可执行文件改名Test1.exe,放入此工程的debug目录(如果没有修改过工程设置的话),运行F5调试,其实就可以反汇编这个程序,同时在Atl+6的Memory。针对win32汇编语言程序设计中的Test.exe,debug版的Test.exe(在Link命令加入/DEBUG选项),和一个加壳的Test。在Memory中输入0x00400000可以看到程序的开头,输入0x00401000

 从33 C0 0B C0 74 15 开始就是程序的开始,就是按照顺序的汇编码,具体转成实际的汇编是什么,可以查看汇编对应表。当然用w32dasm比较简单,这里其实也可以简单明白简单程序反汇编的原理。如果把74 15改为90 90,及nop nop,就可以改变74 15的跳转位置。

debug版本的

可以看到74 15的位置被推后了。前面加入了CC等东西,其中CC代表的是int 3(断点,不过不要随便在win32汇编写,如果不是调试模式,有这个似乎程序会崩溃的。。),可以看出是增加了一些断点和其他内容。不过只要用外部程序修改一下对应位就可以了,只是代码位置被移后,逻辑上没有什么变化

加壳的在Memory中也可以用类似方法找到对应内容,不过执行地址位和顺序确实比较奇怪,有些问题我弄得还不是很明白,以后弄明白的在详细说说

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值