|
来源:看雪学院 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& G
8 I' u& e/ r, h/ D8 f* @. T4 k| 我系统是win9x,每次SOFTICE都自动装载,在windows下一按CTRL+D自动激活它,有什么办法解决? |
$ I) u+ p7 m) \" g, ]; d( e- m1 Q0 k" a' r: g& O
| 这是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/ Q
7 {4 Q/ }+ z, f" p2 N" O0 s; l# P
% ?4 L6 x1 i/ f9 V% A. |: a! z0 F" |( k8 y. `3 r
| 2、如何知道软件是被什么加的密? |
; S0 D+ \) Z# u
, |# U2 o, n. G6 l| 用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" T
2 F9 o! Q: x8 o, F
' P) |7 c j E/ S6 l! C| 3、经常看到脱壳时下命令bpx loadlibrarya, 下命令后SOFTICE告知未定义,我的SOFTICE怎么拦不住? |
& r' \; c, R/ X+ a9 J! d$ z; T4 d5 C* T2 I8 h0 {
| 在 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" L5、如何在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- h7、问:命令"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) F9、问:请问如何修改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 m11、问:我在用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 F00469206 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 |