作者if4 ( )
看板Old-Games
标题[转贴] 软体破解原理(转贴蓝风文章)
时间Sat Apr 29 09:26:44 2017
转录一篇骨灰级的文章,蓝风写的软体破解原理。
第1部分)
作者 : Alfred Li 1
本人以前对破解方面一无所知,而现在我已经破了一些的 game 了,实
感高兴!!但对无敌方面还是不太了解,希望能跟大家多学习,我之所以写这
一篇文章是希望玩电脑的同好们都能深入这一个破解的世界!!不管你现在
的功力如何?我都希望你能把它看完!!因为我只破了一点点的 game ,要是
你是这一方面的高手的话,相信你一定觉的这没有可看性,的确......如果
你是对这一方面都一直很好奇的话,而又不太了解,那你一定要看了. 我所
写的都是一些很简单的道理,只要你懂 pctools , debug , 和一些简单的
组合语言就可以了!!
我目前只是针对密码方面,而破了 :
大宇 超级桥牌 ┌─────────────┐
软世 方程式机车赛 │ 一点点啦...请多多指教!! │
欧风 信长之野望 │ │
XXXX 燃烧野球 II └─────────────┘
虽然是一点点啦!!不过因为我从接触到破解,只有短短的两天而已,
所以颇有一些心得,我再说一次....我写这一篇文章是针对对这一方面有
兴趣而都不知道如何破的人所写的,要是你是高手的话,请不要看!!!不然
你会觉的都是一些简单的道理(对你来说!!)OK.....
好了,言归正传!!.....要想破一些密码的话呢?必须要有一点点组合
语言方面的常识,不然到时候你近去 debug 时,你会 某仔讶 哦!!不要来k
我耶!!所以我看还是去看一点点这一方面的书籍好了 ,我也会在本文中提
到的,以免有一些懒得动的人........嗯嗯......
□■ 软体需求:
1. 反组译和追踪软体: debug 或 symdeb 或更新版的.
2. 电脑工具: pctools 或能更改程式内容的软体.
3. 还要会组合语言,令人头疼的!!
令一方面还要拿一张纸和一只笔来做记录用的,以便看程式进行到那
里,这样一方面也可以很清处的看到程式的主要流程(密码部份)!!一方面
当机时也可以从这里就开始,以节省时间!!
好现在要进入最精彩的部份了........ ready!!ok....let`s go !!
我在下一篇文章会用实际的程式来作追踪,目前只用说的 ,因为那是你必
需要先知道的呀!!进入 debug 之後,你可以先随便载入一个 file ,必须
要是 .exe 或 .com 的.
C>DEBUG
-N D:\GAME\HB2\HB2CGA.EXE 先试试看!!如果你懂的话,那是很
-L Easy!!
-A 3865:0012
3865:0012 _ N 是要准备载入的档名 L 是载入
-U A 是编组 80X86 程式 U 是反组译
3865:0012 E8EC16 CALL 1701
3865:0015 90 NOP
3865:0016 90 NOP 这是一个燃烧野球II 的一部份
3865:0017 0E PUSH CS 现在我就为这个来做说明:
3865:0018 1F POP DS
3865:0019 A30400 MOV [004],AX
3865:001C 03060C00 ADD AX,[000C]
3865:0020 8ECO MOV ES,AX
│ │ │ │ └──────5.这是要让 ASM 做的事情!!
│ │ │ └─────4.这一部份是 ASM 的指令!!
│ │ └──────3.★★这是机器码.就是我们所要改的地方★★
│ └─────2.这是 IP 会随程式的指令而变.
└────1.这是 CS ,你的可能会和我不一样...
现在对 DEBUG 有了一个认识了吧!!SYMBED 的用法和 DEBUG 是很相似的!!
我不多说了.....
4 是我们所要学的,指令有上百个,还有子命令呢!!所以我们只要记几个就
好了....
CALL 呼叫副程式
CMP 比较
JXXX 跳跃 ★★ 我们大部份都是要改这里的 把 JXXX 改成 JMP 或 NOP!!
REPF 反回 CALL
够少了吧!!这样就可以破 GAME 了,只是你会很花时间,因为你最好好是要会一
些的指令啦...像 mov , int xx , 等等...会越多越好!!
我们所要破 game 是要用 debug 帮我们反组译,然後再用 pctools 来修改.然
而不是一下就会成功的,所以你必需要先把 .com .exe 备份以防毁掉!!
破 game 的过程通常是这样的,先找我上面所说的指令,然後 g <address>....
看看它什麽时後会叫我们要输密码!!如果是话,通常很有可能就是这个 address
的问题了,只要把 jxxx 改成 JMP 无条件跳跃 或 NOP 无动做,它们的机器码是
EB 和 90 这是很重要很重要的啦...你不记的话..就没法度了!!
只要把它改成那样就 OK 了...现在我只是用说的而已...希望你能看的懂
,如果不懂的话那下次我就准备要用实例来说明了....你可以写信给我........
ID : Alfred Li 高雄人啦....
笔名: 蓝 风
相信有你的信给我鼓励我一定会很高兴!!在继续写下去.....到目前为只都
还没有什麽困难吧!!解久了就会了解它有一定的模式....还有如果有一些指令都
看的懂,那对你的程式的流程就会觉的很简单,对我们解密码都会有很大的帮助哦
!!
如果对 debug 还以不了解的话,那赶快写信给我吧.....会有什麽疑问的..
都欢迎....交个朋友也可以! bye bye !! 下次见了.......
... 蓝 风 ...
第2部分)
作者 : Alfred Li 2
要破解 game 必需要有耐心,恒心,和毅力!!所以当你怎麽破也破
不了来的时後,那就表示你的功力还差一结,要跟我多学学啦......密
码表方面可分为两种.
1. 文字模示.
2. 绘图模示.
以前者比较好破(笔者觉的啦),而有的 game 还会两种都一起出来
,真伤脑筋耶!!像 方程式机车赛,就是一个典型的例子!!而这次笔者决
定要以 方程式机车赛来作说明!!虽是很久以前的 game 了, 但 game
不在於新或旧,只要有密码的 game 都应该尝试看看!!
载入 gpcga.exe
我先要说明的一点是...我先会把要改的码先列出来给你们看!!
我有两个流程,第二个才是我们如何来正确的修改,而第一个只
是要让大家了解一下,对程式比较有帮助!!
┌────────────────────────────────┐
502B:0012 E8C20A CALL 0AD7 ────> 程式一开始就跳到 0AD7 的位 │
502B:0015 0000 ADD [BX+SI],AL 址上!! ┐ │
502B:0017 0E PUSH CS ┌─────┘ │
502B:0018 1F POP DS │ │
502B:0019 A30400 MOV [0004],AX │ ★CALL 是呼叫副程式!! │
502B:001C 03060C00 ADD AX,[000C] │ 所以它的 HEX 码是 E8 ───┘
502B:0020 8EC0 MOV ES,AX │ 而遇到 RET 返回.....
502B:0022 8B0E0600 MOV CX,[0006] │ 将来如不须要出现叫我们
502B:0026 8BF9 MOV DI,CX │ 输入密的码的画面时,就要
502B:0028 4F DEC DI │ 把它给关掉!!像是 E8C20A
502B:0029 8BF7 MOV SI,DI │ 改成 909090
502B:002B FD STD │ HEX 的 90 是无做用的!!
502B:002C F3 REPZ │ 这样程式才会继续执行下一
502B:002D A4 MOVSB │ 行!!
502B:002E 8B160E00 MOV DX,[000E] │
.... │
.... │
.... │
.... │
.... │
502B:0AD7 E8AD00 CALL 0B87 ┐ └─ 程式又跳到 0B87的位
502B:0ADA BA0008 MOV DX,0800 │ 址上去了!!
502B:0ADD B700 MOV BH,00 │ 所以我们先来看看此位址写些
502B:0ADF B402 MOV AH,02 │ 什麽呢? ┐
502B:0AE1 CD10 INT 10 ├─┐ │
502B:0AE3 E80600 CALL 0AEC ┘ │ │
502B:0AE6 8CC0 MOV AX,ES │ │
502B:0AE8 051000 ADD AX,0010 │ │
502B:0AEB C3 RET └──────┼────────┐
502B:0AEC B42C MOV AH,2C │ │
502B:0AEE CD21 INT 21 │ │
502B:0AF0 80E63F AND DH,3F │ │
502B:0AF3 52 PUSH DX │ │
502B:0AF4 8AC6 MOV AL,DH │ │
502B:0AF6 D40A AAM │ │
502B:0AF8 0D3030 OR AX,3030 │ │
502B:0AFB BBC90B MOV BX,0BC9 │ │
502B:0AFE 2E CS: │ │
502B:0AFF 884701 MOV [BX+01],AL │ │
502B:0B02 2E CS: │ │
502B:0B03 8827 MOV [BX],AH │ │
502B:0B05 1E PUSH DS │ │
502B:0B06 0E PUSH CS │ │
502B:0B07 1F POP DS <───────┘ 啊哈!! │
502B:0B08 BAB50B MOV DX,0BB5 我们可以很清处的看到 │
502B:0B0B B409 MOV AH,09 MOV AH,07 │
502B:0B0D CD21 INT 21 INT 21 │
502B:0B0F 1F POP DS CMP AL,0D │
502B:0B10 BE0000 MOV SI,0000 JZ 0B13 │
502B:0B13 B407 MOV AH,07 │
502B:0B15 CD21 INT 21 这几项...所以我敢肯定这里 │
502B:0B17 3C0D CMP AL,0D 一定要叫我们输入 PASSWORD │
502B:0B19 74F8 JZ 0B13 !!所以只要我们能把当初带我 │
502B:0B1B 2E CS: 们来的 CALL 给 kill !!就 │
502B:0B1C 8884950B MOV [SI+0B95],AL ok了....但是有两个 call 耶!!─┘
502B:0B20 B40E MOV AH,0E 到底那一个正确?如果你的 ASM
502B:0B22 CD10 INT 10 功力强一定可以看出...但是一
502B:0B24 46 INC SI 般人是不可能看出来的...所以
502B:0B25 83FE06 CMP SI,+06 只好试试两次了,先关掉一个看
502B:0B28 75E9 JNZ 0B13 看....看到底是那一个!!
502B:0B2A B80000 MOV AX,0000 (笔者在此告诉你是第 2 个)
502B:0B2D 2E CS:
502B:0B2E 0226950B ADD AH,[0B95]
502B:0B32 2E CS:
..
..
..
..
502B:0B5C D0E6 SHL DH,1
502B:0B5E B700 MOV BH,00
502B:0B60 8ADE MOV BL,DH
502B:0B62 2E CS:
502B:0B63 3987D00B CMP [BX+0BD0],AX
502B:0B67 741D JZ 0B86 ──────┐
502B:0B69 E81B00 CALL 0B87 Here !!
502B:0B6C BA0000 MOV DX,0000 You Know !!
502B:0B6F B700 MOV BH,00 Ok !!
502B:0B71 B402 MOV AH,02 Good !!
502B:0B73 CD10 INT 10 Fine !!
502B:0B75 1E PUSH DS
502B:0B76 0E PUSH CS
502B:0B77 1F POP DS
502B:0B78 BAA00B MOV DX,0BA0
502B:0B7B B409 MOV AH,09
以上就是我们最主要的程式流程,以那个方法就可以破第一个密码了,可以
不要有那个画面出来了.当初笔者是改 502B:0B67 741D JZ 0B68
改成 EB1D JMP 0B68
^^
HEX 码的 EB 是 JMP 无条件跳跃,背起来了吗?
所以它还是会叫我输入密码,但我连续三次都输
错的但确可以执行,所以这样也是另一种破解游
戏的方法!!
这样应该没有什麽问题了吧....只要用 debug 找到它的 hex 码,
在用 pctools 改...就可以了,只是不会每一次都让你碰到,我也是要试一
段时间才能试出来,所以 file 要备份...以防被毁....
至於如何用 debug 和 pctools ,那可以写信问我....我会很乐意
答覆你的,我的 ID 是 Alfred Li ....一定可以找到我的!!那今天就到这
里结束了哦....第二个密码我目前还没找到破解的方法,所以第三集可能要
延後了.....如果你知道的话,欢迎你告诉我!!ok...相互研究.....
... 蓝 风 ...
if 後记:
pctools 现在可能已经找不到了,建议用 UltraEdit 蛮好用的...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.251.166.142
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Old-Games/M.1493429207.A.6DC.html
1F:→ spark0409: 甘宁老师的组合语言QQ 04/29 10:15
这是基本的啦 :)
2F:推 k8543: pctools 还在我的电脑里,印象中以前只会拿它来看软碟坏轨 04/29 10:33
看坏轨?怎麽看?@@
※ 编辑: if4 (111.251.166.142), 04/29/2017 10:43:12
3F:推 k8543: 真的忘了 都二三十年前了 不过档案还在电脑里 04/29 10:53
我是想说...您应该记错了吧?pctools 我是拿来改破解的
或是拿来改游戏存档的资料...什麽钱啊、粮啊...之类的 :)
※ 编辑: if4 (111.251.166.142), 04/29/2017 11:43:12
4F:推 k8543: 修改我是有用过几次,印象中可以看软碟咧,先按M再按B之类的 04/29 12:28
5F:→ k8543: 工厂还有机台是跑dos+软碟的,不过懒的过去试了 04/29 12:29
6F:→ k8543: 不晓得,真的忘了,但看看tools目录里,应该没有别的软体是了 04/29 12:31
可惜...我现在也不能试了...我根本没软碟机QQ
想说软碟以後会被淘汰,率先拆除,其实,现在的工业标准
应该不能装软碟机的硬体吧?软碟容量太小了,现在USB碟容量
蛮大的,携带又方便...
※ 编辑: if4 (111.251.166.142), 04/29/2017 13:00:34
7F:推 Jedidiah: PCTools也是时代的泪眼啊XD也因为玩修改而踏进软体这行 04/29 13:41
8F:→ Jedidiah: 电脑桌上摆了一堆纸,上面都是满满的短除法 (算16进位) 04/29 13:42
满满的短除法?那是什麽?@@
9F:推 DrizztMon: 现在比较想研究解包apk XD 04/29 13:56
解包apk?那是什麽?@@
唉...我懂得真少啊QQ
※ 编辑: if4 (111.251.166.142), 04/29/2017 14:15:35
10F:推 snowwolf725: apk 是 Android 手机软体的档案格式,要修改要先会解 04/29 14:21
原来如此,谢谢告知^^ 那好像就是某种格式的压缩档吧?@@
※ 编辑: if4 (111.251.166.142), 04/29/2017 14:41:03
11F:推 PTJobKing: 现在都用WinCV 原理是一样的 功能也很方便XD 04/29 16:26
WinCV 好像以前有用过,但是不确定可以修改二(16)进位数值?
12F:→ bnn: APK反编译工具很多啊,dex2jar,jd-gui,ILSpy (.NET),... 04/29 16:45
谢谢提供资料,bnn大一定是程式设计高手,我都没听说过^^"
※ 编辑: if4 (111.251.166.142), 04/29/2017 17:21:58
13F:推 h1236660: 我挺想知道地图怎麽抓出来,比如轩辕剑二 04/29 21:12
我也想知道,有没有大大会?能教一下吗?^^
※ 编辑: if4 (111.251.166.142), 04/29/2017 21:17:40
14F:推 playerlin: 现在在Windows下我是用WinHex(这套要$,所以...)。 04/29 23:19
15F:→ playerlin: 不知道短除法?上课都没在专心喔...而且为何不拜一下 04/29 23:21
16F:→ playerlin: google大神呢 :P :P :P 04/29 23:21
我刚刚找到一个影片
https://youtu.be/fX6YC-r2MIw
我以前没学过,可能我比较老吧,课纲没列XD
不过我会~~也许是那时候不叫做〔短除法〕吧 :p
WinHex 要钱?为何我到官网下载回来,他完全不跟我提到钱
真佛心XD我下载的可能是试用版...orz
※ 编辑: if4 (111.251.166.142), 04/30/2017 11:34:48
17F:推 nwlsa1098: 不是跳0B87吗,怎麽位址是0807...... 04/30 13:39
18F:→ nwlsa1098: 打错,是怎麽指到0B07? 04/30 13:40
不知道是我抄错还是原作者打错...我再找资料看看...抱歉orz
我对过资料了...没抄错...应该是原作者笔误喔~~
不然您也可以到对岸的看雪学院
http://www.kanxue.com ,
或看雪论坛
http://bbs.pediy.com 这里研究破解资料喔^^
※ 编辑: if4 (111.251.166.142), 04/30/2017 14:58:42
※ 编辑: if4 (111.251.166.142), 04/30/2017 15:13:52
※ 编辑: if4 (111.251.166.142), 04/30/2017 15:24:47
20F:→ playerlin: 最基本的是Eval.(评估)版,免钱,之後的都要$了。 04/30 16:16
21F:→ playerlin: 当然评估版只有最基本的功能,我记得好像缺少我需要的 04/30 16:16
22F:→ playerlin: 功能所以...... *化为烟* 04/30 16:17
24F:→ playerlin: 可惜一样要$,而且介面比较阳春(?)... 04/30 16:19
25F:→ playerlin: 想到了,WinHex评估版有存档限制,只能写入小档案。 04/30 16:21
26F:→ playerlin: 所以实在不好用,如果要改的档案有MB等级就不能存了。 04/30 16:21
您的网址有右括弧,点网址会不正确,所以我帮您修正了。请见谅^^
您有在用 Hiew 吗?好不好用?
※ 编辑: if4 (111.251.166.142), 04/30/2017 17:45:56
27F:→ playerlin: 我只推它的Decode功能(反组译),但是跟IDA那种等级相比 04/30 18:50
28F:→ playerlin: 就有点阳春,虽然对我这极轻度研究者是够了就是。:P 04/30 18:51
IDA 搜寻不知结果(太多可能了orz)可以介绍一下吗?
也是反组译工具吗?有哪些功能呢?
※ 编辑: if4 (111.251.166.142), 05/01/2017 22:53:14
29F:→ playerlin: IDA Pro是专业级的工具,其实反而对我而言太复杂不会用 05/02 23:48
30F:→ playerlin: lol...但是它可以分析机器码转为设定好的特定CPU组合语 05/02 23:49
31F:→ playerlin: 言并描绘出程式码运作的图表等。 05/02 23:50
32F:→ playerlin: 这套也是要$,虽然有免费版但是版本是有段时间的5.0版 05/02 23:51
33F:→ playerlin: 不包含之後版本新增的功能(如果是对DOS老游戏除错应该 05/02 23:52
34F:→ playerlin: 可能够用了)。 05/02 23:52
36F:→ playerlin: google "IDA Pro教学" 应该能找到其他较复杂的。 05/02 23:55
嗯,谢谢资讯提供,感恩!!
※ 编辑: if4 (111.251.162.142), 05/03/2017 05:42:40