回 帖 发 新 帖 刷新版面

主题:(非计算机系学生)如何入门篇(5)---破解是怎么回事

=========================================================
  (非计算机系学生)如何入门篇(5)---破解是怎么回事
=========================================================

破解一点也不神奇来源于程序的调试
原理在于把二进制代码自动(靠程序例如:softice 调试器)
解释成汇编语言(当然人工可以解释但是不实际)

汇编语言直接来源于二进制代码,是可读的例如:


  USER32!GetSystemMetrics                   ; ->API函数
  014F:BFF648C7  XOR     EAX,EAX        
  014F:BFF648C9  MOV     EDX,[ESP+04]
  014F:BFF648CD  CMP     EDX,00
  014F:BFF648D0  JL      BFF64919               
  014F:BFF648D2  CMP     EDX,4A

段地址:偏移地址  汇编语言助记符  操作数,操作数

段地址:偏移地址                ;-〉内存的地址
汇编语言助记符  操作数,操作数 ;-〉都是由二进制码翻译过来的


要破解就是找到处于内存某地的控制某种功能的二进制码修改
要找到那个地方必须设置陷阱,程序执行到那之前就捕捉到它。

这个陷阱就是--断点
一般的办法使设置到执行的API函数

例如:BPM GetSystemMetrics    ;(softice 调试器)
*注意:有些API函数必须加载符号加载器才能使用





[注意]


尽量提供本主题的有用信息帮助更多的人。这样才是我的用意。

回复列表 (共21个回复)

沙发

靠,原理谁不知道,关键是如何跟踪。

板凳

solt1:
如果你是所谓-大虾
不要写没用的
到汇编区去,

3 楼

太深奥了,我不懂啊!!!!

4 楼

跟踪的实质就是还原程序设计的思路
破解被称为逆向工程,由于任何代码
都可以变成二进制码,结和特定机器
可以利用这些二进制码,确定运行程序
的顺序运行意图,变成汇编语言的助记符
便于理解。助记符几乎是一一对应的

例如:
    nop  对应 90    (十六进制数)

意思是空操作

但不是所有的二进制数都是程序代码,有些是
数据,操作数,甚至是文件流,这就要根据机器
对存储器的读写规则,来理解哪一部分是什么呢?


简单的 说破解就是

别人的程序过程:


源程序(高级语言代码)文本---〉编译器,连接器----〉二进制执行代码 非文本

破解的过程:

二进制执行代码 非文本-----〉反编译器;调试器----〉找到程序执行代码段---〉好理解的汇编助记符 文本

唯一的缺憾就是无法返回到原来的源代码,几乎是不可逆的。
只能对二进制码作微小的调整无法改变程序的结构

5 楼

深奥啊
[fly]深奥[/fly]

6 楼

没什么难度
我也是半瓢水

就像小时候不理解电灯为什么会亮
电是一种什么一样

有些东西虽然表面看不到但是可通过间接方法表现出来

破解就是调试
希望大家努力
这是基本功

7 楼


[fly]讲的好[/fly][color=0000FF]希望有一天我会成功,希望你多发些帖子对我们这些走在黑暗中的人多一盏明灯。[/color]

8 楼

本来不想在写这些初级的文章,有些人觉得初级
但是看了一些人的回贴,我感到还是继续带一些
后来者,我并不认为计算机是神秘的东西
了解的越多感受越多,
如何然更多人得到计算机的乐趣就是我的快乐
一开始的时候身边的朋友都不会,自己一个人
自学凭的就是一种“憧憬”回想起来
快乐的时候就是不太明白的时候,现在少了激情
但是还有很多的朋友没有入门
所以我还会写一些概念的东西给那些真正需要的人
但路还是要自己走的一些东西需要时间

希望大家不要急于求成

三到五年是必要的
要有恒星

9 楼

感动!

10 楼

谢谢楼主。无条件支持。坚信自己,我们支持你。

我来回复

您尚未登录,请登录后再回复。点此登录或注册