|
来源:看雪学院
) `+ f q6 s* ]; G( @7 ]: S0 E5 d& X. q0 v- A0 D5 R
. E# u- D$ \$ g J# t% K
# \& N7 ]2 W F$ n/ Z( ~8 q( Q# f+ l' j, @
| 我系统是win9x,每次SOFTICE都自动装载,在windows下一按CTRL+D自动激活它,有什么办法解决? | - [6 ?% R) F' |: ]8 B# w$ f# C
, a/ E6 a. Z; q" N3 E( j1 y6 e| 这是SOFTICE安装时默认时改变了AUTOEXEC.BAT,自动加了一行wince.exe。每次系统启动时自动运行AUTOEXEC.BAT时将SOFTICE装载,你只要去掉这一行,问题就解决了。在你需要用SOFTICE时,在纯DOS环境下,在SOFTICE目录执行winice.exe文件即可装载。你也可自建一批处理命令来在纯DOS下装载SOFTICE。 | 1 p/ J7 ], k# {4 U8 I
: u$ l0 d4 K# [& J
) t9 u2 Y9 n0 g' V. Y: H+ C
8 c! _. B3 K1 A8 u( L+ T9 V" ~; ~& Y" i7 q7 L% d9 I
| 2、如何知道软件是被什么加的密? |
1 T6 Q, U; r' G: ` t
7 G$ ^+ [0 N$ W| 用TYP或GetTyp侦测文件类型或用procdump查看文件的section就可以知道用什么加密 . | 4 d; I0 t% _1 @9 C6 `4 q( K2 \
3 o6 s' K9 p: w4 B8 c v8 Q0 l
U" L; K! s% X5 \
9 j/ O* Z: r! X# t4 P
6 o( H! \2 z' e+ z9 z| 3、经常看到脱壳时下命令bpx loadlibrarya, 下命令后SOFTICE告知未定义,我的SOFTICE怎么拦不住? |
8 H/ m5 L! E4 C) R
1 v1 \: @0 m1 M- N* a6 q' x0 J6 o| 在 softice 的目录下有一个文件叫 winice.dat & S; H5 w1 z) X2 q( l8 z7 f
其实是个文本文件,将这文件的最后几行把他改成如下 :7 j V/ Y, U/ W& f# S
前面有分号的就是注解,把后面有 *32.dll 的方号去掉就行了
) C% ^- |2 \4 D0 }顺便加上 vb5, vb6 的 dll, 也可拦 vb 的 function 了 ( y/ i. D# s5 a. m! _! G* V! B
EXP=c:\windows\system\kernel32.dll * C4 b) B9 \; M2 O* l# B
EXP=c:\windows\system\user32.dll
: S: W/ J0 G* B+ zEXP=c:\windows\system\gdi32.dll 3 e! ]6 N8 L0 Y- z( b: O: |4 E$ a
EXP=c:\windows\system\comdlg32.dll , S, `9 y' `9 R- _; d( A
EXP=c:\windows\system\shell32.dll
, r/ M0 M! b' l7 L: z' M& vEXP=c:\windows\system\advapi32.dll 1 u8 g2 j" Q( ^6 A/ M4 }. \" v& ~
EXP=c:\windows\system\shell232.dll
# I& A+ F# u- ~8 h% CEXP=c:\windows\system\comctl32.dll 6 ]" i/ d' N) D
;EXP=c:\windows\system\crtdll.dll
9 @6 z5 P% q, u1 K$ U! z. x;EXP=c:\windows\system\version.dll . f3 E& v2 W# n
EXP=c:\windows\system\netlib32.dll
! @- z! g* l g7 A( O! J;EXP=c:\windows\system\msshrui.dll
e1 S6 Y) |3 d* w* T- U6 WEXP=c:\windows\system\msnet32.dll
0 W6 r2 P! Y" h; nEXP=c:\windows\system\mspwl32.dll
5 n3 H, e4 [) E1 B- i;EXP=c:\windows\system\mpr.dll
0 h/ R6 R z ~. D0 o3 }1 uexp=c:\soft\95logo3\vb40032.dll - n+ Q+ N5 U" {, N$ t* ]
exp=c:\windows\system\msvbvm50.dll . v. U7 B3 B5 g8 r) [- e- m
exp=c:\windows\system\msvbvm60.dll | - ?8 K* R9 K9 C# t' Z5 V
4、我在调试软件时,经常看到寄存器是EAX、EBX、ECX或AX、BX、CX等,这是怎么回事?
' g% a( [! d* \8 ?6 [) c# P* W% L因为win9x系统是一个16位和32位混合的操作系统,在这系统上能运行16位和32位的应用软件,所以你如调试不同位数的软件时,在寄存器上就反应出来了,EAX、EBX、ECX等是32位寄存器,而AX、BX、CX等是来表示16位寄存器。 6 p$ C8 v* Z& k' R+ ]* _
5、如何在TRW2000下拦截VB运行库中的函数? ; K4 I0 z2 e( r% W( i) r9 A1 y
你要用TRW2000拦截Vb程序,需要用1.15版以上,将相应的VB运行库复制到TRW2000的DLL目录下,你也可用此法装载其它DLL文件。
2 k% {% J9 L( G3 Y4 g$ @! |6、问:我只会用bpx hmemcpy来下断点,也看过看雪先生的教学文章,但对其他断点一直是一知半解,所以现在问题来了。 某些程序并没有输入注册码的地方,只在开始运行时弹出一个对话框,告诉你还剩多少天了,有延迟,这种软件一般怎么破解。如:LView pro、PaintShop pro等
5 a8 @% ]0 H( o' e% v答:: ?) M+ a8 o, _
程序像一条竹竿,断点就是上面的结(当然是我们设定的)。选择一个好的断点有助于我们少走弯路。其实你说的情况,没有注册窗口,只有nag. 此时可能仍可以用bpx hmemcpy。此外,你可以采用其它方法。 2 {3 D7 L) R& U1 V# N* ?
以paint shop pro 5.01 evaluation为例。你用bpx hmemcpy是拦不住的。但还可以用如下几种方法。 - i4 B% r- k$ ^7 o6 e2 t
1. 当nag窗口出现后,激活trw or softice,下断点bpx lockmytask(或bpx destroywindow),回到psp.exe,按下start按钮后程序就会阻断。再用F10 或 F12走。直到你见到如下结构。
, m7 s% ~9 l* d, z3 l0 H3 [1 ncs:******** call ****** <-- 用F10带过这一步后会有延迟画面。 - J3 q( b+ j. w
cs:******** test al, al <-- 此时你在这行。程序确定你按下的是何按钮
; s+ g1 [6 F% ]这时按下F6,你就可以找到这个call前的code,并在其上下断点。若在这之前有跳转,如jz,jnz等,你就可以想办法使nag窗口不出现。
' F% a* c, u% R8 o, Y9 M2. 在这个nag窗口中,你会见到一些"版权宣言"及"你已经试用了*天,还有**天可以用"等的话。将之抄下,叫出trw 或softice,用
5 Y8 Y, P( y4 X( E# Cs 0 ffffffff "抄下的话"(trw) 或 9 L5 O8 L: J7 V) B4 [% b2 j! e
s 0 L ffffffff "抄下的话"(SOFTICE)找到其调用的地址。下断点 bpm "找到的地址"来拦截,余下的同例1。
4 _+ U# b% Z+ B; z1 O0 d. N3. 若程序主窗口完全出现后再有延迟窗口出现,你可以在主窗口出现,而延迟窗口还未出现之际强行叫出trw(ctrl+N) 或softice(ctrl+D),然后一步步走,直到你确定了延迟窗口出现的那行code. 2 v5 b% Q3 _5 C8 M5 R; c* ]
4. 如程序没有被压缩、加壳。你可以用w32dasm等静态反汇编方法,在string reference中找到延迟窗口中的话,在这代码前下断点拦截。
- W8 l4 S2 ?7 Y2 C/ d: T" f以上简单介绍了几种方法,不知对你是否有帮助。 8 L9 M& K4 t; o6 i
7、问:命令"bpx regqueryvalueexa if *(esp->8)>='Soft' do "d(esp->14)"我看不大懂,您能给讲一下吗?多谢。
( S2 b! e) F# ]: k* S) r答:这个指令是一个复合指令,因为存注册码的键值是Softkey,其名字在[esp+8]中,其值在[esp+14]中.
) b. p5 C8 o' x2 g4 K% \! T$ k当其值等于或大于Soft(因为只允许4个字符,不能输全键名)时中断,就拦在读Softkey的那个Call.
( [ {, Z" j# w否则每次程序call regqueryvalueexa时都会被拦.
" i- D$ m k: Y- h7 v拦住后,显示[esp+14]的内容.至于详细用法,你可以参考softice的用户手册,其中会解释*,
- S9 x/ u1 o+ j->等内容的. 开始时只要照做,以后提高了再弄明白原理就可以了. ; v1 a/ m, y4 c) u9 E+ R" w/ }
8、问:为什么用W32DASM反汇编不能显示中文信息?
' ~4 E! q$ `, N' I4 ]# h) B0 ]- ^答:wdasm是这样的,你可以用十六进制编辑器查找中文改为英文后再反汇编.
5 A8 B9 X# b0 o* H6 {+ S* Q9、问:请问如何修改TRW2000的字体颜色?
, w# g8 T1 }; s4 K& Q ?答:在TRW2000命令下用ver blue。 9 I; _6 j- j8 v$ i; V
10、问:介绍一下Launcher Generator补丁制作工具
/ j! d- g$ Q5 N答:LGen的优点在于它可以控制何时Patch. 在运行它生成的Loader后,会出现一个提示窗,当按下OK按钮后,它才对目标程序做Patch.用法很简单,而且界面是GUI的.在http://ringzer0.cjb.net(它的老家,Tools项下)可以下载或者其它破解工具站点找. ; v; |1 S! Q6 S8 B2 M
11、问:我在用hiew改如下代码时:
" j3 F) r' K3 _- c* A/ Z/ Y" x: O2 t00469206 e877d5f9ff call 00406782 ' D$ }$ R4 o* a. \0 E$ c
0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx
l: `: v; e0 @! p# }3 Z我想屏蔽掉第一行:是否用 nop指令?我试了试,但修改后,发现第二行 变成了: 00469207 f4 hlt 是否对程序有影响,修改时必须保证源字节数? " H S1 M3 v5 t$ J7 d2 g9 n1 l# @
答:当然有影响,你修改必须保证nop的字节=e877d5f9ff的字节:
4 T$ _9 W5 d& \8 Q; g2 X5 J , e* P" s9 |' V1 P8 r3 y
00469206 e877d5f9ff call 00406782 这行要5个nop来填充即: 9090909090代替e877d5f9ff
# T- g" m7 u. B7 q! ?你在hiew中连续改5行后,这一行就会又正常了0046920b 391d3c844e00 cmp dword ptr [004e843c],ebx
S. M3 W4 `# C3 B% p12、问:我在破解时,追到一行这样的代码: . ? N$ V. c3 u, L
00406582 0f84f1000000 je 000406679 6 L: g7 l1 F& J! [' s
我想改变程序的方向,je改为jne后是否可以,如不是该怎样,请指教。 1 t" C" f, z/ N
另,在win32dasm中,我想改反汇编后的代码,如何改?是否得用别的16位编辑器,怎么用? 1 {+ |! M) E& x
以上两个问题,困惑了我很久,请各位多指教,不胜感激!!!!!!!
! i: V, O; o( R. q' m# l+ w) H答: : m7 N% F' x% Z9 q3 ^: w) @( F
①00406582 0f84f1000000 je 000406679 5 E! C4 {* D* l4 v6 I
你可在这一行,下A命令(进入小汇编状态),然后可输入你的正确的汇编代码,你在这可改为:jne 000406679
& @% C7 \$ A2 {2 V/ J但TRW2000 demo版,此命令不能用,你可用SOFTICE来完成这工作。 ( N \+ g* X3 H* s, H0 f8 I9 `
但我推荐你可在这一行,在TRW2000或SOFTICE下命令:r fl z # t" X2 _, j% I4 T+ P2 I
这样就可改变跳转指令。
! v$ e K% S0 \2 |- b% Pfl是标志寄存器,r命令修改此寄存器相关的值,具体参考SOFTICE手册和汇编书籍。 1 P# o: w2 Q0 p9 s1 t$ g1 q8 ~
在win32dasm中不能改变程序代码,你可用16进制工具来完成,推荐用hiew来完成。
# H7 [$ S2 y" f' I) i②也可以在trw中,用鼠标移动到愈修改代码出,直接修改,如75变74,即jnz->jz
5 L& B# e, O1 f - ?4 V/ I6 h* W9 t; v. z( ~1 b
③在trw中,下命令e adress [欲修改之代码]
$ u9 F6 Q: E: `, E1 v% b( Q$ h' _14、问:在汇编语言中,"[]"的用法?如: - @0 u! R" C; S; A+ V1 y
1、push dword ptr [024c1100]
3 O0 y+ G, W! q7 B2、cmp eax,[ebp+14]
+ u$ S. b( |, N' Y. O/ }3、cmp byte ptr [eax],46
* m% q. q; ]2 O6 `. [4、lea eax,[edx-02]
3 V) x7 n. g2 k0 A5、mov ecx,[edx+08] $ }8 b- W2 D0 t% H# u( G @. f
其中"[]"里的内容,什么时候表示的是值,什么时候表示的是地址,为什么?第4个是不是把"edx-02"的值作为地址送给eax??? 7 G; ], X1 ^* Z0 R# K, N
另一个问题是:我发现在soft-ice中,在寄存器区(即最上面的那个区,标志位下面)的右下脚有一个类似:"ds:xxxxxxxx=xxxxxxxx"的字样,时隐时现,并不断变化,不知是干什么用的,请指教,不胜感激!!!!!!!! 3 g t; `& b# q) g
答:
" ]! C. ?& a; ~①右下角显示的那个是当前指令要操作的内存的地址及内容 。2 L% @& y H" A0 g( U8 d* _1 v
lea指令表示取有效地址,第4个是把"edx-02"的值送给eax。 ; h2 C+ o& ?; Q: G: I
②% S& x7 }( i$ {5 x
1,压栈024c1100值的双字
( h9 V8 x% s2 ^2,eax-ebp+14的有效值,不保留值,主要看标志位。 # p7 f$ }- g! I' N2 ?9 s7 w& E
3,字节型eax-46,看标志位 ) {; q4 q2 p& y6 w2 M+ a
4,把edx-02的有效值给eax " s1 s0 w3 T5 }
5,edx+8处值作为地址,此地址的值给ecx * u( g% o& A: Z6 Z2 ^0 A
15、问:能否推荐几本书?
w/ ^7 t# ^$ Y+ c8 b6 _答: : [ ] `- q' ^# [+ \8 A$ |
1、《Win95系统编程奥秘》在这里:http://www.multimania.com/mpietreks2/
' D- w: R! z( H( n/ A. ?2、《Thinking in C++》:http://www.bruceeckel.com/ThinkingInCPP2e.html
' P6 F1 V4 n/ J3 {3、《Art of ASM》简直是汇编大全,http://win32asm.cjb.net或 http://personales.com/eeuu/arizona/Aesculapius/ebooks.html 或http://huizen.dds.nl/~books/。 ) K, m+ j! L! x4 j4 Q; J
4、 http://proxy.spaceproxy.com/-_-http://personales.com/eeuu/arizona/Aesculapius/files.html p1 ]5 X \2 }
5、
5 a2 s/ ] f; N8 n7 A16、问:我是初学者。用softice拦下后。f12转到那个领空。但那个领空有什么特征?怎样看?我不明白。 以hiew为例。我试了很多次。f12从头按到尾都看不到哪里标着hiew的。 / Z+ u- h2 j9 M3 k
答:你换个图形界面的windows程序试试,不要用hiew,f12并不是转到那个领空,F12是跳出子程序,如:
# x7 N& \+ ~: D4 h6 z4 M2 Xmov eax,1 ) g( r2 x9 e% |9 D, U9 y9 ~2 Y
inc eax
3 T+ Q* W: H& c( e0 G3 U7 gret---------你在这段程序中按F12,就跳出此子程序,从RET处返回到上一程序中去。你如多按F12就等于跳出多个子程序,其实你用F10也能达到这一目的,F10来到inc eax,再按F10,执行RET一行,结果和你按F12一样的,只是F12更省事。
. W: T/ j4 ]8 F b1 a- f8 F. |) Y0 Z领空是一形象说法,说明SOFTICE目前调试的程序代码是哪个程序的,一般会在SOFTICE屏幕下的三分之一处会有一光条线,中间有文件名,如:
Z$ V5 O0 M$ X. y------------------------ACDSEE!CODE+???------------------------ j4 z4 \* W5 C2 A/ ?
这表明目前SOFTICE是在ACDSEE程序的代码处,是ACDSEE.EXE不是ACDSEE.DLL就不知了,要具体分析
0 N( S, K' N* }1 U% p4 i G9 G# Y, S5 f
|