zoukankan      html  css  js  c++  java
  • 破解时常用汇编命令

    基本上多数破解的思路是一样的,就是将本来判断为true的时候干的事情改为逻辑值为false就做,因此常常需要替换一些汇编命令:

    cmp a,b 比较a与b
    mov a,b 把b的值送给a
    ret 返回主程序
    nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面
    (解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)
    call 调用子程序
    je 或jz 若相等则跳(机器码74 或0F84)
    jne或jnz 若不相等则跳(机器码75或0F85)
    jmp 无条件跳(机器码EB)
    jb 若小于则跳
    ja 若大于则跳
    jg 若大于则跳
    jge 若大于等于则跳
    jl 若小于则跳
    jle 若小于等于则跳
    pop 出栈
    push 压栈
    call 机器码也是E8?

    三.常见修改(机器码)
    74=>75 74=>90 74=>EB
    75=>74 75=>90 75=>EB

    jnz->nop
    75->90(相应的机器码修改)

    jnz -> jmp
    75 -> EB(相应的机器码修改)

    jnz -> jz
    75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改)

    四.两种不同情况的不同修改方法
    1.修改为jmp
    je(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息

    xxxxxxxxxxxx 出错信息,例如:注册码不对,sorry,未注册版不能...,"Function Not Avaible in Demo" 或 "Command Not Avaible" 或 "Can't save in Shareware/Demo"等 (我们希望把它跳过,不让它出现)
    。。。
    。。。
    xxxxxxxxxxxx 正确路线所在

    2.修改为nop
    je(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转) nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处

    xxxxxxxxxxxx 正确信息,例如:注册成功,谢谢您的支持等(我们希望它不被跳过,让它出现,程序一定要顺利来到这里)
    。。。
    。。。
    xxxxxxxxxxxx 出错信息(我们希望不要跳到这里,不让它出现)它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 

    例如使用windbg时候
    0:000> dd 0c366b28 l4
    0c366b28  7e830c74 940f0108 c0b60fc0 01b805eb   
    执行ed 0c366b28 7e830c75
    修改为
    0:000> dd 0c366b28 l4
    0c366b28  7e830c75 940f0108 c0b60fc0 01b805eb 
  • 相关阅读:
    [转]ion-slide-box
    [转]Ionic 实现双击返回键退出功能
    [转]highcharts图表入门之:如何让highcharts图表自适应浏览器窗体的大小或者页面大小
    [转]ionic Accordion list three levels
    [转]ionic $state.go passed $stateParams
    [转]ionic tab view hide tab bar
    [转]Ionic + AngularJS angular-translate 国际化本地化解决方案
    [转]Ionic Datepicker
    [转]通过AngularJS directive对bootstrap日期控件的的简单包装
    [转]轻松学习Ionic (四) 修改应用图标及添加启动画面(更新官方命令行工具自动生成)
  • 原文地址:https://www.cnblogs.com/Randy0528/p/1958966.html
Copyright © 2011-2022 走看看