|
来源:看雪学院 , i# `" r4 |) Z1 \! \
4 {% j% u4 p8 Z; B( c 2 [0 G9 x, d# R3 T8 ]2 A8 G, S
5 P5 R8 w) m6 C" l. P
% ?/ M' w! X4 @% d4 c| 我系统是win9x,每次SOFTICE都自动装载,在windows下一按CTRL+D自动激活它,有什么办法解决? | 2 Z* U$ i: @2 W% n! K6 K9 G
- f7 A2 N* h7 l# h& s
| 这是SOFTICE安装时默认时改变了AUTOEXEC.BAT,自动加了一行wince.exe。每次系统启动时自动运行AUTOEXEC.BAT时将SOFTICE装载,你只要去掉这一行,问题就解决了。在你需要用SOFTICE时,在纯DOS环境下,在SOFTICE目录执行winice.exe文件即可装载。你也可自建一批处理命令来在纯DOS下装载SOFTICE。 | ' I# z8 ~/ G) j, M! p7 t! O' _0 I
2 X: f! T# U. q1 o
5 [% W n l/ O2 o9 Y+ X
6 U0 [ |. a2 j
3 K5 i6 P# W( {( V7 M2 d. S7 r. ^
| 2、如何知道软件是被什么加的密? | 5 a3 e2 l5 {! Z2 e0 i; {- B3 i
' s( y+ a8 w5 p* x0 p! c' `
| 用TYP或GetTyp侦测文件类型或用procdump查看文件的section就可以知道用什么加密 . |
1 ?; V' e+ R8 q# b! [" G7 m! y1 {% `- k/ o2 L
6 r; b1 E3 y r3 M- p( d8 L0 a
( M( U! |/ b9 G' [
! G3 z$ R# L9 ^| 3、经常看到脱壳时下命令bpx loadlibrarya, 下命令后SOFTICE告知未定义,我的SOFTICE怎么拦不住? | ) M5 `- i% e7 M
: r3 [, O3 }7 f3 ^! t| 在 softice 的目录下有一个文件叫 winice.dat 1 T) n$ `$ _! G5 A# k7 l
其实是个文本文件,将这文件的最后几行把他改成如下 :3 @2 y) N" q5 v( v3 b% m; Z
前面有分号的就是注解,把后面有 *32.dll 的方号去掉就行了 9 @' ]) c9 J; V+ N0 ~
顺便加上 vb5, vb6 的 dll, 也可拦 vb 的 function 了 ; Q: C% \% e" i& T
EXP=c:\windows\system\kernel32.dll $ @, }4 Q" v- Y0 L2 ~1 j' q" z
EXP=c:\windows\system\user32.dll
8 J4 t9 p3 w* ]; K$ R& x. ?EXP=c:\windows\system\gdi32.dll 4 @8 |; A7 a) H8 o4 S$ {: T
EXP=c:\windows\system\comdlg32.dll
, `5 }) ] [" A: Q) XEXP=c:\windows\system\shell32.dll
# V7 @0 p" J( c; ^$ nEXP=c:\windows\system\advapi32.dll % G' x3 V. _8 t1 i( Q7 Z
EXP=c:\windows\system\shell232.dll
9 e+ L3 F- y% T3 `EXP=c:\windows\system\comctl32.dll
0 p9 \$ e# P9 q4 i8 L;EXP=c:\windows\system\crtdll.dll 0 f1 E8 i( V0 g
;EXP=c:\windows\system\version.dll
$ p) `( E: R/ d5 w4 uEXP=c:\windows\system\netlib32.dll # d) O2 @2 R+ x1 a& ?8 c4 _7 `
;EXP=c:\windows\system\msshrui.dll
( ~' }6 H( n( a+ o" U D: ZEXP=c:\windows\system\msnet32.dll
4 [. s4 B9 `. A4 V/ D2 X! ~4 lEXP=c:\windows\system\mspwl32.dll
! y; h. _5 I2 `! M# F9 W;EXP=c:\windows\system\mpr.dll
* T5 L0 H* ^3 @7 N& W! { _1 t1 L0 cexp=c:\soft\95logo3\vb40032.dll " p% m/ b7 y3 A4 E% W, V
exp=c:\windows\system\msvbvm50.dll
1 m/ y0 V0 u4 j6 I2 x4 E1 Oexp=c:\windows\system\msvbvm60.dll |
+ `& U# r3 T2 n- L6 `4、我在调试软件时,经常看到寄存器是EAX、EBX、ECX或AX、BX、CX等,这是怎么回事?
! e( @% S3 Y4 N @ n因为win9x系统是一个16位和32位混合的操作系统,在这系统上能运行16位和32位的应用软件,所以你如调试不同位数的软件时,在寄存器上就反应出来了,EAX、EBX、ECX等是32位寄存器,而AX、BX、CX等是来表示16位寄存器。
& O( F% g7 p" ?9 S; t5、如何在TRW2000下拦截VB运行库中的函数? 1 y2 E) G, e1 c2 F( N
你要用TRW2000拦截Vb程序,需要用1.15版以上,将相应的VB运行库复制到TRW2000的DLL目录下,你也可用此法装载其它DLL文件。 7 _$ q) e! h& P3 @5 A/ Z4 w1 \
6、问:我只会用bpx hmemcpy来下断点,也看过看雪先生的教学文章,但对其他断点一直是一知半解,所以现在问题来了。 某些程序并没有输入注册码的地方,只在开始运行时弹出一个对话框,告诉你还剩多少天了,有延迟,这种软件一般怎么破解。如:LView pro、PaintShop pro等 - c! w' c- ~6 g: i) n. O$ d
答:! U4 z# o" F. [2 R7 w, \7 F( ~. F9 X
程序像一条竹竿,断点就是上面的结(当然是我们设定的)。选择一个好的断点有助于我们少走弯路。其实你说的情况,没有注册窗口,只有nag. 此时可能仍可以用bpx hmemcpy。此外,你可以采用其它方法。
, W3 x; m- [ }; _# A" A: x# V! L6 b以paint shop pro 5.01 evaluation为例。你用bpx hmemcpy是拦不住的。但还可以用如下几种方法。 . b# `( |2 ^: ~/ [' L( {
1. 当nag窗口出现后,激活trw or softice,下断点bpx lockmytask(或bpx destroywindow),回到psp.exe,按下start按钮后程序就会阻断。再用F10 或 F12走。直到你见到如下结构。 ' S S+ q6 S9 c- x! h' j' K( K
cs:******** call ****** <-- 用F10带过这一步后会有延迟画面。
0 C3 a5 R2 H" d# [$ s; `# a% |7 ycs:******** test al, al <-- 此时你在这行。程序确定你按下的是何按钮
: j( t6 }3 D' n ]1 B7 }这时按下F6,你就可以找到这个call前的code,并在其上下断点。若在这之前有跳转,如jz,jnz等,你就可以想办法使nag窗口不出现。
8 y9 Z8 x) C1 D, K2. 在这个nag窗口中,你会见到一些"版权宣言"及"你已经试用了*天,还有**天可以用"等的话。将之抄下,叫出trw 或softice,用
8 s9 C7 z1 ^& L* as 0 ffffffff "抄下的话"(trw) 或 & ~ v" }+ n' C/ _* V/ N9 v
s 0 L ffffffff "抄下的话"(SOFTICE)找到其调用的地址。下断点 bpm "找到的地址"来拦截,余下的同例1。 : {/ n* }5 b* j8 S
3. 若程序主窗口完全出现后再有延迟窗口出现,你可以在主窗口出现,而延迟窗口还未出现之际强行叫出trw(ctrl+N) 或softice(ctrl+D),然后一步步走,直到你确定了延迟窗口出现的那行code. 5 Q, R; j8 Y' J6 [
4. 如程序没有被压缩、加壳。你可以用w32dasm等静态反汇编方法,在string reference中找到延迟窗口中的话,在这代码前下断点拦截。
5 h1 G+ r( u- j5 G+ [4 p以上简单介绍了几种方法,不知对你是否有帮助。
/ e7 z6 r3 Z7 p( P2 f4 ]( |7、问:命令"bpx regqueryvalueexa if *(esp->8)>='Soft' do "d(esp->14)"我看不大懂,您能给讲一下吗?多谢。
+ u1 M8 x. A* _) P& d |& Z答:这个指令是一个复合指令,因为存注册码的键值是Softkey,其名字在[esp+8]中,其值在[esp+14]中.
( _& ], ]! \) W# \" p当其值等于或大于Soft(因为只允许4个字符,不能输全键名)时中断,就拦在读Softkey的那个Call.
% w& ]* H. }/ p8 P否则每次程序call regqueryvalueexa时都会被拦. 3 j0 |; n% C) @8 _ F
拦住后,显示[esp+14]的内容.至于详细用法,你可以参考softice的用户手册,其中会解释*,
; q' S& z/ I# H | M& E->等内容的. 开始时只要照做,以后提高了再弄明白原理就可以了.
! @9 l& |0 h* O) f8、问:为什么用W32DASM反汇编不能显示中文信息?
: w) _9 R, S& R* j9 X% V1 q答:wdasm是这样的,你可以用十六进制编辑器查找中文改为英文后再反汇编.
7 M" m; H9 S% t9 F0 Y9、问:请问如何修改TRW2000的字体颜色? 8 a# S5 P; \" k, d6 t- d
答:在TRW2000命令下用ver blue。 1 M% ?+ u2 h7 @- G! b/ U
10、问:介绍一下Launcher Generator补丁制作工具
1 U8 Y* }2 U9 C8 l: I2 E答:LGen的优点在于它可以控制何时Patch. 在运行它生成的Loader后,会出现一个提示窗,当按下OK按钮后,它才对目标程序做Patch.用法很简单,而且界面是GUI的.在http://ringzer0.cjb.net(它的老家,Tools项下)可以下载或者其它破解工具站点找. 3 r+ {0 _0 C! I: V
11、问:我在用hiew改如下代码时:4 @9 @( n1 e) a1 h3 p, J
00469206 e877d5f9ff call 00406782 * z" i4 O, V7 f2 h4 S7 |& d% V
0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx3 Z0 `, @, k+ x
我想屏蔽掉第一行:是否用 nop指令?我试了试,但修改后,发现第二行 变成了: 00469207 f4 hlt 是否对程序有影响,修改时必须保证源字节数? " M# \+ S j) Y9 R1 c0 l( b4 U' R
答:当然有影响,你修改必须保证nop的字节=e877d5f9ff的字节:
. T$ G8 E# U1 j* L 2 a* R* P; c. F# B: J4 m$ z, \
00469206 e877d5f9ff call 00406782 这行要5个nop来填充即: 9090909090代替e877d5f9ff : U) V' V' X, | N6 J2 b0 R s
你在hiew中连续改5行后,这一行就会又正常了0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx
5 j3 ^. ?% ]3 A/ Q12、问:我在破解时,追到一行这样的代码:
6 w8 j& p( X+ s' V( y4 N ]00406582 0f84f1000000 je 000406679
5 I [( I8 ]9 [! z' I我想改变程序的方向,je改为jne后是否可以,如不是该怎样,请指教。 ( a: x/ R7 s4 s0 e/ u% F
另,在win32dasm中,我想改反汇编后的代码,如何改?是否得用别的16位编辑器,怎么用?
- n/ K+ l2 {6 I; G以上两个问题,困惑了我很久,请各位多指教,不胜感激!!!!!!! ( y: p& b# ^* d1 V, _. J
答: 8 }. x+ e' ~! z; h' R0 M' X+ A1 u
①00406582 0f84f1000000 je 000406679 - h' H8 R$ ^: p T: ?5 ?& N9 M: M
你可在这一行,下A命令(进入小汇编状态),然后可输入你的正确的汇编代码,你在这可改为:jne 000406679
: P, c5 v. m3 `: l2 P但TRW2000 demo版,此命令不能用,你可用SOFTICE来完成这工作。 8 L1 L3 P. ] W. S0 V) h/ K4 ~7 L* I
但我推荐你可在这一行,在TRW2000或SOFTICE下命令:r fl z
! w/ ^' X B/ L这样就可改变跳转指令。
; E/ B! L9 ?) D: Ufl是标志寄存器,r命令修改此寄存器相关的值,具体参考SOFTICE手册和汇编书籍。 $ Q6 n/ Q, m4 R
在win32dasm中不能改变程序代码,你可用16进制工具来完成,推荐用hiew来完成。 8 a+ v/ @/ _# h: N" G
②也可以在trw中,用鼠标移动到愈修改代码出,直接修改,如75变74,即jnz->jz# t7 B9 Y* W5 y# { W
* w) {. `6 i. F1 h( P
③在trw中,下命令e adress [欲修改之代码] ! @* U, d0 n* ?, I1 B
14、问:在汇编语言中,"[]"的用法?如:
0 l2 O1 ?* I% I( }, c$ Q0 V' y- N1、push dword ptr [024c1100]
# P8 \( z/ a* |. b X2、cmp eax,[ebp+14]
& s) `% p4 |- |7 n; y3、cmp byte ptr [eax],46
" y( }% v4 s- _4、lea eax,[edx-02] 8 o' a/ i2 O$ x/ \/ i
5、mov ecx,[edx+08]
/ e& g6 v/ t" Y- o3 R' e其中"[]"里的内容,什么时候表示的是值,什么时候表示的是地址,为什么?第4个是不是把"edx-02"的值作为地址送给eax??? _8 W. f9 ^* b" I3 Z1 ]
另一个问题是:我发现在soft-ice中,在寄存器区(即最上面的那个区,标志位下面)的右下脚有一个类似:"ds:xxxxxxxx=xxxxxxxx"的字样,时隐时现,并不断变化,不知是干什么用的,请指教,不胜感激!!!!!!!! 8 O% z# S2 u* q: Q& _8 Y* \
答: % u9 z2 K# |- E3 N
①右下角显示的那个是当前指令要操作的内存的地址及内容 。# D- C8 w5 ~- i) F; C9 @
lea指令表示取有效地址,第4个是把"edx-02"的值送给eax。 " L) h6 a, q( Z2 ]( p
②* a8 u W2 O% v X \) P
1,压栈024c1100值的双字
- t$ z, @3 m4 t3 `$ @8 D" g T2,eax-ebp+14的有效值,不保留值,主要看标志位。
$ x9 V) k- f, Q2 I8 z0 s3,字节型eax-46,看标志位 ) f3 ~ {/ j {" X& I! j
4,把edx-02的有效值给eax & B1 t) D0 S7 s) p* w
5,edx+8处值作为地址,此地址的值给ecx
! T) ]: ~& C: G# ~: |6 W15、问:能否推荐几本书?
( n- S* u: @" d: g* b2 T答: 0 x1 T% b+ s# t# y: B, c
1、《Win95系统编程奥秘》在这里:http://www.multimania.com/mpietreks2/ ' l" A, {& L7 }7 |( h5 ? M' ?1 A
2、《Thinking in C++》:http://www.bruceeckel.com/ThinkingInCPP2e.html
& f% X3 F& ]5 H5 @6 Y4 Y/ i0 W3、《Art of ASM》简直是汇编大全,http://win32asm.cjb.net或 http://personales.com/eeuu/arizona/Aesculapius/ebooks.html 或http://huizen.dds.nl/~books/。 0 o1 N' C! @3 I# k: S& {. A
4、 http://proxy.spaceproxy.com/-_-http://personales.com/eeuu/arizona/Aesculapius/files.html
. d4 A& C, g# ^& G' }5、
5 w4 M! K, U9 p+ ?/ `16、问:我是初学者。用softice拦下后。f12转到那个领空。但那个领空有什么特征?怎样看?我不明白。 以hiew为例。我试了很多次。f12从头按到尾都看不到哪里标着hiew的。
$ M) w* {: T7 J; v8 S7 U, k Z+ F7 v答:你换个图形界面的windows程序试试,不要用hiew,f12并不是转到那个领空,F12是跳出子程序,如: 2 V: f, Y. Q7 X7 O; O
mov eax,1
j) f8 x9 B( E; ~& Cinc eax & a* d4 x, N# n. z! p4 t
ret---------你在这段程序中按F12,就跳出此子程序,从RET处返回到上一程序中去。你如多按F12就等于跳出多个子程序,其实你用F10也能达到这一目的,F10来到inc eax,再按F10,执行RET一行,结果和你按F12一样的,只是F12更省事。
8 V5 G1 z- b1 Z* a! w( @( _领空是一形象说法,说明SOFTICE目前调试的程序代码是哪个程序的,一般会在SOFTICE屏幕下的三分之一处会有一光条线,中间有文件名,如: 6 P2 [5 ^" C! Z+ Y( b
------------------------ACDSEE!CODE+???------------------------ 0 K( P5 N- d/ Z" W# D. w. x
这表明目前SOFTICE是在ACDSEE程序的代码处,是ACDSEE.EXE不是ACDSEE.DLL就不知了,要具体分析
; v3 O k* L# e: q& c/ R) o' M1 S: ^, Y/ h4 E5 g
|