Archive Page 4

[转]如何正确地进入基于x86-64Bit Windows系统的商业软件破解领域

02月 16th, 2012 by Genthelvite

[作者]
猪头三
个人网站:http://www.x86asm.com/

[序言]
从事Windows系统下的软件研发,已走过差不多9年的时光,在这段时间里认识不少朋友。在每认识一个新的朋友的时候,我都会被问到:如何学习破解,如何逆向,这类相关的问题。那么这篇文章我将会详细的介绍正确的方式。

[本内容适用领域]
1> 基于x86-64Bit Windows系统下的商业软件软件破解
2> 商业注册码破解
3> 商业软件脱壳
4> Windows版本的游戏破解

[内容贡献者]
fly [Unpack.cn社区]
songyi [Unpack.cn社区]
kings0527 [Unpack.cn社区]

[本内容讨论社区]
[Unpack.cn社区]http://www.unpack.cn/thread-47658-1-1.html

[学习破解/逆向之前的前提基本语言和开发工具]
1> 熟悉 x86-64 CPU体系的汇编语言   [参考书籍: 王爽汇编语言程序设计]
2> 熟悉 C/C++ 语言 [参考书籍: C Primer Plus, C++ Primer Plus]
3> 熟悉 VC DELPHI 等 可利用WIN32 API的开发的工具

[学习破解/逆向之前的自身Windows系统理论]
1> Windows核心编程 [参考书籍: Windows核心编程]
2> Windows系统原理和概念 [参考书籍: 深入解析Windows操作系统]
3> Windows套接字网络编程 [参考书籍: Windows网络编程[绝版]]
4> Windows系统的PE文件格式
5> Windows SDK开发入门 [参考书籍: Windows程序设计(第5版)]

[学习破解/逆向之前的必须经验]
1> 至少有编写程序的经验
2> 至少有用过 DELPHI 或 VC 开发软件的实战经验
……等

[进入破解/逆向之后常用工具]
1> PE文件观察软件 [比如:  PEid]
2> 动态调试软件 [比如: Windbg,OllyDbg]
3> 静态反编译软件 [比如: IDA]
4> 16进制查看工具 [比如: WinHEX]
5> 自动脱壳工具/脚本
……等

[进入破解/逆向之后建议添加调试理论]
1> Windows环境下的调试理论 [参考书籍: 软件调试,Windows高级调试,Windows 用户态程序高效排错]

[进入破解/逆向之后建议添加驱动理论]
1> Windows环境下驱动开发 [参考书籍: Windows驱动开发技术详解,寒江独钓:Windows内核安全编程]

[网友FAQ]
1> 进入破解领域时需要掌握什么语言?
答: 熟悉x86asm C/C++ 即可应付大部分的商业软件

2> 破解和逆向一个软件时看到的都是汇编源码,是不是只用学习汇编就可以了?
答: 要破解和逆向一个软件,只会汇编,是远远不够的。因为现代软件的编写大多数不是基于汇编来编写了,而是基于 C/C++ C# JAVA DELPHI 等高级语言来编码。作为一个破解/逆向人员来说,必须掌握2~3种高级语言,并有实际的开发经验。你才能明白一个软件的程序执行流程和原理,只要明白这 些,你才能在茫茫的汇编代码中,找到对应的程序逻辑。这样才能方便你去有目的地去破解/逆向一个商业软件的功能。

3> 要进入破解/逆向领域需要多长时间?
答: 这个要看个人资质,有天赋的话,可以在1年时间基本明白破解/逆向 的思路。 资质不高,又不够努力,那么最好放弃这个领域的研究。破解/逆向是一个深奥的领域,需要一个人的 毅力+勤奋 才能找到这个领域的乐趣。

4> 现在要进入游戏外挂开发,是否还需要具备什么其他特殊技术吗?
答: 基于现在游戏的保护强度加大,要能开发一个合格的游戏外挂,我们必须还要会一些 Windows驱动开发 Windows套接字编程。当然游戏外挂开发是一个很庞大的工程,需要多工种配合。目前来说,以1个人完成一个商业游戏外挂,是非常困难的,但是不排除国 内的卧虎藏龙的现象。因为,一个游戏外挂的开发需要涉及几个工种:
1> 游戏程序脱壳
2> 游戏网络通信协议加解密
3> 游戏认证码处理
4> 游戏内存数据搜索修改查询
5> 游戏数据导出封装
6> 游戏程序自我保护机制绕过[NP,HS,XTRAP,TP,APEX等]
……等
所以要认清事实,开一个游戏外挂,必须要面对以上这些繁琐的技术。

[修改补充]
如果你有什么建议和补充的话,请留言跟帖,好让我更加完善这篇文章,以造福更多的初学者。

最基本最常用的三本算法书籍

02月 15th, 2012 by Genthelvite

初级-数据结构(C语言版)严蔚敏,吴伟民 清华
中级-C算法 (美)Robert Sedgewick 人民邮电出版社
高级-算法导论

7天学完了8086实模式汇编

02月 14th, 2012 by Genthelvite

教材《宏汇编语言程序设计及应用》 东南大学 傅德盛编著
参考书《IBM PC汇编语言程序设计》 清华大学 沈美明编著
这两本书入的门,比学之前想像的轻松的多的多没遇到什么障碍,呵呵

巩固一段时间后再向32位安全模式汇编进攻

汇编入门笔记-堆栈寄存器SS(及SP)的填入两种方法

02月 14th, 2012 by Genthelvite

1、系统自动填入
被定义为对战的段选择STACK组合类型,当含有该段的目标程序被装入存储器时,系统自动取该段基址送入SS,取段长度送SP
S_SEG SEGMENT PARA STACK ‘STACK’
DW 200 DUP(?)
S_SEG ENDS
2、用指令填入
被定义为堆栈的段在组合类型位置上缺省,在代码段中用3条MOV指令完成这个功能
S_SEG SEGMENT PARA ‘STACK’
DW 200 DUP(?)
TOP LABLE WORD            ;TOP指明为WORD类型
S_SEG ENDS
C_SEG SEGMENT PARA ‘CODE’
ASSUME CS:C_SEG,SS:S_SEG
ASSUME DS:NOTHING,ES:NOTHING
START:                ;指明程序一开始就执行
MOV AX,S_SEG            ;填入段基址
MOV SS,AX
LEA SP,TOP            ;填入栈指针TOP=200
C_SEG ENDS
END START

汇编入门笔记-段寄存器的ASSUME语句示例

02月 13th, 2012 by Genthelvite

D_SEG SEGMENT PARA ‘DATA’
NUM1 DB 10 DUP(?)
D_SEG ENDS
S_SEG SEGMENT PARA ‘STACK’
DW 100 DUP(?)
S_SEG ENDS
E_SEG SEGMENT PARA ‘DATA’
STRING DB ‘HELLO’
E_SEG ENDS
C_SEG SEGMENT PARA ‘CODE’
ASSUME CS:C_SEG,DS:D_SEG,ES:E_SEG;SS:S_SEG
START:

C_SEG ENDS
END START
这里明确D_SEG段为数据段,S_SEG段为堆栈段,E_SEG段为附加段,C_SEG为代码段

警惕外包联盟封杀

02月 12th, 2012 by Genthelvite

汇编入门笔记-伪指令LABEL和THIS操作符

02月 12th, 2012 by Genthelvite

d_seg segment
augw label word
augend dd 99251
sum dd ?
d_seg ends
augw为字属性,augend为双字属性。

WBUFFER EQU THIS WORD ;EQU是一个等价符号定义语句
BUFFER DB 20 DUP(?)

LABEL是实际定义的一个符号变量,是实际存在的,而THIS可以理解成只是一个临时变量,THIS只返回一个某类型的存储器地址,THIS使用时必须加上EQU表达式赋值语句才可以实现到和LABEL一样的功能,所以只能说它们在某种意义上是等效的,并不能说一样。THIS和PTR是很类似的。

WEB3.0最智能搜索引擎Kngine

02月 11th, 2012 by Genthelvite

Kngine

世界上最聪明的搜索引擎是谁?Google?百度?Bing?都不是,一个叫Kngine的家伙头顶“世界上最聪明的搜索引擎”的光环来到了人们面前。

至于Kngine是不是“最聪明的搜索引擎”,这句话的噱头成份更大一些,毕竟Kngine还在起步,和一些搜索巨头比起来在信息资源的收集上还是有很大的劣势,Kngine需要做的还有很多。

不过,Kngine已经提前向我们展示了Web 3.0的特点和特色,那就是更加舒适的用户体验,与用户更好的交互性,希望随着互联网的发展,类似的站点会越来越多,互联网生活也会越来越精彩。

汇编入门笔记-各种运算符优先级

02月 11th, 2012 by Genthelvite

优先级    运算符            类别
1    LENGTH,SIZE        数值回送运算符
2    PTR,OFFSET,SEG,TYPE,THIS属性与数值回送运算符
3    HIGH,LOW        字节分离运算符
4    +,-            符号运算符
5    *,/,MOD,SHR,SHL        算术运算,移位运算符
6    +,-            算术运算符
7    EQ,NE,LT,LE,GT,GE    关系运算符
8    NOT            逻辑运算符
9    AND            逻辑运算符
10    OR,XOR            逻辑运算符
说明:优先级1最高,而优先级10最低,原括号()可改变执行顺序

ASUS华硕主板Disk Unlocker 3TB硬盘容量限制解决软件

02月 10th, 2012 by Genthelvite

华硕的主板BIOS都不用更新,只要装上华硕的Disk Unlocker工具软件就可以用3TB或以上的硬盘开机了。而且还不只是UEFI+GPT支持的Windows 7 64bit / Windows VISTA 64bit,连32位系统,甚至连Windows XP都可以一起支持。

Windows 7 / VISTA版:
http://drivers.mydrivers.com/drivers/440-176003-ASUS-Disk-Unlocker-3TB-For-Vista-32-Vist/

Windows XP版:

http://drivers.mydrivers.com/drivers/440-176002-ASUS-Disk-Unlocker-3TB-For-WinXP/

使用手冊:

http://event.asus.com/mb/2010/disk_unlocker/Software/Disk_Unlocker_User_Guide.pdf

有需要就玩玩看吧。