从本章开始,我们来一步一步学习Crack软件(80%读者昏死过去,且不省人世...另有20%在寻找附近可以用来打人的东西) 不可不说一下学习破解的三个阶段: 初级,修改程序,用ultraedit等工具修改exe文件,称暴力破解,简称爆破 中级,追出软件的注册码 高级,写出注册机 先说这爆破。所谓爆破,就是指通过修改可执行文件的源文件,来达到相应的目的。你不明白?呵呵,举个例子好了,比如说某共享软件,它比较用户输入的注册码,如果用户输入的,跟它通过用户名(或其它)算出来的注册码相等的话(也就是说用户输入的注册码正确了),那么它就会跳到注册成功的地方去,否则就跳到出错的地方去。 明白过来了吧,我们只要找到这个跳转指令,把它修改为我们需要的“造型”,这样,我们是不是就可以为所欲为了?(某软件双手放在胸口,你要干嘛?) 常见的修改 *** 有两种,我给你举例说明: no.1 在某软件中,这样来进行注册: 00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确) 0045123D JZ 004572E6 (!!!<--此为关键跳转,如果用户输入的注册码正确,就跳向成功处,即004572E6处) 0045XXXX YYYYYYYYYY XXXXXXXX YYYYYYYYYY XXXXXXXX YYYYYYYYYY XXXXXXXX 执行到此处,就提示用户注册失败 ...提示用户注册码不正确等相关信息 ... 004572E6 ... <--(注册成功处!!!) ...提示用户注册成功等相关信息 呵呵,看明白了吗?没有的话,我来给你讲一下。在软件执行到00451239处的时候,CALL置0045E02处来进行注册码判断。接着回来后就来一个跳转语句,即如果用户输入的注册码正确就跳到004572E6处,跳到此处,就算是注册成功了。如果用户输入的注册码不正确的话,那么就不会在0045123D处进行跳转,而一直执行下去。在下面等它的,是注册失败部分。 想明白了吗?嘿嘿...没错,我们只要把那个关键跳转JZ给改为JNZ(如果用户输入的注册码错误,就注册成功,输入正确则注册失败)。当然你也可以将JNZ修改为Jmp,这样的话,你输入的注册码无论正确与否。都可以注册成功。 no.2 我们再来讲一下另外的一种情况: 00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确) 0045123D JNZ 004572E6 (!!!<--此为关键跳转,如果用户输入的注册码不正确,就跳向失败处,即004572E6处) 0045XXXX YYYYYYYYYY XXXXXXXX YYYYYYYYYY XXXXXXXX YYYYYYYYYY XXXXXXXX 执行到此处,就提示用户注册成功 ...提示用户注册成功等相关信息 ... 004572E6 ... <--(注册失败处!!!) ...提示用户注册码不正确等相关信息 这次我相信,并且深信不疑。你一定明白了。我还是不明白...倒... 你一定看出跟之一种情况不同的地方了吧。没错!它与之一种不同的,就是之一种情况是如果注册码正确,就跳到注册成功处,如果没有跳走,就会执行到失败处。而这一种情况则是如果注册码不正确,就跳到注册失败处,否则将执行到注册成功处。 这种情况的修改,除了把JNZ改为JZ外,还可以将其改为Nop,Nop这个指令没有任何意义,将该条指令修改为Nop后,便可随意输入注册码来进行注册了。 原理以经给你讲了,下面我们再来讲一下具体的修改办法吧。(我假设你以经明白了我所说的工具的使用 *** ) 先说一下虚拟地址和偏移量转换的问题,在SoftICE和W32Da *** 下显示的地址值是所谓的内存地址(memory offset),或称之为虚拟地址(Virual Address,VA)。而十六进制工具里,如:Hiew、Hex Workshop等显示的地址就是文件地址,称之为偏移量(File offset) 或物理地址(RAW offset)。 所以当我们要通过那些十六进制工具来对可执行文件中的相应指令进行修改的话,先要找到它的File offset。我们没有必要去使用那些专门的转换工具,在W32Da *** 中就有这个功能,比如说你W32Da *** 中来到0045123D处,在W32Da *** 界面下方的状态栏中就会出现该条指令的虚拟地址和偏移地址,即@:0045123D @offset 0005063Dh 后面的这个0005063Dh就是相应的偏移地址。我们得到该地址后,便可用UltraEdit等十六进制工具来对可执行文件进行修改了。比如使用UltraEdit,你先用UltraEdit打开该可执行文件,然后按Ctrl+G,接着输入你得到的偏移地址,就可以来到其相应的机器码处。 再给你讲一下机器码,所谓的机器码。就是你看到的那些个十六进制数据了。还记的它们与汇编指令是一一对应的吗? 以下这几个是爆破时要用到的,其它的如果感兴趣,可自行查看相关资料: JZ=74;JNZ=75;JMP=EB;Nop=90 爆破的时候,只要对以上机器码进行相应的修改就行了,比如之一种情况的时候,可以将74修改为EB,即将JZ修改为JMP。而第二种情况,责需将75修改为90,即将JNZ修改为Nop。 由于本章只讲原理,具体一点的。如怎样找到关键跳转等,我们在下一章中再讲。(一个砖头飞了上来!嘿嘿,这次被俺接到了)上边讲了爆破的原理,你需要明白的是。爆破只是你学习Crack的开始,是很简单的手段。刚入门的时候可以玩玩儿,但希望你不要就此不前! (嘿嘿,再说了。人家的软件中不是都说了嘛,不准对其进行逆向修改。你动了人家的身子,怎么能不买帐呢? ) 偶就不喜欢爆破,做不出注册机也要找出注册码。否则我就不会去注册这个软件,既然想不掏钱,就要靠你自己的本事。(等以后我有钱了,会考虑去注册那些优秀的共享软件的 )。所以,从某种意义上来说,我是一个正人君子. 其实要找到注册码并不是一件多么难的事,我是指你所针对的软件不太那个的时候 , 不过你无需惧怕。 刚才我们说爆破的时候不提到过关键CALL吗?一般情况下,这个关键CALL就是对两个注册码(一个是软件自身通过你的注册名或机器什么的计算出来的正确的注册码,令一个就是你输入的错误的注册码)进行比较。我前边提到过,CALL之前一般会把所用到的数据先放到一个地方,CALL过去的时候再从这些地方把先前放入的数据取出来,进行相应的处理。这个关键CALL也是这样,在CALL之前,一般会把那两个注册码放到堆栈或某个寄存器中。嘿嘿,我们只要在调试器中,单步执行到该CALL,在未进去之前通过CALL之前的指令判断其将正确的和不正确的注册码放到哪里了。然后再用相应指令进行查看就成了,我说过不难的。 下面列出两个最常见的情况(可参考相关教程): no.1 mov eax [ ] 这里可以是地址,也可以是其它寄存器 mov edx [ ] 同上,该条指令也可以是pop edx call 00?????? 关键call test eax eax jz(jnz)或jne(je) 关键跳转 看明白了吧,在关键CALL之前,软件会把两个注册码分别放入eax和edx中,你只要在CALL处下d eax或d edx就能看到正确的注册码了。 no.2 mov eax [ ] 这里可以是地址,也可以是其它寄存器 mov edx [ ] 同上,该条指令也可以是pop edx call 00?????? 关键call jne(je)
同组的小姐姐们被爬数据搞到眼泪掉下来,找微博也是个很有工作量的活儿,接下来我们来看看怎么查看具体某一条微博的ID: 浏览器:火狐,打开微博网页版,找到你想爬的微博。比如: ...
一、基本工资包括哪些? 基本工资,即劳动者所得工资额的基本组成部分。它由用人单位按照规定的工资标准支付,较之工资额的其他组成部分具有相对稳定性。具体来说,在企业中,基本工资是根据员工所在职位、能力、...
近日有一些小伙伴们资询我有关matlab如何设计方案好几个纵轴图型呢?下边就为大伙儿产生了matlab设计方案好几个纵轴图型的具体做法,有必须的小伙伴们能够来掌握掌握哦。 近日有一些小伙伴...
平舌音和翘舌音有什么(区别平舌音和翘舌音方法)让小孩从中小学好拼音,下列是前鼻音、后鼻音、平舌音、翘舌音的差别,也许大家都读禁止,尤其是北方人,帮小孩搞清楚了,复印出去贴在小孩写字台前:前鼻韵:a...
bbs.maiyadi.comhttp://wg.acfun.tvand%0a(select%0acount(*)%0afrom%0amsysobjects)>0要求在最新版 Chrome 触发...
装置“Rust nightly for x86_64-pc-windows-msvc”:4 运用ms17010永久之蓝获取用户帐户暗码。 可是,WiFi探针这个设备仅仅取得电话号码的一个十分绕远的线路...