|
软件破解常见问题
$ s7 z# q9 _4 \" N3 O- ]8 W* k 来源:看雪学院 3 i* _6 Q+ W) `
% s! C5 | H: A. s8 A3 y
; a4 a6 ^7 c5 N# `
5 C j5 V" c0 ]% E5 i% I$ R$ Z; H
| 我系统是win9x,每次SOFTICE都自动装载,在windows下一按CTRL+D自动激活它,有什么办法解决? | . f5 L" j9 f( b r3 g& S: M2 c& f
7 y7 |1 ]; l( ~; r) o! X- M4 {, h
| 这是SOFTICE安装时默认时改变了AUTOEXEC.BAT,自动加了一行wince.exe。每次系统启动时自动运行AUTOEXEC.BAT时将SOFTICE装载,你只要去掉这一行,问题就解决了。在你需要用SOFTICE时,在纯DOS环境下,在SOFTICE目录执行winice.exe文件即可装载。你也可自建一批处理命令来在纯DOS下装载SOFTICE。 |
7 W. r; I y3 z# H4 r
, v8 _: h$ A8 h6 ]
5 ~+ e- @5 `1 m! l4 B7 a! [2 |9 _6 V4 G# z' O$ I
8 y4 @ Z5 H, `| 2、如何知道软件是被什么加的密? | ( F* |2 R8 r9 E! g! j6 \0 x
; ]5 b3 e3 y( n `
| 用TYP或GetTyp侦测文件类型或用procdump查看文件的section就可以知道用什么加密 . | : g# t- D6 l3 c! d2 u
( w7 n* M- m, i- N8 n K
& c0 H6 n; R; X; o5 R, u- N4 ` Z
2 {$ Z0 I8 \. {4 Z4 v' g# U
F" h9 Y0 J4 c) J- Y2 H2 z1 C| 3、经常看到脱壳时下命令bpx loadlibrarya, 下命令后SOFTICE告知未定义,我的SOFTICE怎么拦不住? | 1 D. C- z5 |9 C0 t( d
5 @% x6 ?1 E: v5 M8 P/ |- E
| 在 softice 的目录下有一个文件叫 winice.dat & x# U) x. e+ z* P6 ?$ D
其实是个文本文件,将这文件的最后几行把他改成如下 :# Q8 I/ |# G2 R4 h) ?- w/ Z. e( Z2 q
前面有分号的就是注解,把后面有 *32.dll 的方号去掉就行了 + S6 T5 \8 s4 v8 D2 ]7 v
顺便加上 vb5, vb6 的 dll, 也可拦 vb 的 function 了 " ~4 A7 d2 s& @6 J; R
EXP=c:\windows\system\kernel32.dll
4 l0 U1 K! b* L. G* d) T* ZEXP=c:\windows\system\user32.dll
/ r4 r4 o u7 L% }1 k" y) K) bEXP=c:\windows\system\gdi32.dll ; `4 D: k' }9 ^' [5 r! ^* n
EXP=c:\windows\system\comdlg32.dll 2 Q3 k2 z+ R9 M" M- w
EXP=c:\windows\system\shell32.dll
3 q% s3 _# Z+ x$ ~/ kEXP=c:\windows\system\advapi32.dll
9 D' F4 J) t6 `9 m" L3 b/ QEXP=c:\windows\system\shell232.dll
! o& N7 B& u5 W. v9 }2 z5 {" u SEXP=c:\windows\system\comctl32.dll + U! N9 A6 G1 A0 |' s1 K0 y* S
;EXP=c:\windows\system\crtdll.dll
1 K" `$ s. i. p7 o9 K& p9 u1 w;EXP=c:\windows\system\version.dll
, t- R) J6 S) Q: UEXP=c:\windows\system\netlib32.dll
" D& |) I9 D2 S8 r( N) n" F! n;EXP=c:\windows\system\msshrui.dll
* ?% m" f, F3 S! V/ _* d1 { M0 J+ `EXP=c:\windows\system\msnet32.dll * m$ w n4 h L+ O7 U
EXP=c:\windows\system\mspwl32.dll , Q" q' x% }+ q" v$ K5 n
;EXP=c:\windows\system\mpr.dll
! p" c1 p% q9 w4 _% O9 _9 J4 texp=c:\soft\95logo3\vb40032.dll
8 ~' B7 _* |. g5 z; u. [0 B4 E. \exp=c:\windows\system\msvbvm50.dll . N, T1 K$ k2 g L$ b
exp=c:\windows\system\msvbvm60.dll | 3 ~$ d$ V) p/ d9 H( n) T
4、我在调试软件时,经常看到寄存器是EAX、EBX、ECX或AX、BX、CX等,这是怎么回事?
# H0 u4 L& V# Q1 Q2 o( p+ D因为win9x系统是一个16位和32位混合的操作系统,在这系统上能运行16位和32位的应用软件,所以你如调试不同位数的软件时,在寄存器上就反应出来了,EAX、EBX、ECX等是32位寄存器,而AX、BX、CX等是来表示16位寄存器。 , S- F: f) O7 s9 e
5、如何在TRW2000下拦截VB运行库中的函数?
! U6 m: E8 Q* x/ ?( X你要用TRW2000拦截Vb程序,需要用1.15版以上,将相应的VB运行库复制到TRW2000的DLL目录下,你也可用此法装载其它DLL文件。
( U$ o" T0 z; [# [/ L( f3 }6、问:我只会用bpx hmemcpy来下断点,也看过看雪先生的教学文章,但对其他断点一直是一知半解,所以现在问题来了。 某些程序并没有输入注册码的地方,只在开始运行时弹出一个对话框,告诉你还剩多少天了,有延迟,这种软件一般怎么破解。如:LView pro、PaintShop pro等
: I, I5 E$ P1 h0 k答:8 a; S! D; r6 o- u
程序像一条竹竿,断点就是上面的结(当然是我们设定的)。选择一个好的断点有助于我们少走弯路。其实你说的情况,没有注册窗口,只有nag. 此时可能仍可以用bpx hmemcpy。此外,你可以采用其它方法。
1 s/ H; I4 r+ f5 u以paint shop pro 5.01 evaluation为例。你用bpx hmemcpy是拦不住的。但还可以用如下几种方法。
. Y$ z9 T% `* P( \- }+ a3 d6 r1. 当nag窗口出现后,激活trw or softice,下断点bpx lockmytask(或bpx destroywindow),回到psp.exe,按下start按钮后程序就会阻断。再用F10 或 F12走。直到你见到如下结构。
$ y+ y3 M, ]& |6 {cs:******** call ****** <-- 用F10带过这一步后会有延迟画面。
. { N3 I' [6 M5 F% o+ j7 ~cs:******** test al, al <-- 此时你在这行。程序确定你按下的是何按钮 6 D/ P6 H( m' J$ l
这时按下F6,你就可以找到这个call前的code,并在其上下断点。若在这之前有跳转,如jz,jnz等,你就可以想办法使nag窗口不出现。 " u2 ^% H2 D% p# N4 N$ w4 ~
2. 在这个nag窗口中,你会见到一些"版权宣言"及"你已经试用了*天,还有**天可以用"等的话。将之抄下,叫出trw 或softice,用 ) d- h- C0 G. T6 @$ w3 @& x
s 0 ffffffff "抄下的话"(trw) 或 / W; r$ b& j7 H* _9 z
s 0 L ffffffff "抄下的话"(SOFTICE)找到其调用的地址。下断点 bpm "找到的地址"来拦截,余下的同例1。
3 a: M1 Q2 ^+ F% S# S8 d l8 T$ _% `. p3. 若程序主窗口完全出现后再有延迟窗口出现,你可以在主窗口出现,而延迟窗口还未出现之际强行叫出trw(ctrl+N) 或softice(ctrl+D),然后一步步走,直到你确定了延迟窗口出现的那行code.
+ u$ o' y4 j; V( i4. 如程序没有被压缩、加壳。你可以用w32dasm等静态反汇编方法,在string reference中找到延迟窗口中的话,在这代码前下断点拦截。
* R8 j8 m0 w1 G2 |以上简单介绍了几种方法,不知对你是否有帮助。 9 l. r. T7 b- \0 \6 k# Z
7、问:命令"bpx regqueryvalueexa if *(esp->8)>='Soft' do "d(esp->14)"我看不大懂,您能给讲一下吗?多谢。
) U9 M# D! F5 Y/ b7 D答:这个指令是一个复合指令,因为存注册码的键值是Softkey,其名字在[esp+8]中,其值在[esp+14]中.
, l: T* y, n3 c9 ^5 c. }) h当其值等于或大于Soft(因为只允许4个字符,不能输全键名)时中断,就拦在读Softkey的那个Call. : q' H/ G" m3 a( j' p
否则每次程序call regqueryvalueexa时都会被拦. 4 L' u" f2 y0 X" M# u
拦住后,显示[esp+14]的内容.至于详细用法,你可以参考softice的用户手册,其中会解释*,
; k$ N& } |& Q! q7 e->等内容的. 开始时只要照做,以后提高了再弄明白原理就可以了.
- U; Q. q# C% m6 A" @8、问:为什么用W32DASM反汇编不能显示中文信息?
4 @, K% l: O$ Z答:wdasm是这样的,你可以用十六进制编辑器查找中文改为英文后再反汇编. 7 V( k" V7 \9 F J5 T- U* C
9、问:请问如何修改TRW2000的字体颜色? 3 i9 s7 |, t% B8 B, F! Q
答:在TRW2000命令下用ver blue。 : a! b m$ V1 b- e0 p3 `8 _
10、问:介绍一下Launcher Generator补丁制作工具
- S, \( g9 j' ~" g答:LGen的优点在于它可以控制何时Patch. 在运行它生成的Loader后,会出现一个提示窗,当按下OK按钮后,它才对目标程序做Patch.用法很简单,而且界面是GUI的.在http://ringzer0.cjb.net(它的老家,Tools项下)可以下载或者其它破解工具站点找.
; t! o. F) _% N, O11、问:我在用hiew改如下代码时:& `7 G' O" I3 i7 `# F: g
00469206 e877d5f9ff call 00406782 , ?* k% J6 N. E" c. o+ P ]/ w
0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx
6 T, F! Q0 W- j, Z# T0 H( ?# r4 _我想屏蔽掉第一行:是否用 nop指令?我试了试,但修改后,发现第二行 变成了: 00469207 f4 hlt 是否对程序有影响,修改时必须保证源字节数? ! A& {' c e+ N7 z {! v
答:当然有影响,你修改必须保证nop的字节=e877d5f9ff的字节:6 h1 ^4 ^7 G+ y, I6 T
! w ?9 f" K- A/ K00469206 e877d5f9ff call 00406782 这行要5个nop来填充即: 9090909090代替e877d5f9ff
' p0 Z4 P) W* k- X你在hiew中连续改5行后,这一行就会又正常了0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx
* G9 c: r9 f) o% B0 f12、问:我在破解时,追到一行这样的代码:
9 Z* X; A9 h7 \) g; A2 v* ~' ]00406582 0f84f1000000 je 000406679
% _/ F! ^2 n* E. U. E. g U我想改变程序的方向,je改为jne后是否可以,如不是该怎样,请指教。
; Q! w. s$ v' [! k! K S. t j8 E另,在win32dasm中,我想改反汇编后的代码,如何改?是否得用别的16位编辑器,怎么用? 9 |( i8 e7 d1 a2 o4 z# @3 R. h/ [( R
以上两个问题,困惑了我很久,请各位多指教,不胜感激!!!!!!! 5 s( \7 r4 `- f T) f
答:
3 d$ R$ k) g. _( d% b0 N①00406582 0f84f1000000 je 000406679 9 X6 p( |# u! U4 b
你可在这一行,下A命令(进入小汇编状态),然后可输入你的正确的汇编代码,你在这可改为:jne 000406679
7 ]8 m6 | ~- z( a" a4 {: m! E/ o$ W8 A但TRW2000 demo版,此命令不能用,你可用SOFTICE来完成这工作。
& s2 A3 v& l1 F- t3 Z但我推荐你可在这一行,在TRW2000或SOFTICE下命令:r fl z 8 d9 `% `4 g4 |6 e# J
这样就可改变跳转指令。 . U( u# v2 y- J/ A- O
fl是标志寄存器,r命令修改此寄存器相关的值,具体参考SOFTICE手册和汇编书籍。 ! D8 b0 P6 m o2 O" G5 T
在win32dasm中不能改变程序代码,你可用16进制工具来完成,推荐用hiew来完成。
, j) d! D1 m" d0 _: H②也可以在trw中,用鼠标移动到愈修改代码出,直接修改,如75变74,即jnz->jz. N: j, d* _( h6 n/ R; d0 G7 t
# y+ q5 D7 v$ W- _ O* I③在trw中,下命令e adress [欲修改之代码] + y. N/ B* u e* ^$ T
14、问:在汇编语言中,"[]"的用法?如: " V& w* \+ C; J$ o( j. N/ c7 h2 l
1、push dword ptr [024c1100] * c$ E1 z8 u9 f2 [9 ^3 X
2、cmp eax,[ebp+14]
8 c- y; f6 p1 S4 r! {; T) f7 M3、cmp byte ptr [eax],46
! j* v3 k. Z) X7 A4、lea eax,[edx-02] * Y0 n. q, L9 e8 w7 b! O& P
5、mov ecx,[edx+08]
$ @) h0 V g9 A) a8 s* R9 O其中"[]"里的内容,什么时候表示的是值,什么时候表示的是地址,为什么?第4个是不是把"edx-02"的值作为地址送给eax???
8 G1 c( q, H, \& g: |% D, V另一个问题是:我发现在soft-ice中,在寄存器区(即最上面的那个区,标志位下面)的右下脚有一个类似:"ds:xxxxxxxx=xxxxxxxx"的字样,时隐时现,并不断变化,不知是干什么用的,请指教,不胜感激!!!!!!!!
: o/ K1 N. X0 ^2 O& x答: 3 O! r3 S9 r$ B1 {5 F" l
①右下角显示的那个是当前指令要操作的内存的地址及内容 。
7 s$ W5 X, T9 ~! e% q$ klea指令表示取有效地址,第4个是把"edx-02"的值送给eax。 5 \. j$ q: L% }5 B) f1 b" N9 H. d
②+ J$ {' s. ?, V/ T% f3 o, r/ H% Y
1,压栈024c1100值的双字 + ]6 z4 J) b: j# K9 M+ G( S; d F
2,eax-ebp+14的有效值,不保留值,主要看标志位。 % l- N! L) J# z I
3,字节型eax-46,看标志位 & v9 k( p/ h$ O! q; L3 Q
4,把edx-02的有效值给eax " K+ _# o: ?/ B! ]- L
5,edx+8处值作为地址,此地址的值给ecx * B, a! q% R M" [% C
15、问:能否推荐几本书?
5 r$ I& Z D& C5 `4 a3 n. t& P答: f) ^. x! r( q. c5 F
1、《Win95系统编程奥秘》在这里:http://www.multimania.com/mpietreks2/
K# N. R2 h D" _. }3 `# H c2、《Thinking in C++》:http://www.bruceeckel.com/ThinkingInCPP2e.html 7 C, \6 \. e( w
3、《Art of ASM》简直是汇编大全,http://win32asm.cjb.net或 http://personales.com/eeuu/arizona/Aesculapius/ebooks.html 或http://huizen.dds.nl/~books/。 4 r: H. l8 p! |! j. ]
4、 http://proxy.spaceproxy.com/-_-http://personales.com/eeuu/arizona/Aesculapius/files.html
3 g! E+ E+ M! Z$ m) F5、
0 L Q6 P2 W- J* w16、问:我是初学者。用softice拦下后。f12转到那个领空。但那个领空有什么特征?怎样看?我不明白。 以hiew为例。我试了很多次。f12从头按到尾都看不到哪里标着hiew的。 1 X4 Y9 w3 @5 ?8 R
答:你换个图形界面的windows程序试试,不要用hiew,f12并不是转到那个领空,F12是跳出子程序,如:
% X. M8 V: e. C9 _mov eax,1
# b( } I) i# r2 Z3 o" yinc eax
z) n, v5 l* A& b' Tret---------你在这段程序中按F12,就跳出此子程序,从RET处返回到上一程序中去。你如多按F12就等于跳出多个子程序,其实你用F10也能达到这一目的,F10来到inc eax,再按F10,执行RET一行,结果和你按F12一样的,只是F12更省事。 t0 M. {0 b$ b, f- E# @. R3 K
领空是一形象说法,说明SOFTICE目前调试的程序代码是哪个程序的,一般会在SOFTICE屏幕下的三分之一处会有一光条线,中间有文件名,如:
# I: q" P/ J; @& R. W' L------------------------ACDSEE!CODE+???------------------------ : f* @5 X7 R$ N! s6 B
这表明目前SOFTICE是在ACDSEE程序的代码处,是ACDSEE.EXE不是ACDSEE.DLL就不知了,要具体分析 : N0 X) O7 ^4 z/ L" T9 t
( ?3 m) x' v: W |