首页
社区
课程
招聘
常见问题(FAQ)[2008.2更新]
发表于: 2004-5-12 20:17 425782

常见问题(FAQ)[2008.2更新]

2004-5-12 20:17
425782
标 题: 论坛常见问题(FAQ)[2006.9.3更新]
作 者: kanxue
时 间: 2004-05-12,20:17
链 接: http://bbs.pediy.com/showthread.php?threadid=769

新手入门必读(www.pediy.com)
一. 论坛规则

 看雪技术论坛是一个纯技术论坛,我们欢迎你从技术角度阐述问题。我们的目标是让来这里的每一个人,成为计算机高手!这里不是提供注册码的场所!!不是嬉戏灌水的地方!!为了避免一些不愉快的事情发生, 提问前看一下论坛规则:
[QUOTEd=论坛规则]
1. 如是新手,请先看一下各分论坛置顶的常见问题
   因为一些常见问题,会在里面找到答案

2. 提问前先搜索本论坛或用Google引擎找找答案
   一些问题大家可能己讨论过了,你搜索一下论坛,很快能找到答案,可以节约你与大家的时间

3. 谨慎选择相关主题的论坛
   将相关的帖发到相关论坛,你能更快得到答复,也能使论坛更加规范。不符合主题的帖我们会移动。如果主题定位不清楚,可以发到『软件调试论坛』分论坛,这是一个综合性的论坛

4. 使用含义丰富,描述准确的标题
   标题直接反应帖子内容,这样,他人通过标题就能判断这问题是不是自己感兴趣的或能答复的

5. 勿发重复帖
   论坛对这点处理是很严格的,你即使发了重复帖,也会被锁帖,若再犯可能会被封ID

6. 勿点将
   许多新人喜欢点将,以为点将自己的问题能很快被答复。殊不知,你一点将,就将其他人排拆在外。同时,点将也会对管理人员和他人产生压力。为了能让论坛气氛轻松些,论坛是禁止点将的!你将问题提出,只要能回答,大家会给你答复的。

7. 别要求私下答复
   不要随便留下Email或QQ,要求别人私下与你联系

8. 问题解决后,加个简短说明
   加个说明或说声谢谢,对你来说不过是几秒钟的时间,但这意味着这是你对帮助者的尊敬,以后再来提问,大家还是会乐意帮助你的。

9. 不得发请求破解、请求脱壳、有偿交易帖
  论坛对此类帖处理最严格!有偿破解帖,出现一次直接封ID!请求破解帖视情况,可能会给一次机会。

10.散发注册机或破解补丁
   看雪论坛能从2000年走到今天,很重要的一点就是不散发注册机和破解程序 (加解密辅助工具除外)。欢迎你来这交流技术。

11.不欢迎要求留Email的跟帖方式散发你的资料或作品  
   有些朋友有什么好东西会说需要者留下Email,这样做没什么必要,论坛有附件功能,有好东西直接上传。

关于目标软件问题

【公告】看雪论坛对于所涉及到目标软件的管理
http://bbs.pediy.com/announcement.php?f=20&a=81


    其它事项:如果是学习笔记,请说明目标软件的下载出处,如果能提供注册机源代码我们很欢迎,但请不要提供编译后的注册机程序,否则要删贴的。还有严禁抄袭他人作品,如果是转帖,请注明。

我们欢迎这样的帖子:

    当你遇到问题,并难以解答时,把遇到的详细情况写出来,我们大家集体解答。
    当你小有成绩,并对自己的成果深有感触时,把你的心情写出来,我们大家一起分享快乐
    当你完成一篇学习笔记(特别是第一篇)时,请你公布出来,我们大家共同进步
    当你已经成为大虾,回顾菜鸟时代,酸甜苦辣,请你写一写,鼓舞一下还不能展翅翱翔的菜鸟的士气。
    其中好的帖子我们还会列入精品

我们不欢迎这样的帖子:

    一上来就问**软件如何pj?**外挂的注册码是多少?这种人好*懒*,只会享用他人果实。
    一上来就问怎么盗password,怎么盗QQ,怎么用Trojan。这种人品德不好,说严重点是道*败*。
    一上来就用攻击他人的言语,这里严禁漫骂!!严禁相互攻击!!
    这类帖子的命运将是――

[/QUOTEd]
二. 为你指路

      很多人都想学习解密,这东西刚入门时会让人沉迷进去,可以饭不吃、觉不睡。出现这种现像,也许是解密满足了人们的猎奇心里吧。但掌握这方面技术,对自身的提高确实有好处。可以通过跟踪软件,提高自己的调试技能,并且能了解他人程序思路,使自己写出更好的程序。研究解密技术有助于掌握一些系统底层知识,系统底层知识绝对是构造起大型软件的坚实基础。许多程序发展,都经历了这一锻炼过程的。 而大多数人可能认为解密是一门高深的学问。造成这种原因是以前这方面的技术资料缺乏,从而将“解密”这一技能“神”化了。初学者一般不知从何下手,由于没方向,花费了大量时间和精力,走了不少弯路。这里就给对这方面感兴趣的读者指明一个方向。

      讨论前,先了解一下计算机中的程序。高级语言编写的程序,会编译成机器语言在CPU中执行,如Visual C++等。由于机器语言与汇编语言是一一对应的,因此就可将机器语言转化成汇编语言,这个过程称之为反汇编。而汇编语言可能读性是比较好的,这样就可分析程序流程,解析其功能了,这个过程就是解密(俗称破解)。也就是说,解密的基础是建立在汇编语言级别上的,因此想涉足这一领域的朋友,汇编语言一定得学好。汇编语言是大学计算机的必修课,这方面的书籍品种很多,虽然大多书本是以DOS汇编为讲解平台,但对理解汇编指令功能是没影响的。



等汇编学好了,建议再掌握Win32编程。Win32程序设计就是API方式的Windows编程,学习Windows API将使您更深入地了解Windows工作方式。此类书籍有Charles Petzold著的《Windows程序设计》(以VC来讲解)。另一本是罗云彬著的《Windows环境下32位汇编语言程序设计》,它以MASM汇编为讲解平台。



有了上面这些基础,你就可以参考《 加密与解密(第二版) 》这本书入门了。
  


      学习解密其实很累的,需花费大量的时间,而且经常会碰壁,三五天毫无进展是极为平常的事情。这时你可能有点想退却,其实你不要着急,只要你认真学习,成功就在眼前。没有人是生来就什么都会的,如果你有问题,就大胆的去问你周围的人。学解密的秘诀就是勤奋+执着!记住并能做到这两点,你会变得很优秀的。

      等你解密入门后,建议再看看Matt Pietrek、Jeffrey Ritcher等大师的专著,这些书是每个程序员都应该阅读的:《Windows 95 System Programming Secrets》(中文译名《Windows 95 系靳程式设计大?秘》),《windows高级编程指南》,《Windows2000编程技术内幕》,《Win32系统编程―Windows 2000应用程序开发指南》等。这样,你就对系统底层有一定的了解了。到了这个水平后,就可朝软件加密这块发展了,例如编写自己的加壳软件等。

     

这时,可以阅读本站推出的《 软件加密技术内幕 》这本新书了,这本书可以让你了解PE的格式,教你如何编写PE分析工作,如何编写加壳工具等。

   

      软件的加密与解密是一个迷人的研究领域,它几乎可以与任意一种计算机技术紧密结合――密码学、程序设计语言、操作系统、数据结构。而由于这样或者那样的原因,对于这一领域的关注程度一直还处于低温状态。而这两本书相信会为更多对知识怀有渴望的朋友多开辟一条走向这个领域的道路,并且进而推动这个领域的不断发展。

三. 工具

    SoftICE是一款经典的调试工具,运行在Ring0级,可以调试驱动。但平时调试的程序都是Ring3级,因此推荐大家用OllyDBG(简称OD),这款工具上手容易,功能十分强大,现在论坛上的文章基本都是用OllyDBG来讲解的。

Q:从哪儿得到 OllyDBG、IDA等加解密工具?
A: http://www.pediy.com/tools.htm 另外,由于版权,本站不提供SoftICE、IDA等商业软件下载,需要的可以用Google搜索或时常关注论坛。

Q:W32Dasm中的“Ord:0109h”是什么?
A:是Hint,本函数在其所驻留DLL的导出表中的索引号
( firstrose  回答)

[QUOTEd=Olldbg常见问题]
Q: OD中如何运行到光标所在处?
A: 将光标移到目标位置,按F4.(SoftICE等价功能键是F7)

Q: 如何用OD修改可执行程序?
A:直接在反汇编代码区更改,这时可以使用汇编代码更改,然后选中修改后的汇编代码,右击-->复制到可执行文件-->保存文件.

Q:使用OD,从内存区复制内存数据的时候,有时候无法将所有的数据都复制到剪贴板
A:ALT + o 打开调试选项,选择“字符串”标签,里面有个“无法打印的ASCII字符转存为圆点”,选中就可以了。或用OD修改版,可以主页工具下载栏目下。
(nbw回答)

Q:OD为什么删除了断点,重新加载的时候,这些断点都会重新出现
A:设置ollydbg.ini,将配制文件里改成如下:Backup UDD files=1
  (kanxue)

Q:如何还原到OD到分析前的状态?
A:右键 分析/从模块中删除扫描

Q:如果已经知道某一CALL的具体作用,能否把后面所有相同的CALL都改成函数名形式?
A:比如 CALL 110000    此中已经知道110000是一个核心计算
则如下操作,让光标停在CALL 110000 这个语句上,按回车键
会跳到110000的地址上去显示,之后让光标停在110000上,按
shift 和; (分号) 其实就是完成一个:(冒号)的动作,输入
名称,这回所有的调用110000处,都会显示CALL  你刚才输入的
名称了.(nig回答)

Q:OD现在有一个毛病,一旦修改了调试的程序并保存后,重新载入后OD就会重分析程序,原来保存的Udd文件就失效,给调试带来很大不便。
A:问题在这:Olly Advaced 插件,附加选项Ⅱ /忽略被修改的断点处内存(4st0ne回答)

Q:什么是UDD?
A:OllyDbg 把所有程序或模块相关的信息保存至单独的文件中,并在模块重新加载时继续使用。这些信息包括了标签、注释、断点、监视、分析数据、条件等等

Q:OD的数据窗口显示一个下划线,是什么意思?
A:重定位加下划线[Underline fixups],几乎所有的DLL和一部分程序都包含重定位,这样就可以在内存中的不同基地址加载模块了。当该项开启时,CPU反汇编窗口或CPU数据窗口中的重定位地址都将添加下划线。(xing_xsz)

Q:用OD调试一些加壳程序,如Themida等,可能你会发现下断后(包括硬件断点),程序跑到断点时,OD会出现假死现像。
A:打开OD配置文件ollydbg.ini,你会发现:Restore windows= 123346  //这个Restore windows可能会是一个很大的值
   现在只需要将Restore windows=0,重新用OD调试程序,假死问题就消失了。  (kanxue)

Q:请问“bmsg 30A12 wm_gettext”这个命令OD中怎么写?(OD中如何下消息断点?)
A:
http://bbs.pediy.com/showthread.php?s=&threadid=17671
还有:
SoftIce 能够跟踪应用程序的消息,那么OllyDbg呢?
by FuZzYBiT
OllyDbg也是可以的,那是一个非常"隐蔽的功能"。它是如此的有用。
1. 打开程序
2. 名字窗口[ 在CPU窗口中按CTRL+N ]
3. 查找 User32.TranslateMessage API
4. 右击/FindReferences(查找参考)
5. 下条件断点 [SHIFT+F4]
6. 表达式: MSG
7. 记录函数参数:永远

如果你不能找到它,试试右击鼠标,然后搜索全部模块中的名称。
但是如果我想要捕捉一个特定的消息如WM_COMMAND呢?
只对WM_COMMAND记录
用这个方法做:
1. 打开一个程序
2. 名字窗口[ 在CPU窗口中按CTRL+N ]
3. 查找 User32.TranslateMessage API
4. 右击/FindReferences(查找参考)
5. 下条件断点 [SHIFT+F4]
6. 条件框:MSG==WM_COMMAND
7. 记录函数参数: 条件满足时

Q:一些修改版的OD无法源码级调试程序
A:OD默认是用DBGHELP.dll,如果目录下没有这个,OD会到系统目录下找DBGHELP.dll。
而修改版OllyICE,为了防止一些程序检测DBGHELP.dll模块,故将其改名了,所以必须在当前目录下保留ICEHELP.DLL这个文件。

IDA Pro相关问题

Q:IDA能否显示中文字符串
A:
修改ida.cfg中的如下行:

--------------------------------------------------------------------------
// the following characters are allowed in ASCII strings, i.e.
// in order to find end of a string IDA looks for a character
// which doesn't belong to this array:
// (cp866 version)
//AsciiStringChars =

// (full version)
AsciiStringChars =
--------------------------------------------------------------------------

默认没有使用"full version"。将"cp866 version"注释掉,使用"full version"即
可。
(scz回答)

Q:谁能介绍一下sig文件的制造方法?
A:How to create .sig file from .cpp?

1. Compile the CPP files (remember, compile ONLY, do not link)
2. See the resulting .OBJ files?
3. Run the IDA FLIRT utilities on the .OBJ files
4. Voila! Instant .SIG files
5. Copy those .SIG files to the SIG folder of IDA
6. Disassemble the app in IDA
7. Open the "APPLY SIGNATURE" box
8. Select your signatures and apply

--------------------------------------------------------------------------------

SoftIC和TRW2000常见问题

Q:哪种调试工具支持USB键盘与鼠标?
A:目前只有DriverStudio V2.6以上版本内置的SoftICE支持。因此如你想用TRW2000调试工具请再接一个串口或PS/2接口的鼠标。

Q:哪种Softice支持WindowsXP?
A:只有DriverStudio V2.7以上版本支持。

Q:哪个版本的SoftIce能运行在WinME系统?
A:SoftIce 4.05以上版本就可,然后再安装Winice Loader工具就可,安装说明。

Q:我的Windows 2000用SoftICE 4.05老有问题
A:强烈建议Windows 2000用户不要用SoftICE 4.05,因为或多或少会出现许多不能解释的问题,建议直接用更新更强大的DriverStudio系列。

Q:为什么SoftICE或TRW再运行一些软件时会中断跳出?
A:用命令FAULTS off关闭错误跟踪功能。

Q:F11与F12区别?
A:F11对应的命令是:G@ss:sp,假如你目前正中断在程序中,下这个指令会在堆栈的返回地址设个暂时断点并执行到此断点。
F12对应的命令是:P RET 。SoftICE或TRW将一直单步执行直到它找到一条返回语句(RET、RETF),也就是说让SoftICE一直执行代码,直到出现 RET (XXXX) 命令,再跳出来拦截,这时,当前 IP(EIP) 会是停在 RET (XXXX) 后的某一条语句上,通常是在某一个CALL XXXXXXXX 后面。
说明:F11功能键在SoftICE中有效,在TRW中可以用pmodule命令代替F11或F12,可瞬间回到到前程序领空。

Q:SoftICE与TRW2000的断点有什么不同?
A:在这里以G命令来解释,如对G 401000命令,大家都知道是执行到401000停下,但SoftICE认为是到当前段的401000停下(也就是说在当前应用程序领空),而TRW200却不管段址如何,只要EIP是401000便停下。 这样一般跟踪一软件只要G 401000便解决。这个功能看起来简单,却极为有用。有了这条命令,只要把当前跟踪到的EIP记下,下一次一G便到。而在SoftICE下,一般先用其Symbol Loader装载程序,先来到当前应用程序的领空,然后再G 401000才能到达指定地址处。其它断点命令,如bpx原理与此类似。

Q:IceExt0.70插件不能使用
A:从0.70开始,IceExt由自己的装载器而不再是系统服务管理器负责载入。
    运行IceExt需要满足的条件
[CheckSoftICEConfig() in IceExt.c v0.70]
I.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTice下有键值,
名为KDExtensions,类型为REG_SZ。
II.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTice下有键值,
名为KDHeapSize,类型为REG_DWORD,值大于或等于0x00008000。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTice下有键值,
名为KDStackSize,类型为REG_DWORD,值大于或等于0x00008000。
(tnttools回答)

Q:Icedump装不成功
A:首先要确定IceDump版本要与SOFTICE的一至,如相同还不成功则把winice.dat中:
;EXP=c:windowssystemkernel32.dll
;EXP=c:windowssystemuser32.dll
2句前的‘;’去掉重起即可。
在Windows NT/2000/XP系统上类似的工具是NticeDump,具体安装参考此文。

由于Nitecdump最高只支持DS 2.7,因此再高版本的softice就可用IceExt工具代替Nicedump了。它扩展了SoftICE在Win NT/2K/XP下的命令功能。

Q:trw怎么抓图?
A:下命令ver keep,然后按Print Screen即将图抓取到剪帖板内,剩下的事就是找下图像处理软件粘贴上去即可。

Q:如何抓取TRW2000中的汇编代码?
A:在TRW2000下:u 401000,402000 >myfile或 u 401000 L 100 >myfile

Q:如何抓取SOFTICE中的汇编代码?
A:第一步运行SOFTICE的symbol loader快捷方式,打开菜单的“SoftICE initialisation settings”选项。将历史缓冲区(history buffer)调大些(默认为256,不能放足够多的缓冲数据)。然后切换到SOFTICE调试画面下,来到你要抓取的地方,反汇编这些代码,如:U CS:EIP L 1000 ,立即按CTRL+D返回到windows环境,再次来到symbol loader程序,选择File/Save SoftICE History As ... 。
或在SOFTICE基础下,装载icedump,用命令 ScreenDump更加方便灵活。

Q:DriverStudio3.0Beta2系统启动时蓝屏.我的系统为Windows2000 Professional + SP4.
A:得打个补丁:http://www.pediy.com/tools/Debuggers/DS-SP4-patch/numega.htm

Q:我使用XP SP1或2000SP3,安装了DriverStudio或DriverSuite 2.7 ,我设置的断点不起作用。我该怎么办?
A: 首先,下载下面链接的OSINFO.DAT文件,替换系统目录原有的。
ftp://ftp.compuware.com/pub/driverstudio/outgoing/OsInfo/OSINFO.DAT
如果问题是由于安装HOTFIX后出现的,这样操作可以减少HOTFIX的影响。
步骤如下:
1. 建立正确的针对NTOSKRNL的NMS文件,参照 "Translating system files" 中的内容(略)
2. 在Winice.dat中加入独立的一行内容:NTSYMBOLS=ON
3. 将开始时,就将Symbols加入到symbol列表中
   这样就能解决你的问题了。

Q:softice如何在Windows 退出 ?
A:不能退出SOFTICE,他钩住了大量的内核函数!
内核调试器可以实现不关闭计算机停止调试器。
嚣张事情是SOFTICE根本没有为退出调试器做任何处理。。也就是说。他们的调试器不打算被大家所退出!
( kkkkk  回答)

Q:Driver studio为3.1(1722),安装IceExt0.66后,net start IceExt时提示“系统发生 1450 错误。系统资源不足,无法完成请求的服务。”导致IceExt无法启动,有人遇到过这种情况吗?请问如何解决
A:修改注册表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTice下的下列键,把值改大一点:
KDHeapSize = 0x9000
KDStackSize = 0x8000
(nOpnOp 回答)

[/QUOTEd]
四. 一般技术问题

Q:ZIP和RAR之类密码能否用SOFTICE或TRW动态跟踪破解?
A:不能,WinZip和WinRAR是通过与CRC结合的方式进行加密,它们在解压的时候会不管3721先把带上用户输入的密码的CRC放进解压流程中,先解出来再说,最后才进行原始的CRC判定,如果最后得到的CRC与原来的不一样,那就是解压失败。因为CRC是不可逆推的,所以也没办法得到原始的密码,同时也因为把对比的过程放在了最后,所以才没办法用SoftICE等工具进行破解,只能穷举(目前来说)。(由于此问题太频繁,凡以后论坛出现此类帖子,各版主直接删除!)(感谢老罗详细的解释)

Q:为什么在WinNT/2000/XP系统,bpx hmemcpy断点无效?
A:hmemcpy是16 bits windows里的一个函数,全名Huge MEMory CoPY,俗称万能断点,但在一般的编程书籍上很少提到,原因它是底层的东西,没有特殊需要,一般不直接调用。它的操作很简单,只是将内存中的一块数据拷贝到另一个地方,Win9x系统里很频繁地调用它处理数据。在Win NT/2K系统上相关的函数是memcpy,但在Win NT/2K上不同于Windows 9x上,很少再调用memcpy来处理数据了,用此函数设断基本上什么也拦不住。

Q:为何同一函数有几种形式,如MessageBoxA(W)?
A:MessageBoxA(W)是MessageBoxA,MessageBoxW两种形式缩写,Windows函数是区分字符集的:A表示ANSI,W表示Wide,即Unicode (Wide character-set),前者就是通常使用的单字节方式,而后者是双字节方式,方便处理双字节字符。Win98基本是使用ANSI字符串来进行内部操作的,但它仍可处理少数Unicode字串符函数,如MessageBoxW、MessageBoxExW等。而Win2000/XP所有核心函数都是Unicode字串符。

Q:有一汇编指令:cmp dword [ebp-10],byte +01, 请问dword在这里的作用是什么呢?在这里dword [ebp-10]和[ebp-10]有什么不一样吗? 请问byte +01是一种怎么样的寻址呢?
A:在16位指令中,缺省的类型是字Word,在32位指令中,缺省的类型是双字Dword。byte +01表示方法是TRW2000中特有的,就是数字1,一个字节长。

Q:请问ASCII扩展字符(即ASCII值在080-0ff)如何输入?
A:输入时按住Alt键,然后输入ASCII的十进制码(001~255)。

Q:某一软件,用FI看到有 Win GUI *CRYPTED* 的字样
A:Win GUI只是指Windows图形应用程序,有*CRYPTED* 的字样,是FI认为该软件己加密,但不能识别出加密的类型。

Q:Delphi、C++ Builder编译的软件用getwindowtext等断点拦不住?
A:这是因为Delphi通过向Edit发送WM_GETTEXT(直接调用WNDProc,而没有使用消息函数)消息来获得Text的内容的,整个过程没有调用过任何Win32 API函数。所以常用的Hmemcpy、GetDlgItemTextA、GetWindowTextA等断点失效是当然的。
那么如何才能将用户输入的字符串拷贝到软件的缓冲区中时使SoftICE中断呢?办法有多种,例如用DeDe反编译得到该事件的地址,对此地址设断拦截。

Q:今后采用密码学方面的软件会越来越多,对于一个CRACKER是否有必要因此学习大量的数论知识?
A:首先我们要明确,加密算法在软件保护中的作用是什么?
加密算法在软件保护中的作用,是防写注册机。而对其他pj方式防护能力较差。
加密算法,在很多情况下是可知的,网络安全中,可以通过阅读通信协议,来了解算法;而软件中,算法往往嵌入在程序代码中。所以基于算法保密上的安全永远是不可靠的。于是人们通过密钥 来解决这个问题。目前所有流行的算法的安全性,都是基于密钥的保密。
而对于软件来说,对称密钥算法,没有什么意义。因为密钥必须嵌入软件中。所以公开密钥(不对称密钥)算法,成为软件加密的理想选择。

对于一个普通的CRACKER包括普通的程序员,是没有必要学习大量的数论知识。因为现在现成算法函数接口很多,随便拿来用就可以,不必自己去一行一行的去写代码,只要搞清算法的加密流程就可以了。一个普通的CRACKER只要跟某段代码时,能够感觉到他大概是什么算法,然后用算法验证软件(我常用cryptool),检查一下,就可以了;而且pj软件的方法很多,比如做补丁,并不是写注册机这一种方法。理论上,软件可以在机器上正常运行所有功能一次,就是可以pj的。

当然,对于想往更高层次发展的Cracker学一些数论知识是必要的,当然我们不太可能发现某的算法的弱点,但至少可以在,某个高人,发现算法的弱点,并公开时,能看懂人家是如何实现的(这需要涉及很多理论性的东西,会涉及数论的),并能写成代码。
(zmworm 回答)

Q:REPZ MOVSD是什么意思?
A: REPZ:→相同的指令有REPE
当ZF=0,退出重复,否则(CX或ECX)←(CX或ECX)-1,并执行其后的串指令,如MOVSD
MOVSD:→同类指令MOVSB字节传送,MOVSW字传送
以双字为单位的串操作指令,由源字符串向目标字符串移动数据
REPZ MOVSD这条指令是在做数据传送,源字符串DS:SI 目标字符串ES:DI  
( aboil回答)

Q:RSA 算法中的MOD运算疑问?
A:mod是求余运算符。
如果x与y的积除以z所得的余数为1,即xy = 1 (mod z),则称x和y对于模数z来说互为逆元,这种互为逆元的关系用符号表示为:
x = y的-1次方 (mod z)
x的-1次方 = y (mod z)
其中,-1次方只是个逆元的表示记号而已,是仿照以前的“倒数”的表示法,并非真的就是-1次方。
17 * 593 mod (37-1)(41-1) = 1
17 * 593 mod 1440 = 1
求逆元用扩展欧基里德算法,初等数论书都有讲。
( blowfish 回答)

Q: _lopen("\\\\.\\NTICE",...) 这一句代码,“\\.\NTICE”是驱动模块吗?“\\.”在这里是什么意思?
A: \\.\表示本地计算机,\\servername\表示远程计算机。
   NTICE是softice的驱动程序向Win32应用程序所显露出来的设备的符号名称。每个驱动会创建/管理一个或者多个虚拟的或者物理的设备,每个设备有个设备名,但这个设备名只能在驱动之间引用。需要显露给Win32应用程序的设备除了设备名之外,还要有一个符号名,便于Win32应用程序通过CreateFile/_lopen来引用。在驱动里面是用IoCreateSymbolicLink( )来显露设备符号名的。
( blowfish 回答)

Q:bmsg与bpmsg有什么不同?
A:bmsg与bpmsg皆为中断消息用的,不同之处是bpmsg可预设条件.设法见说明书.
硬件中断为利用CPU自身的标志寄存器设断.软件中断是软件模拟硬件产生中断.
I/O中断与硬件中断是完全不同的两个概念.I/O中断用于系统与端口通讯时.一般在硬狗时用

Q:CDQ是什么指令?
A:CDQ是符号扩展指令
D是dword(4字节),Q是qword(8字节)
CDQ把EAX寄存器中的数视为有符号的数,将其符号位(即EAX的最高位)扩展到EDX寄存器,即若EAX的最高位是1,则执行后EDX的每个位都是1,结果EDX = FFFFFFFF;若EAX的最高位是0,则执行后EDX的每个位都是0,结果EDX = 00000000。这样就把EAX中的32位带符号的数变成了EDX:EAX中的64位带符号的数,以满足64位运算指令的需要,但转换后的值没变。
( blowfish 回答)

Q:如何跟踪自动弹出IE的程序?
A:用ShellExcuteA 函数设断

Q:用正常的字符串参考,找不到相关字符!
A:很多程序把字符串分散在内存里,譬如“register”它可能做成“r g s e”和“ e i t r”储存在两个不同的单元里;倒过来存放,如reg=ger
,你搜索不到“register”字符串,程序运行中会把它们组合,再调用SetWindowTextA函数来设置控制窗口中的窗口文本。(woow回答)

Q:安装WKTVBDE时的问题
A:XP下的Msvbvm60.dll是2004年的,找了一个以前版本的Msvbvm60.dll替换,即可。
(李逍遥)

Q:如何让driver停在入口?
A:改入口为CC,再用PEID的插件搞定改好的SYS的checksum就可以加载了,这时不论你用什么R0调试器都可以拦到,改回代码之后就可以正常调试了,很方便.(prince回答)

Q:怎样拦截wsock32.dll中的send?
A:wsock32没有send,但是wsock32有recv,ws2_32中也有recv,如果单独
bp recv默认是拦截ws2_32中的recv,但是如果用bp wsock32.recv会拦截到wsok32中的recv,如果在OD内存窗口查看就会看到模块是wsock32
(softKiller回答)

Q:我在用IDA反汇编一个程序时,其中出现了很多的Lock Xadd [ebx],edx的指令,请教高手是什么意思
A:
LOCK
这是一个指令前缀,在所对应的指令操作期间使此指令的目标操作数指定的存储区域锁定,以得到保护。
XADD
先交换两个操作数的值,再进行算术加法操作。多处理器安全,在80486及以上CPU中支持。
(foxabu回答)

Q:请问ADD如何转换成SUB?转换方法是怎么样的?请教大家!
例:ADD EAX,264891F1=SUB EAX,?
A:
=SUB EAX,D9B76E0F

转换方法:
对264891F1求补码。
即先求反码再加1,具体如下:
NOT(264891F1)+1
(icow答复)

Q:INT 2E 这个命令是什么命令?
A:调用OS核心功能.有些系统是sysenter或syscall指令.
系统服务调用ring3->ring0,转向调用ntoskernel中的函数

Q:rol ror用C/++怎么表示?
A:
ROL:
    int rol = 18;
    int cnt = rol%32;
    int Result = (eax << rol) | eax >> (32-cnt);

ROR:
    int ror = 9;
    int cnt = ror%32;
    int Result = ((eax >> cnt) | (eax << (32-cnt));
(ViperDodge回答)

Q:
在写一些关于如何中模块的基地址获得导出函数的地址的东西。在实验过程中发现这几个函数在导出表的入口地址指向的是字符串。
RtlFillMemory           -〉NTDLL.RtlFillMemory
RtlMoveMemory      -〉NTDLL.RtlMoveMemory
RtlUnwind------------------
RtlZeroMemory-------------
通过GetProcAddress函数可以得到这几个函数的真正入口地址,不知是怎么实现的。有没有办法不通过GetProcAddress函数,通过其他途径实现?
A:
可选头中IMAGE_DATA_DIRECTORY结构决定了引出信息范围。如果EAT[i]的值不在
    引出信息范围,则为函数地址(Export RVA)。否则,该值指向形如dllname.#27
    或者dllname.exportfunc的ASCIZ串,用MS术语说,这是一个Forwarder RVA,表
    示由另外一个dll实际引出某函数。

你可以先用低级手段获取GetProcAddress,再用GetProcAddress去保持最强的向后兼容性,否则你将面临自己处理这条forward链的尴尬。
(scz回答)


五. 密码学相关FAQ

资料整理: cnbragon

Q:DES加密算法介绍。
A:DES是一种对称加密算法。密钥56位。其解密算法和加密算法一样,只是把子密钥的顺序倒过来即可。
  对于DES算法,Bruce Schneier所著的"Applied Cryptography"一书(中文叫<<应用密码学>> )中有很详细的说明.
  这里是一篇关于Triple DES (3DES)的帖子
http://bbs.pediy.com/showthread.php?s=&threadid=3254

Q:RSA源程序。
A:本分论坛已有类似的主题:
  请看:http://bbs.pediy.com/showthread.php?s=&threadid=8568

Q:请问有哪些好的计算hash的工具?
A: 计算hash的工具有很多,比如 yyxzz[CCG]的hashcalc, damn的calculator

Q:密码学中的最常用的几种算法
A:目前大家最常用也是经常接触到的加密算法有:MD5,SHA(包括SHA160,SHA384,SHA512),DES(包括3DES),
  Blowfish,AES(Rijndael),RSA,DSA,Elgamal(包括ECC-Elgamal),ECC.
  
Q:比较好的加密算法库
A:加密算法库有商业的和免费的。比如:miracl,freelib,cryptlib,crypto++,libmtocrypt,openssl,biglib,FGint等等。
  如果想实现public key cryptography,推荐使用miracl.
  cryptlib的核心代码几乎都是用asm所写,所以速度很快,效率很高。
  crypto++功能很强大,但上手很慢。
  libTomcrypt使用简单,功能也很强大。
  关于这些库的详细说明,请参考每个库所带的手册,请在使用前仔细阅读。
  下面是其中几个库的官方网站:
  miracl:     http://indigo.ie/~mscott/
  crypto++:   http://www.eskimo.com/~weidai/cryptlib.html
  cryptlib:   http://www.cs.auckland.ac.nz/~pgut001/cryptlib/
  libTomcrypt: http://libtomcrypt.org/
  FGint:      http://triade.studentenweb.org/GInt/gint.html

Q:一些好的关于密码学的网站
A:请看声声慢的帖子:
  关于密码学的一些link
  密码学链接
  

Q:ECC算法介绍
A:请参考zmworm的 ECC算法入门介绍 一文,绝对精典,看雪论坛精华6中有.
  另外,这儿有几个精典的关于ECC的网站
  Elliptic Curve Cryptography:  http://cnscenter.future.co.kr/crypto/algorithm/ecc.html
  Online Elliptic Curve Cryptography Tutorial:  http://www.certicom.com/index.php?a...c_tutorial,home
  C++/Java ECC lib:http://dragongate-technologies.com/products.html
  如果你想实现ECC,推荐使用miracl

Q:如何知道一个软件使用了哪些加密算法
A:在分析一个软件的时候,先用PEiD查一下,PEiD中有一个kanal插件,它目前至少支持25种常见的加密算法,
 可以用这个插件来分析一下,大部分常见算法都可查出,如果查不出来,要么是没有使用任何常见的加密算法,
 要么就是使用了如RSA,Elgamal,ECC等公钥算法!
  此类工具还有Cryptosearcher(作者是一个韩国的cryptoguy,x3chun),还有Cryptotool.

Q:如何用常见的密码学算法来保护我的软件
A:首先,要熟悉一些常见的密码学算法。可以参考看雪编著的<<加密与解密>> 第二版中的第6章!
  其中介绍了常见的密码学算法在软件保护中的应用,而且有相关的破解分析,很值得一看。
  其次就是使用如上介绍的加密算法库,这些库中都有不少的用于软件保护的例子
  具体问题,可以提出来,大家共同讨论

Q:关于blowfish加密算法的文章
A:请看这里
  http://bbs.pediy.com/showthread.php?s=&threadid=2975

Q:关于PGP
A:请看这里
  http://bbs.pediy.com/showthread.php?s=&threadid=3164

Q:RSATool的使用方法
A:请看这里
  http://bbs.pediy.com/showthread.php?s=&threadid=3556
  另外,对于DSA,Elgamal,ECC分别有DSATool,Elgamal Generator, Ecc Builder等工具

Q:密码学工具下载地址
A:这里有一些http://www.pediy.com/tools/Cryptography.htm


看雪学院
看雪软件安全论坛

致力于软件安全研究

http://www.pediy.com
http://bbs.pediy.com

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 3
支持
分享
最新回复 (631)
雪    币: 220
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
:D ok!
2004-5-20 08:46
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这么好的文章怎么没人顶
2004-6-18 15:43
0
雪    币: 4899
活跃值: (2333)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
又温习了一边
2004-6-19 22:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看了一便,好多都不懂,先潜水去学习一下,等入门了再来
2004-7-13 10:24
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xcs
6
学习学习!!
2004-7-16 15:04
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
还没有学习过破解,正在想学,有没有什么入门级的书,看看
2004-7-25 10:37
0
雪    币: 201
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
;) :p OK
2004-7-25 12:21
1
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
经典啊,:D
2004-8-5 18:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
初来乍到,大多都看不出门道,不过还是顶一下
2004-8-18 08:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
8错8错!
顶一下先!~
2004-8-19 04:00
0
雪    币: 16
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
12
再来温习一遍!
2004-9-6 14:59
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
13
我学汇编是从学软件破解才开始学的
  跟据需要去学习-->学习兴趣的培养

把软件破解和软件开发,调试windows 本身,来分析它的运行,以其它多方面融合起来进行学习,有利于提高学习效率。

这叫什么整体学习法

给自己定一个具体标准:
  举倒来说,比如破解一个共享软件,开发一个共享软件,就是一个具体标准,(关键在于怎么样去实现,为实现这个目标时你自己会怎样)
具体标准就是你的一个目标
  当你这个目标一但实现你会发现你的许多方面的能力己经提高(这是针对一个初学者来说的)

  我对一些事物的规律,进行了一定的研究,也建了一个QQ群来发表的一些此方面的文章,
有兴趣的可以去看看,只要在QQ群上查找名字ftts就可以找到
   
事发的必然性:
   一些人能成为一个非常利害creaker 是必然的
不能成为一个creaker也是必然的
2004-9-8 19:46
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
14
破解需要时间和耐心啊
2004-9-9 09:41
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
15
支持看雪・・
最初由 3k6p4t 发布
破解需要时间和耐心啊
:) :)
2004-9-18 13:49
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
偶最近对破解产生了浓厚的兴趣,也来凑凑热闹!
偶是学数学的,汇编学过,还学过c语言,不知道还需要那方面的知识?
望高手不吝赐教!!!!!!!!!
2004-9-25 09:22
0
雪    币: 202
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
顶~
2004-9-26 13:04
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
谢谢
楼主
大力支持喽
2004-9-26 16:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
呵呵,菜鸟也来学习了!
2004-10-1 10:25
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
菜鸟报道
2004-10-5 17:01
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
温故而知新
2004-10-6 22:15
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
很好!很好!非常好
2004-10-10 22:35
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我是菜鸟,楼主的文章很好,就是看不太懂,哪位高手指点一下,不胜感激
2004-10-11 21:48
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
再看一遍
2004-10-11 21:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
充实一下自己,多谢
2004-10-25 09:20
0
游客
登录 | 注册 方可回帖
返回
//