zoukankan      html  css  js  c++  java
  • <转>我对菜鸟成长的看法

    俺发现这里有很多人不懂汇编,居然也在学破解。

    俺认为,不懂汇编的人永远只能是菜鸟!

    也许你认为不懂汇编也能够从寄存器或堆栈中找到注册码,可是用
    注册码 = f(用户名或机器码)  算法的软件肯定会越来越少,而用
    F(注册码,用户名或机器码) 算法会成为主流,应用程序本身将不
    再含注册机功能,真正的注册码也永远不会在寄存器或内存中出现,
    你上哪找去?

    也许你认为找不到注册码还可以爆破,但是你找到爆破点的依据不
    是靠理解了程序的算法,而是根据程序在完成注册子过程中提供的
    各种操作提示信息,但是程序可以在完成注册子过程之外任意可能
    的地方重新验证注册码而且不做任何提示就取消注册标志,你将连
    这些重新验证的地方都找不到?怎么爆破?事实上程序可以有无数
    种方法让得不到真正注册码的爆破者失去注册资格,这样爆破最终
    还是死路一条!

    所以,破解学习的正道还是要研究算法,要能够读懂汇编代码,最
    终要能够自主制作注册机。

    俺学破解也只有一个星期的时间,俺也不懂汇编,但是俺懂C++,
    了解编程的原理,所以能够很快大致地理解汇编,仅仅知道汇编指
    令的含义是不够的,这里将我对汇编的一些理解罗列如下:

    1、关于函数调用,在分析汇编代码时总是要遇到无数的Call,对
      于这些Call,尽量要根据Call之前传递的参数和Call的返回值
      来判断Call的功能,特别当调用的是系统函数时,不要见Call
      就跟,在Call之前所做的所有PUSH动作以及对寄存器的操作都
      可能是在给函数传递参数,而函数的返回值十有八九在 EAX里
      面,因为程序绝大多数都使用高级语言开发,而几乎所有的高
      级语言编译器都默认将函数的返回值存放到EAX。

    2、关于堆栈,善于使用 ESP会收到事半功倍的效果,在一个算法
      中,任何可能使用的常量、变量和函数地址都必然在当前 ESP
      中留下蛛丝马迹,由于变量是以地址的形势进行存储的,所以
      建议经常使用dd ESP指令来观察堆栈内容,注意在汇编代码中
      凡是[ESP+XXXXXXXX]都代表着堆栈中的第XXXXXXXX个房间住的
      那个房客。

    3、关于变量的赋值,能否了解到对变量的赋值过程在算法研究中
      是非常重要的。由于变量是用地址访问的,,因此对形如
      MOV [AAA],BBB
      的代码要高度关注,它通常是修改变量(地址为AAA,或AAA为
      寄存器时地址为AAA的值)的值为BBB(BBB为寄存器时取BBB的
      值)。

    4、另外,汇编中会有很多特定的结构与高级语言中的语句相对应,
      如最简单的

      001 CMP AAA,BBB
      002 JNZ 00N
      003 ...
      ...
      00N ...
      相当于
      if(AAA==BBB){003...00M}
     
      001 MOV ESI 00000000
      002 MOV EBX 0000000A
      003 ...
      00K INC ESICMP ESI EBX
      00L CMP ESI EBX
      00M JL  003
      00N ...  
      相当于
      for(int i=0;i<10;i++){003...00J}

      001 MOV EDI 00000004
      002 AND EAX 00000003
      003 JMP [EAX+EDI]
      004 ...
      005 ...
      006 ...
      007 ...
      相当于
      switch(EAX%4)
      {
         case 0:004;
         case 1:005;
         case 2:006;
         case 3:007;
      }  
     
       等等,这些结构都必须熟悉。

       说到底,俺自己也是菜鸟一个,遇到了麻烦,在这里等高手解答,闲来无
    事,就灌一篇激励各位菜鸟朋友上进吧!

    本人新博客网址为:http://www.hizds.com
    本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段。c++/lua/windows逆向交流群:69148232
  • 相关阅读:
    树的直径
    POJ3264 Balanced Lineup
    [mock]10月11日
    POJ1062 昂贵的聘礼
    POJ3295 Tautology
    [topcoder]TopographicalImage
    POJ1753 Flip Game
    [leetcode]Copy List with Random Pointer
    [leetcode]Candy
    [leetcode]Gas Station
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2280534.html
Copyright © 2011-2022 走看看