QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2426|回复: 0
打印 上一主题 下一主题

软件破解常见问题

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-3-20 13:40 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

来源:看雪学院

1 H3 r2 m. N; I/ U% h4 ]9 c

1 ~' @2 a3 K3 l- \# A, Y7 p

* W8 A) q7 g' p/ _# J4 J; P1 v6 U& G8 I' u& e/ r, h/ D8 f* @. T4 k$ I) u+ p7 m) \" g, ]; d( e- m1 Q0 k" a' r: g& O
我系统是win9x,每次SOFTICE都自动装载,在windows下一按CTRL+D自动激活它,有什么办法解决?
这是SOFTICE安装时默认时改变了AUTOEXEC.BAT,自动加了一行wince.exe。每次系统启动时自动运行AUTOEXEC.BAT时将SOFTICE装载,你只要去掉这一行,问题就解决了。在你需要用SOFTICE时,在纯DOS环境下,在SOFTICE目录执行winice.exe文件即可装载。你也可自建一批处理命令来在纯DOS下装载SOFTICE。
) N1 l+ y# r, Z+ J : b, K" Q, _+ S* M/ Q7 {4 Q/ }+ z, f" p2 N" O0 s; l# P% ?4 L6 x1 i/ f9 V% A. |: a! z0 F" |( k8 y. `3 r; S0 D+ \) Z# u, |# U2 o, n. G6 l
2、如何知道软件是被什么加的密?
用TYP或GetTyp侦测文件类型或用procdump查看文件的section就可以知道用什么加密 .
6 Y- v4 ~$ W( b$ K" ^/ }% r. y1 T, T4 E- @3 q @" U # s- p6 Y5 z% H4 F- A" T2 F9 o! Q: x8 o, F' P) |7 c j E/ S6 l! C& r' \; c, R/ X+ a9 J! d$ z; T4 d5 C* T2 I8 h0 {
3、经常看到脱壳时下命令bpx loadlibrarya, 下命令后SOFTICE告知未定义,我的SOFTICE怎么拦不住?
在 softice 的目录下有一个文件叫 winice.dat % N) j, C$ p& k其实是个文本文件,将这文件的最后几行把他改成如下 : 2 O7 N# t" E/ O. H _前面有分号的就是注解,把后面有 *32.dll 的方号去掉就行了 8 M+ h: [, ^/ x# D' w" }顺便加上 vb5, vb6 的 dll, 也可拦 vb 的 function 了 ' X4 Z) {' H# s* P0 N

EXP=c:\windows\system\kernel32.dll 1 l: V' R$ Y( y* B$ }: { EXP=c:\windows\system\user32.dll * S& _- d# R @2 M EXP=c:\windows\system\gdi32.dll ( s S! J/ c( l t* |EXP=c:\windows\system\comdlg32.dll / O* ]+ x0 U7 O w! X2 W8 N; I: UEXP=c:\windows\system\shell32.dll 5 y$ o S5 b/ F( f0 ]5 Q- v/ h+ hEXP=c:\windows\system\advapi32.dll ) E$ q. q5 r6 j% C4 c( p EXP=c:\windows\system\shell232.dll . x% A# J9 r) Z6 e8 n/ y EXP=c:\windows\system\comctl32.dll 4 m: w2 M1 v/ q; B ;EXP=c:\windows\system\crtdll.dll 3 d% D: m2 f/ {( \ ;EXP=c:\windows\system\version.dll # O# ~4 T+ q. s& i% }EXP=c:\windows\system\netlib32.dll , K/ @9 ]4 ~' z/ y;EXP=c:\windows\system\msshrui.dll 6 _/ t- _" T( }1 p+ T( w EXP=c:\windows\system\msnet32.dll ( M6 d# _; ?$ j& ~% r7 K* n" f( u3 REXP=c:\windows\system\mspwl32.dll & j" R" e# h1 x;EXP=c:\windows\system\mpr.dll " R' a$ B+ r" w2 ~ T9 W3 j+ kexp=c:\soft\95logo3\vb40032.dll 5 O5 @3 O: Q, |- ?8 O" s6 |1 } exp=c:\windows\system\msvbvm50.dll # b- m; ~1 U2 | exp=c:\windows\system\msvbvm60.dll

# T5 [8 p4 a, h& `0 S, L( n# B

4、我在调试软件时,经常看到寄存器是EAX、EBX、ECX或AX、BX、CX等,这是怎么回事? + z t5 G6 t9 M& F8 s因为win9x系统是一个16位和32位混合的操作系统,在这系统上能运行16位和32位的应用软件,所以你如调试不同位数的软件时,在寄存器上就反应出来了,EAX、EBX、ECX等是32位寄存器,而AX、BX、CX等是来表示16位寄存器。

@$ Q* w" I2 C" L

5、如何在TRW2000下拦截VB运行库中的函数?

" Q4 C$ v2 t9 ~9 v9 f

你要用TRW2000拦截Vb程序,需要用1.15版以上,将相应的VB运行库复制到TRW2000的DLL目录下,你也可用此法装载其它DLL文件。

% e" ^- R* Q3 l2 R# _2 G% N3 a

6、问:我只会用bpx hmemcpy来下断点,也看过看雪先生的教学文章,但对其他断点一直是一知半解,所以现在问题来了。 某些程序并没有输入注册码的地方,只在开始运行时弹出一个对话框,告诉你还剩多少天了,有延迟,这种软件一般怎么破解。如:LView pro、PaintShop pro等

& `7 A4 N$ S f1 c1 h5 I

答:- M; {( u; q* ~+ _0 c! p+ u 程序像一条竹竿,断点就是上面的结(当然是我们设定的)。选择一个好的断点有助于我们少走弯路。其实你说的情况,没有注册窗口,只有nag. 此时可能仍可以用bpx hmemcpy。此外,你可以采用其它方法。 , z( X. N; z( k5 @以paint shop pro 5.01 evaluation为例。你用bpx hmemcpy是拦不住的。但还可以用如下几种方法。 * ? N3 ~0 S8 s# z" l1. 当nag窗口出现后,激活trw or softice,下断点bpx lockmytask(或bpx destroywindow),回到psp.exe,按下start按钮后程序就会阻断。再用F10 或 F12走。直到你见到如下结构。 ; D2 F) ?# E3 r7 V) f- C cs:******** call ****** <-- 用F10带过这一步后会有延迟画面。 9 f$ w1 \0 C+ L( t$ @2 o cs:******** test al, al <-- 此时你在这行。程序确定你按下的是何按钮 ! o+ v/ w: g) N9 ?* a0 u 这时按下F6,你就可以找到这个call前的code,并在其上下断点。若在这之前有跳转,如jz,jnz等,你就可以想办法使nag窗口不出现。

9 s* Q) \! j" x4 t) N$ ^

2. 在这个nag窗口中,你会见到一些"版权宣言"及"你已经试用了*天,还有**天可以用"等的话。将之抄下,叫出trw 或softice,用 * I6 L8 J3 d P% t" Z4 b1 e; Ws 0 ffffffff "抄下的话"(trw) 或 ; m2 ^ J3 U! u* o( B: ys 0 L ffffffff "抄下的话"(SOFTICE)找到其调用的地址。下断点 bpm "找到的地址"来拦截,余下的同例1。

9 t/ R/ {$ o! |

3. 若程序主窗口完全出现后再有延迟窗口出现,你可以在主窗口出现,而延迟窗口还未出现之际强行叫出trw(ctrl+N) 或softice(ctrl+D),然后一步步走,直到你确定了延迟窗口出现的那行code.

1 ^+ N' w& p( X9 y) ^

4. 如程序没有被压缩、加壳。你可以用w32dasm等静态反汇编方法,在string reference中找到延迟窗口中的话,在这代码前下断点拦截。

4 y) I4 Q) H. b* f

以上简单介绍了几种方法,不知对你是否有帮助。

2 i# k- n- u, y! G- h

7、问:命令"bpx regqueryvalueexa if *(esp->8)>='Soft' do "d(esp->14)"我看不大懂,您能给讲一下吗?多谢。

# I$ d9 G) o. \9 {) c7 e

答:这个指令是一个复合指令,因为存注册码的键值是Softkey,其名字在[esp+8]中,其值在[esp+14]中. + h$ ?- X* S, K* S: g8 V) z9 \ 当其值等于或大于Soft(因为只允许4个字符,不能输全键名)时中断,就拦在读Softkey的那个Call. & i8 c1 k! n! f* C否则每次程序call regqueryvalueexa时都会被拦. 8 Q; S1 h8 S7 I0 F% T1 V9 J 拦住后,显示[esp+14]的内容.至于详细用法,你可以参考softice的用户手册,其中会解释*, 8 H" d* R7 i, L$ l h->等内容的. 开始时只要照做,以后提高了再弄明白原理就可以了.

8 o6 x& z5 n# \; ~, j% T1 ?

8、问:为什么用W32DASM反汇编不能显示中文信息?

3 a8 @# B* h8 J s% h

答:wdasm是这样的,你可以用十六进制编辑器查找中文改为英文后再反汇编.

\* v ?+ _! t. s) F

9、问:请问如何修改TRW2000的字体颜色?

( I8 j9 w2 h" R# g9 _9 [) ?

答:在TRW2000命令下用ver blue。

& \5 b% P7 F( N

10、问:介绍一下Launcher Generator补丁制作工具

2 L8 ~" K$ C# H& e) N

答:LGen的优点在于它可以控制何时Patch. 在运行它生成的Loader后,会出现一个提示窗,当按下OK按钮后,它才对目标程序做Patch.用法很简单,而且界面是GUI的.在http://ringzer0.cjb.net(它的老家,Tools项下)可以下载或者其它破解工具站点找.

$ m! ^9 M: P# f3 G8 m

11、问:我在用hiew改如下代码时:/ @" [8 Y! ]/ b0 I 00469206 e877d5f9ff call 00406782 , m" \0 e* V* z( l `3 M 0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx5 H. y% [; M; e) k 我想屏蔽掉第一行:是否用 nop指令?我试了试,但修改后,发现第二行 变成了: 00469207 f4 hlt 是否对程序有影响,修改时必须保证源字节数?

9 C, Y4 }$ p! A/ U! z- \' n6 |8 O5 w* w

答:当然有影响,你修改必须保证nop的字节=e877d5f9ff的字节:4 I: L1 A9 k/ ^# L8 P* |7 W7 H

( ], V- f) x, b: q7 M% I6 F

00469206 e877d5f9ff call 00406782 这行要5个nop来填充即: 9090909090代替e877d5f9ff

2 w' @& N/ X) [9 v6 U+ b

你在hiew中连续改5行后,这一行就会又正常了0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx

" d, @# q$ Q. J3 M

12、问:我在破解时,追到一行这样的代码5 J% l2 B8 [, @" \+ K C 00406582 0f84f1000000 je 000406679 & N3 L& ~+ @, z3 `& j 我想改变程序的方向,je改为jne后是否可以,如不是该怎样,请指教。 n2 @4 r2 Y( V5 m, N& U0 f另,在win32dasm中,我想改反汇编后的代码,如何改?是否得用别的16位编辑器,怎么用? + ?% e `$ W) v9 P7 J/ w* g ~ 以上两个问题,困惑了我很久,请各位多指教,不胜感激!!!!!!!

* L. R/ a- z: a+ m- V* y/ g

答:

6 V: }- m1 T+ J5 r7 J

①00406582 0f84f1000000 je 000406679 " n; D: A8 m! H你可在这一行,下A命令(进入小汇编状态),然后可输入你的正确的汇编代码,你在这可改为:jne 000406679 7 F& X& N- ?& m l) C, ]5 t4 N但TRW2000 demo版,此命令不能用,你可用SOFTICE来完成这工作。 : k3 T4 i/ w9 ~1 i但我推荐你可在这一行,在TRW2000或SOFTICE下命令:r fl z 8 r- b7 Q0 Y* O3 t4 y 这样就可改变跳转指令。 . w% v1 R5 J/ ~4 w0 f4 Q/ c( f fl是标志寄存器,r命令修改此寄存器相关的值,具体参考SOFTICE手册和汇编书籍。 ' i0 Q9 y4 l* S 在win32dasm中不能改变程序代码,你可用16进制工具来完成,推荐用hiew来完成。

+ J6 [2 Q4 ?$ V0 v7 B

②也可以在trw中,用鼠标移动到愈修改代码出,直接修改,如75变74,即jnz->jz . `+ l7 {% m/ A4 ]

+ y& H! V& D& T' r$ k! `1 I

③在trw中,下命令e adress [欲修改之代码]

) } ~' k4 R5 M7 l7 x; d

14、问:在汇编语言中,"[]"的用法?如: u* K \1 R0 z& q' R* b1、push dword ptr [024c1100] " e/ ]9 j" ?$ x5 K7 s; v' x7 I2、cmp eax,[ebp+14] 5 Q) D4 g( Y2 K! S3 E$ n/ O 3、cmp byte ptr [eax],46 1 u% N& P) \0 |( ^. |$ S% `. t4、lea eax,[edx-02] 6 t G4 j: Q! _" b* v) k) l) w 5、mov ecx,[edx+08] ' t& F2 @, z3 ~1 _* z4 z* h; g其中"[]"里的内容,什么时候表示的是值,什么时候表示的是地址,为什么?第4个是不是把"edx-02"的值作为地址送给eax???

& E' {2 V8 i6 d$ |; u5 s

另一个问题是:我发现在soft-ice中,在寄存器区(即最上面的那个区,标志位下面)的右下脚有一个类似:"ds:xxxxxxxx=xxxxxxxx"的字样,时隐时现,并不断变化,不知是干什么用的,请指教,不胜感激!!!!!!!!

. l# T" G* C( O" q$ L

答:

% ~/ z6 i6 _8 o, ]+ f& U4 v5 z1 @0 x

①右下角显示的那个是当前指令要操作的内存的地址及内容 。 2 o. r; l( b5 V& _; `( Alea指令表示取有效地址,第4个是把"edx-02"的值送给eax。

4 s: s9 b3 S g/ ~# _4 s

( K2 _; m5 T9 I3 r* K2 E 1,压栈024c1100值的双字 & O1 m8 V# a: X( Y2 ~' b* F! [% G7 }6 R2,eax-ebp+14的有效值,不保留值,主要看标志位。 ; [, ]8 S/ w; p: E4 H3 l' @/ k3,字节型eax-46,看标志位 . Q& U! }+ H4 @* ] 4,把edx-02的有效值给eax 9 ? x0 J6 X) @: d' y+ y 5,edx+8处值作为地址,此地址的值给ecx

2 w4 ?2 j+ }% A' ~" e3 a

15、问:能否推荐几本书?

# R3 j9 [$ o' n. M6 q/ b# ^# f# V

答:

& u' E5 S! t {. |

1、《Win95系统编程奥秘》在这里:http://www.multimania.com/mpietreks2/ 9 I) |7 H- w, Z; ^2 c, H2、《Thinking in C++》:http://www.bruceeckel.com/ThinkingInCPP2e.html ( P$ u) G) q' w/ B' Q4 b 3、《Art of ASM》简直是汇编大全,http://win32asm.cjb.net或      http://personales.com/eeuu/arizona/Aesculapius/ebooks.html 或http://huizen.dds.nl/~books/。 ; \) r7 j& L: k$ A7 F9 r( V) ?; A4、 http://proxy.spaceproxy.com/-_-http://personales.com/eeuu/arizona/Aesculapius/files.html ) ]8 s& a f' D1 D, N 5、

. q) M% }8 C* N5 d; e/ N

16、问:我是初学者。用softice拦下后。f12转到那个领空。但那个领空有什么特征?怎样看?我不明白。 以hiew为例。我试了很多次。f12从头按到尾都看不到哪里标着hiew的

! s0 P9 W5 ~; e# z" L

答:你换个图形界面的windows程序试试,不要用hiew,f12并不是转到那个领空,F12是跳出子程序,如: 5 x' Z" F- Y# w8 r. Y6 q% @mov eax,1 : _4 a, p, I* }7 T1 h9 [( u8 g inc eax 0 V2 Y: h9 v; D3 C5 k! Fret---------你在这段程序中按F12,就跳出此子程序,从RET处返回到上一程序中去。你如多按F12就等于跳出多个子程序,其实你用F10也能达到这一目的,F10来到inc eax,再按F10,执行RET一行,结果和你按F12一样的,只是F12更省事。

% F j2 X' B; q0 T' P" |

领空是一形象说法,说明SOFTICE目前调试的程序代码是哪个程序的,一般会在SOFTICE屏幕下的三分之一处会有一光条线,中间有文件名,如: $ ^9 k' k2 O R- F% v2 C6 Q, Z) Y9 O: u ------------------------ACDSEE!CODE+???------------------------

( n" ~) m- G1 x- ~* S; h

这表明目前SOFTICE是在ACDSEE程序的代码处,是ACDSEE.EXE不是ACDSEE.DLL就不知了,要具体分析

3 G, l3 r* h1 Q% T: Y+ S: ~. U

4 d, b7 X6 m) E: }- A: T

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-20 00:43 , Processed in 0.437284 second(s), 52 queries .

回顶部