仅以此文来描述如何反汇编一个 exe 程序,这里采用的是静态反汇编,也就是先把整个程序全部反汇编成汇编语言后进行修改 ,这个例子很简单 ,首先是我从看雪论坛上下载到的一个 CrackMe.exe 程序 然后我们使用 W32Dasm.exe 打开它,可以看到这个 exe 程序在反编译以后的内容 双击正式启动这个程序 ,随便输入注册码 123,点击 Check 这里可以看到程序在输入错误后提示的内容 然后我们使用"串式数据参考",找到这个字符串的位置 这个位置如下 可以看到在我程序的0040 段,15B9 这个偏移地址下程序输出了这个字符串,然后我们考虑一下,程序在我输入了错误的注册码,并且点击了check 以后,弹出了这个字符串,我们向上找,应该可以找到一个跳转,类似 je,jne,jmp 之类的东西,跳转到此处,位置如下 可以看到在偏移地址15AB 下有一个入口,注意 Referenced by .....这句,是说"有人从这里 插队 了" 到底是谁"插队"到这里了呢,是 00401595 这个代码. 现在我们跳转到这个位置去追踪它 输入 00401595 可以看到是个jne(不等跳转),我们只要把这个jne 改成je 就可以了 使用hiew 打开这个程序 打开以后看到一堆乱码,这是因为它是用文本方式打开了一个exe 程序 这里我们按 F4,选择 decode(反汇编)模式 这回看到的就都是机器码了 然后按F5,输入1595(刚才我们找到的那个语句地址),找到那个位置 就是这个 7516 的 jne 命令,我们要把它改成je,这里直接把 7516 这个机器码修改成7416 按 F3 进入编辑模式 然后按 F9 保存 这回再次打开修改后的程序 ,重新输入 123,可以看到 crack 后的结果是 完成!