绝迹hacker吧 关注:39贴子:504

【资源】软件逆向工程起步入门图文教程

只看楼主收藏回复

1L 防偷窥


来自Android客户端1楼2014-07-17 14:25回复
    楼先垫着,教程过段时间发


    来自Android客户端2楼2014-07-17 14:25
    回复
      还能这样玩,


      来自Android客户端3楼2014-07-17 16:56
      收起回复
        用到的工具:
        Only ICE(OD带插件) 下载地址:http://u.163.com/s1PIXl9k 提取码: aAFBQ9pX
        Crack ME 下载地址: http://pan.baidu.com/s/1i321nVn 密码: 5zvq


        5楼2014-07-18 13:06
        回复
          这是我们逆向工程教程系列的第一节,在开始操作前,还是要废话一下。什么是逆向工程呢?学过编程的朋友都知道,计算机通过编程环境(编译器)将人类能够理解的语言(编程语言),转换成了计算能够解读的语言(汇编)。一旦程序编译完成,那么你就只能看着机器码了,你要能看懂,也不用观看本教程了。
          逆向工程,就是把已经编译的程序,通过汇编语言的形式展现给编程者,可以更好地调试以及修改程序代码。当然,逆向工程也可以干一些事情(你懂的),比如破解一个收费应用程序,或者获取程序内的一些信息(例如QQ密码?)等。
          听着很玄乎,其实也很玄乎。本节课用到的教学软件是Crack Me 软件包中的第一关进行演示,先打开Crack Me 观察一下界面
          图片来自:nyf9996的百度相册

          要求输入注册码,很明显注册码如果输入正确点击Crack!便可以弹出注册成功的提示。先随便输个试试看看有什么提示(图2)
          图片来自:nyf9996的百度相册


          通过百度相册上传6楼2014-07-18 13:21
          回复
              既然有了提示,那么最明显的破解思路便有了,要知道程序能够用“破解失败”的提示告诉我们注册码错误,那么程序能必定会存放了“破解失败”的字符串,所以先试试字符串查找法。
              打开OD神器,挂载第一关(直接拖进去)
            图片来自:nyf9996的百度相册

              新手看到这么多代码肯定是晕的,不要紧慢慢来,因为我给大家的版本是汉化并且带插件的,所以我们直接打开字符串查找插件——
            图片来自:nyf9996的百度相册

              这里提一下ASCII和UNICODE,其实本质上都是计算机储存字符串的形式,一般C++,C语言编写的程序字符串存放在ASCII内,而VB多存放在UNICODE中。
              


            通过百度相册上传7楼2014-07-18 13:30
            回复
                打开字符串查找,蹦出来一个新窗口
              图片来自:nyf9996的百度相册

                这个就是字符串查找插件了,先放大,接下来要找我们”破解失败“的字符串,Ctrl+F组合键呼出搜索,键入 ”破解失败“
              图片来自:nyf9996的百度相册

                回车,成功找到我们要的字符串
              图片来自:nyf9996的百度相册


              通过百度相册上传8楼2014-07-18 13:34
              回复
                  可以看到,在破解失败的上面有破解成功的字符串,说明如果注册码填写正确将弹出破解成功的提示。(破解成功的上面有一串数字,其实就是我们的注册码,但是这只是巧合,下面将介绍大众方法)
                  双击破解失败,来看看这段汇编代码
                图片来自:nyf9996的百度相册

                  这一段很明显就是判断注册码是否正确的跳转(这个就算不懂汇编也看得出来),看401115行
                图片来自:nyf9996的百度相册

                这一句je很明显跳到了破解失败的前面,je的意思为条件满足则跳转(只是为了方便理解的解释,其实不是这样),这里的条件满足自然就是注册码错误了,那么我们只要让他不跳转,即使注册码输入错误,也可以弹出正确的提示?双击这一句,将je改为nop(nop为无意义指令,可以理解为空的代码)
                图片来自:nyf9996的百度相册


                通过百度相册上传9楼2014-07-18 13:43
                回复
                    改完后回车,原本的je已经变成了现在的nop
                  图片来自:nyf9996的百度相册

                    程序改完了自然要保存了,OD保存的方法一定要牢记
                  图片来自:nyf9996的百度相册

                    随便找个地方右键,复制到可执行文件,所有修改,在弹出来的窗口点全部复制。(图就不配了)
                    接下来弹出了静态汇编的窗口
                  图片来自:nyf9996的百度相册


                  通过百度相册上传10楼2014-07-18 13:48
                  回复
                      静态汇编窗口内随便找个地方右键,保存文件,个人建议保存成另一份文件,要是破解失败可以删掉重头再来。
                    图片来自:nyf9996的百度相册

                      打开改好的文件,点Crack,是不是提示你破解成功了呢?
                    图片来自:nyf9996的百度相册


                    通过百度相册上传11楼2014-07-18 13:51
                    回复


                      来自Android客户端12楼2014-07-18 17:27
                      回复


                        来自Android客户端13楼2014-07-20 00:40
                        回复
                          我去


                          IP属地:陕西来自Android客户端14楼2014-07-20 08:45
                          收起回复
                            第二节:初识断点
                              上节课我们学会了通过对特殊字符串的查找来破解程序,但并不是所有程序都能让我们找到字符串,有些程序可能会对字符串进行加密,今天我就带大家解决这样的程序。
                            用到的东西:
                            1、CrackMe 第三关
                            其余同上节


                            17楼2014-07-26 21:24
                            回复
                                老样子先运行一遍试试,随便输个注册码弹出了错误的提示
                              图片来自:nyf9996的百度相册

                                那么很多朋友要问了,那不是和上节课一样了吗?其实不是,那我们可以先试试看使用上节课的方法进行字符串查找:
                              图片来自:nyf9996的百度相册

                                很明显“破解失败”的字符串并没有被找到。那么我们怎么办呢?这就是这节课的重点——断点。什么是断点?在程序执行到某一个地方时让他暂停执行,就可以在OD中查看此时的汇编代码。既然有信息框弹出,那么我们便可以使用信息框断点,让程序中断在呼出信息框之前,也就是判断我们的注册码是否正确时。


                              通过百度相册上传18楼2014-07-26 21:32
                              回复