程序破解基本知识

程序破解基本知识

程式如何保护:   
  最通常是用你的name当作key,   经过复杂演算法,   算出注册码。但也有一些并不是用你的name当作key算注册码的,而是name与注册码无关,注册码是固定,name是随便输入就可以了。对于前者,较容易可算出注册码,而后者要算注册码就不是一件容易的事了。关于两者的具体处理方法,会在下面文章详细介绍。   
  注册处理:   
    
  1.   当输入name,   company,   password   後,   立即比对,   正确的话立即做注册处理,   以後再也不判断,   不正确要求再输入.   不输入   name   的话,   保持   shareware   版.   
  2.   同1,   但以後一执行程式还是会判断.   
  3.   输入时不比对,   只写入资料於   *.ini,   程式执行时再比对.   
  对于第一种情况,是最容易破解的了,因为只要找到软件注册时的比较失败窗口的call,在向上找一找,就可以找到一个可以跳过这个call的jz或jnz,只要把这个jz改为jmp,就可以随便注册了,因为它们的只进行一次性的比较,所以只要在注册时强行使它们注册成功,则以后就不用管了。   
  它们的一般形式为:   
  xxxx:xxxxxxxx   call   比较注册码的call   
  xxxx:xxxxxxxx   test   eax   ,   eax   
  xxxx:xxxxxxxx   jnz   (或jz)   xxxxxxxx   只要把这个jnz   改为jmp   就可以了   
  :   
  :   
  xxxx:xxxxxxxx   call   比较失败的窗口的call   
  对于第二,第三种情况,就不能这么简单地破解了,而要追进比较注册码的call里去,如果可以算出注册码的,就万事大吉了,如果不能,就比较地麻烦了,只有按下面介绍的方法进行crack了,要知软件始终不是你写的,所以不可能所有的软件都可以crack的,只能各凭功力了。对于不能简单地算出注册码的软件,我们的唯一的方法是先在比较注册码的call里,设一个断点,然后再重新运行软件,如果软件被中断的,那么这个软件就有八成可以破解了,只要在比较注册码的call里找到那些jz或jnz会导致eax的值变化,把这些指令改为nop或jmp(视具体情况而定),则一般都可以迎韧而解了。   
  对于第一种情况的破解实例:     
  Hex32bit   
  这是一个多功能的编辑软件,有很强大的功能,是一个很好用的32位工具软件。   
  1.输入Registeration   code:48484848(随意)   
  2.按CTRL-D   进入WIN   S-ICE   
  3.下S   30:0   LFFFFFFF   ‘48484848‘   得一地址30:XXXXXXXX   
  4.下BPM   30:XXXXXXXX   R   
  5.按F5   退出   
  6.用鼠标击Register   
  7.程序被WIN   S-ICE   中断   
  8.按F12回到Hworks32的天空   
  9.直按F10至以下程式:   
  0137:0041635F   CALL   00426A70   比较密码的CALL   
  0137:00416364   ADD   ESP   ,   04   
  0137:00416367   MOV   [EBP-10]   ,   EAX   
  0137:0041636A   CMP   DWORD   PTR   [   EBP-10   ]   ,   00   
  0137:0041636E   JZ   004163ED   错误时跳,只要改为nop…………就OK了   
  :   
  :   
  0137:004163E8   JMP   00416440   
  :   
  :   
  0137:0041640D   CALL   004354EE   出现注册失败窗口的CALL   
  所以下code   on   抄下机器代码,打开Hworks32.exe   
  找0f8479000000   
  改909090909090   
  OK!!!完工。   
    
  对于第二种情况的破解实例:   
  FLMASK3.00   
  1.   用WINSOFT-ICE载入FLMASK32.EXE   
  2.   输入Your   Name   :Ru   Feng(随意)   
  Registration   Key   :   48484848(随意)   
  3.   按CTRL-D进入WINSOFT-ICE   ,下S   30:0   LFFFFFFFF   ‘48484848‘得一地址30:XXXX   
  4.   下BPM   30:XXXX   R   
  5.   按F5退出     
  6.   确定Registration   
  7.   程序被WINSOFT-ICE中断   
  8.   按F12跳到FLMASK32的天空   
  9.   按F10直到以下程式:   
  0137:00452D1F   CALL   00443118   比较注册码CALL   
  0137:00452D24   TEST   AL   ,   AL   
  0137:00452D24   JZ   00452E89   不正确时就跳   
  :   
  :   
  0137:00452E89   MOV   DX   ,   0030   
  0137:00452E8D   MOV   EAX   ,   00001CFC   
  0137:00452E92   CALL   00443A54   出现错误窗口   
  10.   所以我们追进0137:00452D1F   CALL   00443118中去   
  一直走下支会见到以下程式:   
  0137:00443145   CALL   00403BCC   
  0137:0044314A   CMP   EAX   ,   08   比较注册码是否8个数字   
  0137:0044314D   JNZ   00443209   不等则跳,跳就失败   
  :   
  :   
  0137:004431BF   CALL   004076A4   比较注册码是否正确   
  0137:004431BF   CMP   ESI   ,   EAX   
  0137:004431C6   JNZ   00443209   不正确则跳   
  所以由汇编知识可知,只要把CMP   ESI,EAX改为MOV   EAX,ESI   
  把JNZ   00443209   改为NOP   NOP   
  把JNZ   00443209   改为NOP   NOP   
  则随意输入数字都可以注册了。   
  赶快下CODE   ON指令抄下程序代码:   
  码0F85B6000000   
  改909090909090   
  码3BF07541   
  改8BC69090   
  用ULTRAEDIT32改FLMASK32.EXE就行了。   
    
  [转]破解预备知识   
    
  一.机械码,又称机器码.   
  ultraedit打开,编辑exe文件时你会看到   
  许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码   
  就是机器码.   
  修改程序时必须通过修改机器码来修改exe文件.   
    
  二.需要熟练掌握的全部汇编知识(只有这么多)   
  不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了   
  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   压栈   
    
  三.常见修改(机器码)   
  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   出错信息(我们希望不要跳到这里,不让它出现)   
  。。。   
  。。。   
  五.爆破无敌口诀   背会此口诀,天下无敌,以后慢慢琢磨,仔细体会,收益多多。如此好的口诀,不要错过   
  一条(跳)就死,九筒(90)就胡       (对应上面的2.修改为nop)   
  一条(跳)就胡,一饼(EB)伺候       (对应上面的1.修改为jmp)   
  妻死(74)便妻无(75)     
  爸死(84)便爸无(85)

原文地址:https://www.cnblogs.com/lsgxeva/p/8947819.html

时间: 2024-10-04 16:32:52

程序破解基本知识的相关文章

linux实践之程序破解

linux实践之程序破解 这次的实践是文件破解,让我们从login可执行文件开始吧! 首先我们执行一下这个可执行程序 ①我们希望在不知道密码的情况下,能够登陆进去.且无论密码是什么,都是提示“on your command,my master!”. 首先对该程序执行反汇编. 我们首先要找到main函数的入口处. 我们可以看到cmp语句后,有jmp语句,如果不等于就跳转到“0x8048466”处,这是正常程序执行的过程,我们在这里希望不等于的时候,也不要跳转,所以可以把“75 0e”修改为“75

net程序破解神器

本帖最后由 Pnmker 于 2012-12-2 05:19 编辑 原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这 四大神器我似乎觉得几乎所有的NET程序破解都不在话下了.而我竟然在发现这神器组合后推迟了一周才分享与大家! 在开始分享之前,还是要说明一点,说是神器到目前为止也仅仅是对我自己而言,至于这四大神器会不会成为对各位而言的神器就不得而言了,因此当有哪位亲拿到这四大神器后仍然感到破解NET程序

微信开通程序 破解版微信检测助手

如今新入微商行业的大军很多,同样的一个产品做得人越来越多!那么问题来了,客源哪里来,你有好东西,卖给谁?你天天发广告,谁看?很多人只知道在自己朋友圈简单发布一些产品广告,如果光靠你目前那点质量低下的朋友圈.你就是刷爆了也没有成交量的,只会让你的朋友慢慢的把你拉黑,现在大部分人每天都在辛苦的上传产品讯息,首先要知道,朋友圈内的人绝大部分都是自己朋友.亲戚,所以精准客户相对来说寥寥无几. 微信开通程序 破解版微信检测助手 今天小编就交给大家一些比较实用的方法及教你使用微商加好友的便捷工具. 先说说绝

程序破解

程序破解 源代码:hello.c #include<stdio.h> #include<string.h> int main() { char name[10]; char a[10]="wjj"; char passwod[10]; char b[10]="20135302"; scanf("%s",name); if(strcmp(name,a)!=0) { printf("user error\n"

单片机入门指南系列(十) 单片机程序下载相关知识

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mcu-primer-10 注:本篇在写<单片机入门指南系列>之前就已经写过,现在发现这篇比较合理的位置,应该是放在<单片机入门指南系列(六) 单片机最小系统--麻雀虽小,五脏俱全>之后的,但是由于之前考虑不周,所以只好放在这里了,也就不重新修改文章的位置了. 作为基础知识补充,本篇详细介绍了串口.51单片机的ISP下载等知识,虽然这些知识并不一定要很了解也能学习单片机,但是有一些概念有时对解决问

Linux及安全——程序破解

Linux及安全——程序破解 由于我的Ubuntu的vi有故障,所以用kaili做. 运行原程序 1.反汇编代码,查看 objdump -d login 2.修改代码 vi login 转换为16进制 :%!xxd 查找要改的字节 (1)改成无论入什么,都输出on your command, my master! /75 0e 或者 /750e 运行,更改成功 (2)改为无论输入什么,程序直接结束 750e --> 751a (3)更改登录密码 fe07 --> 1804

VB程序破解之API断点[bp __vbaVarTstEq]

软件名称:风云足彩1.7软件大小:2.1M下载地址:http://free.ys168.com/?zhinengxuanhao软件保护:注册码编写软件:Microsoft Visual Basic 5.0 / 6.0 [Debug]破解工具:PEiD,OD破解作者:WildCatIII[D.4s] 引用: 软件介绍:足彩智能选号全能版足彩智能选号全能版 提供了足彩独特选号的方法.不论是足彩高手还是初玩者,足彩智能选号全能版都为他们提供了整套工具,以方便稳中一等奖. 但是,工具不是一个万能.能不能

4.1程序破解

4.1程序破解 20135206 于佳心 ? 基础指令: NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码:90) JNE:条件转移指令,如果不相等则跳转.(机器码:75) JE:条件转移指令,如果相等则跳转.(机器码:74) JMP:无条件转移指令.段内直接短转Jmp short(机器码:EB)段内直接近转移Jmp near(机器码:E9)段内间接转移Jmp word(机器码:FF)段间直接(远)转

linux实践程序破解

程序破解 一.建立1.c文档 二.编译并查看 命令为:gcc -o 1 1.c 反汇编:objdump -d 1 三.转16进制 命令::%!xxd main函数的汇编代码中可以看出程序在调用“scanf”函数请求输入之后,对 [esp+0x1c] 和 [esp+0x18] 两个内存单元的内容进行了比较,其作用应该是对比用户输入和预设口令.即预设口令被存放与局部变量 [esp+0x1c]中. 四.将750c改为7500 五.将16进制转回 六.学习总结 NOP:NOP指令即“空指令”.执行到NO