- UID
 - 60006
 
 注册时间2009-3-1
阅读权限20
最后登录1970-1-1
以武会友 
   
 
 
 
该用户从未签到  
 | 
 
 
 楼主 |
发表于 2009-3-31 20:50:55
|
显示全部楼层
 
 
 
【软件破解专题】第三集  
第八课 Trw2000使用介绍 
 
  和Softice那将近5兆的庞大身躯比起来,Trw2000就显得小巧多了,解压后的文件也不过几百KB而已。 
 
我将只教授Trw2000的使用,Softice不作介绍. 
 
下载 http://crackerabc.longcity.net/ 中的破解工具中可以下载1.23版,我主页破解工具中可以下载1.22版 
 
两者几乎没有差别 
 
Trw2000常用键 
 
F5键:退出Trw2000窗口(等价于输入go简打g命令) 
 
F8键: 遇到call时追进call 
 
F9键:在光标所在位置设断点 
 
F10键:单步执行 
 
F12键:一个循环圈一个循环圈的走(程序执行到RET指令处,即从子程序CALL中返回, 
 
从CALL到RET为一个循环圈) 
 
 
Trw2000常用命令 
 
bpx ***    在***处下断点(断点的解释见下),最常用的 bpx hmemcpy万能中断 
 
bd*            清除所有断点 
 
bc*       清除一个断点 
 
go简打g    暂时退出Trw2000窗口 
 
code on(code off) 显示三列,出现机器码,和w32dasm看到的一样(code off关闭) 
 
pmodule    到程序领空(领空的解释见下) 
 
x             彻底退出Trw2000 
 
下面谈到了一些在学习解密过程中经常遇到的问题,本人根据自己的经验简单给大家谈一谈。这些问题对于初学者来说常常是很需要搞明白的,根据我自己的学习经历,如果你直接照着很多破解教程去学习的话,多半都会把自己搞得满头的雾水,因为有很多的概念要么自己不是很清楚,要么根本就不知道是怎么一回事,所以希望通过下面的讨论给大家一定的帮助: 
 
1. 断点:所谓断点就是程序被中断的地方,这个词对于解密者来说是再熟悉不过了。那么什么又是中断呢?中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打电话告诉你他从外地坐火车过来,要你去火车站接他。然后你就向老板临时请假,赶往火车站去接同学,接着将他安顿好,随后你又返回公司继续上班,这就是一个中断过程。我们解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程序,找到正确的注册码。所以我们需要为被解密的程序设置断点,在适当的时候切入程序内部,追踪到程序的注册码,从而达到crack的目的。 
 
2. 领空:这是个非常重要的概念,但是也初学者是常常不明白的地方。我们在各种各样的破解文章里都能看到领空这个词,如果你搞不清楚到底程序的领空在哪里,那么你就不可能进入破解的大门。或许你也曾破解过某些软件,但那只是瞎猫碰到死老鼠而已(以前我就是这样的^_^,现在说起来都不好意思喔!)。所谓程序的领空,说白了就是程序自己的地方,也就是我们要破解的程序自己程序码所处的位置。也许你马上会问:我是在程序运行的时候设置的断点,为什么中断后不是在程序自己的空间呢?因为每个程序的编写都没有固定的模式,所以我们要在想要切入程序的时候中断程序,就必须不依赖具体的程序设置断点,也就是我们设置的断点应该是每个程序都会用到的东西。敲入pmodule可到达程序自己的领空. 
3. 关于破解练习的问题:学习破解需要大量的练习,对于破解目标的选择,初学者不宜以大型的、著名的软件为目标,因为这些软件通常加密较为复杂,破解不易,应该选择一些比较不出名的、小型的和早些时候的共享软件来练习,因为加密相对简单的软件有利于初学者快速掌握破解思想和技能。至于习题的来源则很广泛,可以从网上下载,也可以去市面上购买一些共享软件光盘。 
 
 
第九课 感受用TRW2000破解 
 
************************** 
 
本节课主要是体会一下用trw2000破解的过程,请跟着我来作吧 
 
手把手教你破FoxMAIL口令  
 
版本 Foxmail3.11正式版 Build0108  
下载 http://www.esoftware.com.cn/oloa ... ail/fm311ch0108.exe  
 
启动FOXMAIL,新建一帐户,加访问口令abc369def(够复杂吧,字母数字都有)  
点击带有锁标志的此帐户,随便输入12345678,不要点确定,暂时不要再动FOXMAIL 
启动trw2000,不要输软件名,使它驻留,ctrl-n激活,下万能中断(最常用的中断)  
trw2000下输入 
 
bpx hmemcpy  
go  
回车后自动弹到FOXMAIL界面,FOXMAIL下点确定,被断.弹到trw2000界面 
 
trw2000下输入 
bc *  
pmodule  
按7下 F12,3下 F10,来到***(其他版本好象也是^_^)  
 
0167:00511A11 8B45F4          MOV       EAX,[EBP-0C]  
0167:00511A14 8B5628          MOV       EDX,[ESI+28]  
0167:00511A17 E81824EFFF      CALL    00403E34     *****  
 
d eax   eax=12345678(往右上方看.如将TRW从上向下分为4个窗口,在第二个窗口的右边)  
d edx   edx=abc369def (往右上方看) 
 
 
最重要的一课) 
 
程式如何生成注册码? 
1,一般是通过用你的姓名作KEY,经过一定的算法,计算出注册码. 
2,但是也有通过依照随机产生的数字,显示出来,如果你要注册,须交钱给软件作者,并告诉他随机数字,他会给你一个经过按照随机数字产生出的注册码.也就是一机一码. 
其实上面两种情况都是一个道理,即程式本身在判断你输入的注册码时都会呼叫算注册码的小程式,只要将这段程式正确找到,就可以破解它.  
 
程式如何注册处理? 
1,当输入ID,CODE等,立即进行比对,正确的话则做注册处理,以后也不会再麻烦你,也就是说你已经是注册用户了.不正确的话,当然是输入到你对为止了. 
2,同上,但以后一执行程式还是会判断.针对这种情况,想只改机械码是根本不行的,必须把注册码揪出来. 
3,输入时不立即比对,只写入资料到某个文件(如 "*.INI"文件)中,程式第二次启动时再比对.例如: flashget,特点是巨麻烦,想破解它们,必须要有足够的耐心. (flashget破解参看我的破解日记) 
 
追注册码的步骤 
首先,将程式的注册对话框打开,输入你的姓名和任意的注册码(推荐用87654321) 
第二步,按CTRL-N呼叫出TRW2000,然后下中断(一般用bpx hmemcpy),回车,键入g,回车 
第三步,返回注册程式,按下注册窗中的"确定"按钮. 
第四步,如果被TRW拦到,说明刚才打的中断发挥作用了,可以继续工作.如果出现的是"注册失败"的对话框,说明TRW的中断没有作用,只有重复第二步,换个中断试试.(中断设置,看雪教程很详细,不重复) 
 
一般会用bpx hmemcpy就足够了 
第五步,键入bc*,回车,键入pmodule,回车,猛按F12键,等到出现"注册失败"的画面时,记下刚才按F12键的按数 
第六步,第二次重复第一步至第四步,这次按(第五步记下的按数减去1)下的按数,停下来. 
第七步,开始按F10键单步追寻,找到关键CALL和关键跳转,在这个关键CALL处d eax 及   d edx,多看看,有时就会看到注册码,出现在TRW的右上方(找关键CALL和关键跳转有技巧,见下) 
第八步,如果没找到,当然要按F8键进去关键CALL观察了,继续追踪可疑CALL和可疑跳转 
 
*****技巧(非常重要,背50遍) 
 
经典比较组合,常为注册码出现处(我们以后将把下面的1,2称为破解经典句式) 
1.(最常用) 
    mov eax [      ] 这里可以是地址,也可以是其它寄存器 或mov eax [       ]  
    mov edx [      ] 同上 通常这两个地址就储存着重要信息 pop edx 
    call 00??????   关键call 
    test eax eax       
    jz(jnz)或 jne(je) 最常用) 
    mov eax [      ] 这里可以是地址,也可以是其它寄存器 或mov eax [       ]  
    mov edx [      ] 同上 通常这两个地址就储存着重要信息 pop edx 
    call 00??????   关键call 
    jne(je)                
mov eax [ ]  
mov edx [ ]  
cmp eax,edx  
jnz(jz)  
或者  
begin mov al [ ]  
      mov cl [ ]  
      cmp al,cl  
      jnz(jz)  
      mov al [ +1]  
      mov cl [ +1]  
      cmp al,cl  
      jnz(jz)  
      cmp eax ecx (eax为计数器)  
      jnl begin  
      mov al 01  
4  
    lea edi [    ]  
    lea esi [    ]  
    repz cmpsd  
    jz(jnz)  
5  
    mov eax [      ] 这里可以是地址,也可以是其它寄存器  
    mov edx [      ] 同上 通常这两个地址就储存着重要信息  
    call 00??????  
    setz (setnz) al (bl,cl…)  
6  
    mov eax [      ] 这里可以是地址,也可以是其它寄存器  
    mov edx [      ] 同上 通常这两个地址就储存着重要信息  
    call 00??????  
    test eax eax  
    setz (setnz) bl,cl…  
7  
    call 00?????? ***  
    push eax (ebx,ecx…)  
    ……  
    ……  
    call 00??????  
    pop eax (ebx,ecx…)  
    test eax eax  
    jz(jnz)  
    这个形式比较特别,它的关键比较地方不在第二call中,而在第一call中  
 
其中1,2最为常见和重要,其余的不常用 
 
以上技巧为破解的精髓所在,以后无非是大量的破解练习,提高经验和功力 
 
破解的大门由此而开,破解入门的障碍所在,祝早日突破这一关 
 
***几种常见情况的不同处理方法*** 
 
1.像那种一个字符一个字符验证的软件(输入不正确没有“确定”按钮) 
bpx hmemcpy  
g就会中断,如:音乐无限,其教程后面的课里有 
 
2.输入注册码不正确,点确定没有反应,不关闭注册窗口 
 
bpx hmemcpy  
g 点确定,就会中断 
 
3、那种乱输入注册码点“确定”但什么提示也没有就消失了的 
属于不直接比对注册码,重新启动时再比对,破解起来比较困难 
请参考“风飘雪的破解日记“中的破解flashget注册码,以及后面课里的破解度量衡2.0 
具体情况具体分析,没有统一的方法. 
 
关于本文-----本文曾参考coofly和progrmhunter破文 
 
作业 
 
1.牢记用TRW2000破解的步骤 
 
2.牢记破解经典句式 
 
 
第十一课 crackme破解教程(用trw2000追注册码)=====破解经典句式篇 
 
 
依我个人的经验,破解crackme对破解能力的提高很有帮助,11,12,14课将重点介绍 
 
重点是体会破解经典句式(我已用红字标出) 
 
下面给出的地址可能已下载不到,请去破解乐园的练习专页下载 zop.yeah.net 记清编号即可 
------------------(1)-----------------------------  
fireworx.12破解教程(编号:80)(a little difficult)无出错提示  
http://go3.163.com/gfcrack/crackme/fireworx.12.zip  
输入guodong duba 7654321  
bpx hmemcpy  
g  
点鼠标,被拦  
bc*  
pmodule  
按F10直到下面  
0167:004554AC MOV      EAX,[EBP-1C] ***  
0167:004554AF MOV      EDX,[EBP-14] ***  
0167:004554B2 CALL    00403B74    ***  
0167:004554B7 JNZ      004554DA    ***  
0167:004554B9 PUSH    BYTE +00  
0167:004554BB LEA      EDX,[EBP-1C]  
 
 
4554b2处d edx (edx=5971622)  
d eax (eax=7654321)  
整理 guodong duba 5971622  
-----------------(2)---------------------------  
cabeca破解教程(初级)(编号:21)  
http://go3.163.com/gfcrack/crackme/Cabeca.zip  
依次输入 guodong 111111 222222  
ctrl+n激活trw2000  
bpx hmemcpy  
go  
点Try,被拦  
bc *  
pmodule  
不停按F10,直到下面42d4a5处  
0167:0042D4A1 MOV      EDX,[EBP-04] *  
0167:0042D4A4 POP      EAX             *  
0167:0042D4A5 CALL    004038D0      ****  
0167:0042D4AA JNZ      0042D4E5       * =>出错(1)  
0167:0042D4AC LEA      EDX,[EBP-10]  
0167:0042D4AF MOV      EAX,[0042F718]  
0167:0042D4B4 CALL    00406550  
0167:0042D4B9 MOV      EAX,[EBP-10]  
0167:0042D4BC PUSH    EAX  
0167:0042D4BD LEA      EDX,[EBP-04]  
0167:0042D4C0 MOV      EAX,[EBX+01EC]  
0167:0042D4C6 CALL    00419DE0  
0167:0042D4CB MOV      EDX,[EBP-04] *  
0167:0042D4CE POP      EAX             *  
0167:0042D4CF CALL    004038D0      ****  
0167:0042D4D4 JNZ      0042D4E5       *=>出错(2)  
0167:0042D4D6 MOV      EAX,0042D5E8  
 
42d4a5处 d eax    eax=27692  
                d edx    edx=111111  
光条停在42d4a5处按F9 (就在此处设置了个断点)======一种方便的设断点的方法,可省掉按很多键 
重新输入guodong 27692 222222  
点Try,被拦  
按F10,直到下面42d4cf处  
d eax eax=15895  
d edx edx=222222  
总结 guodong 27692 15895  
------------------(3)-----------------------------  
fireworx.6破解教程(easy)(编号:75)  
http://go3.163.com/gfcrack/crackme/fireworx.6.zip  
输入guodong 7654321  
ctrl+n激活trw2000  
bpx hmemcpy  
g  
点确定,被拦  
bc*  
pmodule  
不停按F10,直到下面(1)处  
 
0167:004417F8 CALL    004416F8  
0167:004417FD MOV      EDX,[EBP-08] **  
0167:00441800 POP      EAX         **  
0167:00441801 CALL    00403B44    ***(1)  
0167:00441806 JNZ      00441822    **  
(1) d edx真码(71A1-01CC-4EB2-38C5)  
    d eax假码(7654321)  
整理 guodong 71A1-01CC-4EB2-38C5  
 
 
TRW2000下写破解教程截取部分汇编代码的方法 
 
u 起始行地址,结束行地址 >c:\aa1.txt 如上面的是 
 
u 4417f8,441806 >c:\aa1.txt 
 
截取的汇编代码保存在aa1.txt中 
 
作业 
 
1.找出监狱(quod)1.0的注册码,写出破解教程寄给我。希望早日看到你们交的作业。(华军下载) 
 
2.找出彩票点金术最新版的注册码,写出破解教程寄给我。 
 
 
第十二课 crackme破解教程(用trw2000追注册码)=====用w32dasm辅助追注册码篇 
 
 
依我个人的经验,破解crackme对破解能力的提高很有帮助,11,12,14课将重点介绍 
下面给出的地址可能已下载不到,请去破解乐园的练习专页下载 zop.yeah.net 记清编号即可 
重点体会用w32dasm辅助追注册码 
 
Dope2112.1破解教程(编号:44)  
http://go3.163.com/gfcrack/crackme/Dope2112.1.zip  
破解:风飘雪  
难度:★(适合初学者)  
w32dasm反汇编,串式参考"Leider nicht versuchs noch mal!"  
 
:00421D35 8B55E8                   mov edx, dword ptr [ebp-18] ***  
:00421D38 8B45F4                   mov eax, dword ptr [ebp-0C] ***  
:00421D3B E83417FEFF               call 00403474                 ***  
:00421D40 7512                     jne 00421D54                 ***  
                                  ^^^^^^^^^^^^  
:00421D42 8B86C0010000             mov eax, dword ptr [esi+000001C0]  
 
* Possible StringData Ref from Code Obj ->"Hey du hast es geschaft !"     -<Good boy>  
                                  |  
:00421D48 BAE41D4200               mov edx, 00421DE4  
:00421D4D E8D6FAFEFF               call 00411828  
:00421D52 EB10                     jmp 00421D64  
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:  
|:00421D40(C)  
|  
:00421D54 8B86C0010000             mov eax, dword ptr [esi+000001C0]  
^^^^^^^^  
* Possible StringData Ref from Code Obj ->"Leider nicht versuchs noch mal " -<Bad boy>  
                                        ->"!"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
                                  |  
:00421D5A BA081E4200               mov edx, 00421E08  
运行trw2000,输入姓名: guodong 注册码: 7654321 (姓名必须不小于6个字符)  
ctrl-n激活trw 
 
bpx 421d3b  
 
g 
 
点确定,被拦,出现trw界面 
 
d eax  
eax=108-133490  
总结: 姓名: guodong 注册码: 108-133490  
--------------------------------(2)-----------------------------  
ekH.1破解教程(编号:54)  
http://go3.163.com/gfcrack/crackme/eKH.1.zip  
破解:风飘雪  
难度:★(适合初学者)  
w32dasm反汇编,串式参考"Wrong Serial Number !"  
 
:00427B95 8B45F8                   mov eax, dword ptr [ebp-08]  
:00427B98 5A                       pop edx  
:00427B99 E882FEFFFF               call 00427A20        ***▲  
:00427B9E 3D4E61BC00               cmp eax, 00BC614E    ***  
:00427BA3 7D1E                     jge 00427BC3          *** =>此处跳走即成功  
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:  
|:00427B73(C)  
|  
:00427BA5 6A00                     push 00000000  
 
* Possible StringData Ref from Code Obj ->"ERROR"  
                                  |  
:00427BA7 68087C4200               push 00427C08  
 
* Possible StringData Ref from Code Obj ->"Wrong Serial Number !"  
                                  |         ^^^^^^^^^^^^^^^^^^^^  
:00427BAC 68107C4200               push 00427C10  
 
trw2000,输入name : guodong    serial: 7654321  
bpx 427b95 按F10到▲行  
d edx  
内存窗口如下:  
0030:00B92238 37 36 35 34 33 32 31 00-54 94 42 00 54 41 B9 00 7654321.T擝.TA?.  
0030:00B92248 7C 10 00 00 36 00 00 00-50 22 B9 00 50 22 B9 00 |...6...P"?.P"?.  
0030:00B92258 10 00 00 00 20 00 00 00-1B 00 00 00 00 00 00 00 .... ...........  
0030:00B92268 09 00 00 00 41 36 4C 36-4E 36 41 34 36 00 42 00 ....A6L6N6A46.B.  
总结 guodong    A6L6N6A46  
 
 
作业 
 
找出可视化屏保制作 (True Screen Saver Builder)1.1 的注册码,写出破解教程寄给我(要求:先用W32DASM反汇编,找到关键CALL,再用TRW追注册码) 下载 www.csdn.net或www.shareware.net.cn去搜 
 
 
第十三课 搜索“S”**破解(TRW2000下) 
 
有时注册码追不出来时,可试试此法 
 
破解工具:TRW2000 
破解原理: 
  根据注册码的真假相近邻的特性,采取搜索假注册码来找真的注册码的方法! 
由于部分程序的真假注册码验证方法如下: 
call XXXXX ##### 调用子程序来验证真假注册码 
CMP xxx,xxxx   ###### 比较真假注册码 
jn 跳或不跳 #### 真就怎么样,假就怎么样,跳或不跳 
 当你按F10键单步跟踪到出现出错信息为止或按F12直到出错为止, 
这时,程序已经对你所输入的注册码进行了验证!并发出出错信息! 
所以,此时内存中就存在真假两个注册码! 
所以你就可以使用搜索**!! 
 
破解实例: 
 
破解对象 神奇注册表 http://soft.linksun.com/fpx/lesson13.zip 
 
1.启动trw2000 
 
2.启动神奇注册表,输入姓名:fpxfpx ,注册码87654321 
 
3.ctrl-n激活trw,输入 
 
bpx hmemcpy 
 
g 
 
点确定 
 
bc* 
 
pmodule 
 
不停按F12直到出错为止,这时内存中就已经存在真假两个注册码了 
 
s 0,ffffffff '87654321' 
 
右上方就可以看到真假两个注册码了 
 
有时需要alt+pageup,alt+pagedown上下找找,东找找,西找找,找象注册码的东西 
 
总结: 
  1)使用搜索“S”**,使其程序第一次运行进行注册码验证,根据真假注册码相近邻的特性, 
在第一次程序进行验证后,内存中就已经存在真假两个注册码了!当第二次搜索时, 
在内存中便出现真的注册码了! 
  2)另,在填写注册码时,最好使用系统不常出现的字符作为注册码!方便准确搜索! 
如:asasasasasa opopopopopo uiuiuiuiuiuiui 等!不要使用12345678或 11111111等, 
因为这些字符在WIN系统中到处都是!它会影响你的搜索准确性!推荐87654321 
我曾用此办法破解了:神奇注册表,邮件巡捕,轻松试卷,DBTOOLS数据专家等 
注意: 
   此方法,只适用于一些简单的注册码加密法! 
========================= 
这种方法也有其局限性: 
1)真的注册码必须在内存中以文本形式出现,不能以十六进制形式出现! 
2)VB程序此方法失效! 
3)一些复杂的注册码验证法。如:逐个验证注册码此方法失效! 
========================== 
 
作业 
 
用S**破解监狱1.0,写出破解教程寄给我(提示:有时搜索假注册码,在它的附近没有找到 
 
真码时,可以搜索姓名,看它的附近是否有真注册码) 
 
 
第十四课 用S命令破解crackme实例(TRW2000下) 
 
本课重点体会用S命令破解 
 
下面给出的地址可能已下载不到,请去破解乐园的练习专页下载 zop.yeah.net 记清编号即可 
 
 
Dope2112.2破解教程(编号:45)  
http://go3.163.com/gfcrack/crackme/Dope2112.2.zip  
破解:风飘雪  
难度:★(适合初学者)  
 
运行trw2000,输入姓名: guodong 注册码: 7654321  
bpx hmemcpy  
go 被拦  
bc *  
pmodule  
此时,光条停在0041391d行  
s 41391d,ffffffff '7654321'  
得b92d68  
bd *  
bpm b92d68  
g 内存窗口看到7654321  
d esi  
esi=386615  
总结: 姓名: guodong 注册码: 386615  
----------------------(2)--------------------------  
 
DueList.4破解教程(编号:49)(a little difficult)  
http://go3.163.com/gfcrack/crackme/DueList.4.zip  
破解:风飘雪  
运行trw2000,输入姓名: guodong 注册码: 7654321  
bpx hmemcpy  
go 被拦  
bc*  
pmodule  
此时,光条停在401184行  
s 401189,ffffff '7654321'  
得 402179  
这时,向上看,内存窗口看到7654321  
                下一行    CDSKS0C(倒数第二位是零)  
总结: 姓名: guodong 注册码: CDSKS0C  
 
 
第十五课 汇编菜鸟的好助手------r fl z命令 
 
从轻松试卷 v4.03 的破解看 r fl z 的妙用 
--------**不太懂汇编的初学者看过来,一个好的命令可以帮助你** 
 
http://soft.linksun.com/fpx/lesson15.zip r fl z 动态修改跳转的方向,即跳强行改为不跳,不跳强行改为跳 
  破解人:paulyoung 
 
    1、运行轻松试卷,在注册框的学校/单位、用户名、注册号处填写,随你便啦。  
  2、Ctrl+D 激活TRW,下 BPX HMEMCPY。F5 退出,点击确定,被拦截。  
  3、下 BD * ,中断所有断点。  
  4、按12次 F12 (因为13次出错),开始看:  
 
:004019A5 8D4DF8 lea ecx, dword ptr [ebp-08] //程序入口  
:004019A8 51 push ecx  
:004019A9 8BD7 mov edx, edi  
:004019AB 8D45F4 lea eax, dword ptr [ebp-0C]  
:004019AE E8D5721200 call 00528C88  
:004019B3 FF431C inc [ebx+1C]  
:004019B6 8D55F4 lea edx, dword ptr [ebp-0C]  
:004019B9 58 pop eax  
:004019BA E80D751200 call 00528ECC  
:004019BF 50 push eax  
:004019C0 FF4B1C dec [ebx+1C]  
:004019C3 8D45F4 lea eax, dword ptr [ebp-0C]  
:004019C6 BA02000000 mov edx, 00000002  
:004019CB E818741200 call 00528DE8  
:004019D0 FF4B1C dec [ebx+1C]  
:004019D3 8D45F8 lea eax, dword ptr [ebp-08]  
:004019D6 BA02000000 mov edx, 00000002  
:004019DB E808741200 call 00528DE8 //学校名、单位名不能为空(我掉头就溜……)  
:004019E0 59 pop ecx  
:004019E1 84C9 test cl, cl  
:004019E3 745F je 00401A44       //下 r fl z ,F5退出,可看到上面提示  
:004019E5 66C743101400 mov [ebx+10], 0014  
:004019EB 8D5701 lea edx, dword ptr [edi+01]  
:004019EE 8D45F0 lea eax, dword ptr [ebp-10]  
:004019F1 E892721200 call 00528C88  
:004019F6 FF431C inc [ebx+1C]  
:004019F9 8D45F0 lea eax, dword ptr [ebp-10]  
:004019FC 33D2 xor edx, edx  
:004019FE 8955EC mov dword ptr [ebp-14], edx  
:00401A01 8D55EC lea edx, dword ptr [ebp-14]  
:00401A04 FF431C inc [ebx+1C]  
:00401A07 E8E8A90100 call 0041C3F4  
:00401A0C 8D45EC lea eax, dword ptr [ebp-14]  
:00401A0F 8B00 mov eax, dword ptr [eax]  
:00401A11 E886420100 call 00415C9C  
:00401A16 FF4B1C dec [ebx+1C]  
:00401A19 8D45EC lea eax, dword ptr [ebp-14]  
:00401A1C BA02000000 mov edx, 00000002  
:00401A21 E8C2731200 call 00528DE8  
:00401A26 FF4B1C dec [ebx+1C]  
:00401A29 8D45F0 lea eax, dword ptr [ebp-10]  
:00401A2C BA02000000 mov edx, 00000002  
:00401A31 E8B2731200 call 00528DE8  
:00401A36 8B0B mov ecx, dword ptr [ebx]  
:00401A38 64890D00000000 mov dword ptr fs:[00000000], ecx  
:00401A3F E972030000 jmp 00401DB6  
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:  
|:004019E3(C)  
|  
:00401A44 66C743102000 mov [ebx+10], 0020  
:00401A4A 33C0 xor eax, eax  
:00401A4C 8945E8 mov dword ptr [ebp-18], eax  
:00401A4F 8D55E8 lea edx, dword ptr [ebp-18]  
:00401A52 FF431C inc [ebx+1C]  
:00401A55 8B86DC020000 mov eax, dword ptr [esi+000002DC]  
:00401A5B E8F8A60D00 call 004DC158  
:00401A60 8D55E8 lea edx, dword ptr [ebp-18]  
:00401A63 52 push edx  
:00401A64 8D5711 lea edx, dword ptr [edi+11]  
:00401A67 8D45E4 lea eax, dword ptr [ebp-1C]  
:00401A6A E819721200 call 00528C88  
:00401A6F FF431C inc [ebx+1C]  
:00401A72 8D55E4 lea edx, dword ptr [ebp-1C]  
:00401A75 58 pop eax  
:00401A76 E851741200 call 00528ECC  
:00401A7B 50 push eax  
:00401A7C FF4B1C dec [ebx+1C]  
:00401A7F 8D45E4 lea eax, dword ptr [ebp-1C]  
:00401A82 BA02000000 mov edx, 00000002  
:00401A87 E85C731200 call 00528DE8  
:00401A8C FF4B1C dec [ebx+1C]  
:00401A8F 8D45E8 lea eax, dword ptr [ebp-18]  
:00401A92 BA02000000 mov edx, 00000002 |   
 
 
 
 |