• 标 题:ReadBOOK v1.43 中文阅读程序--注册破解全攻略 一 (13千字)
  • 作 者:-1212-
  • 时 间:2001-4-14 0:51:06
  • 链 接:http://bbs.pediy.com

ReadBOOK v1.43 中文阅读程序--注册破解全攻略

作者:华仔
版权:China Cracking Group
时间:2001.04.14

由于本地上网包月制被取消,网费居高不下,太惨了,每周我只争取到
两小时的上网时间(没办法,都是Money惹的祸)。朋友推荐我用ReadBOOK v1.41
这个软件在平时多读点书,软件还不错,真正的绿色环保,不在除解
压目录之外的地方留下任何痕迹(我喜欢),再一看要注册(注册事小,
但有违Cracker的精神),毫不犹豫拉下了它的新版本ReadBOOK v1.43,
心想这下可大展身手了,不想运行一看差点把我气趴下,居然是什么
XXXXX专用版本,已不用注册了(如果你只是想使用这个软件,强烈建议
你按一下键盘上的Back Space键),主窗口中XXXXX标语太打眼,这怎
么行,我一定要注册它,仔细分析这个软件,发现它调用了oem.4rb这
个插件,删除它,我们又成为未注册版本了。

一、试运行:

进入注册窗口
用户名:华仔[CCG]
注册码:1974923
单击“填写完毕”按钮后,提示:“注册码错误,请重新填写注册码”。

二、注册分析:

1、注册码无法输入数字之外的任何字符,故猜测注册码可能是十进制数
  (八进制数和二进制数也有可能,但这种情况很少见)。

2、确定后马上弹出注册错误窗口,说明它立即对你输入的注册码进行了
  判断。设断时可从此下手。

三、实战:

用W32dsm89反汇编主程序,找关键字串“您已经成功地注册了”,来到以
下一大串代码中(分析时我用TRW2000):

:00409FFC BF98444600      mov      edi,00464498
*//读取ReadBook.ini文件中[File]段

:0040A001 68A0484600      push    DWORD 004648A0
*//读取ReadBook.ini文件User项

:0040A006 57              push    edi
:0040A007 E8A0D30000      call    004173AC
*//读取ReadBook.ini文件User项中的值并送给[ebp+FFFFFF44]
*//取姓名十六进制ASCII码,结束以00为标志,并用20补足128位。
*//BB AA D7 D0 5B 43 43 47 5D 00 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

:0040A00C 83C41C          add      esp, 1C
:0040A00F 389D44FFFFFF    cmp      byte ptr [ebp+FFFFFF44], bl
*//将[ebp+FFFFFF44]和BL作比较

:0040A015 756D            jne      0040A084
*//[ebp+FFFFFF44]不为空则跳到校验代码
..
..
..
..
:0040A084 8D8544FFFFFF    LEA      EAX,[EBP+FFFFFF44]   
:0040A08A 50              PUSH    EAX                   
:0040A08B E8E6A30200      CALL    00434476
*//将大写字母转换为小写,其它类型字符不转换。
*//BB AA D7 D0 5B 63 63 67 5D 00 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

:0040A090 8B854CFFFFFF    MOV      EAX,[EBP+FFFFFF4C]
*//以姓名第12位开始向前依次取四位并送给EAX
*//2020005D

:0040A096 8B8D48FFFFFF    MOV      ECX,[EBP+FFFFFF48]
*//以姓名第8位开始向前依次取四位并送给ECX
*//6763635B

:0040A09C 8BB544FFFFFF    MOV      ESI,[EBP+FFFFFF44]
*//以姓名第4位开始向前依次取四位并送给ESI
*//D0D7AABB

:0040A0A2 03C8            ADD      ECX,EAX
*//简单的加法运算:ECX=ECX+EAX=6763635B+2020005D=878363B8

:0040A0A4 038D50FFFFFF    ADD      ECX,[EBP+FFFFFF50]
*//取姓名第16位开始向前依次取四位与ECX相加,再将结果送给ECX
*//ECX=ECX+[EBP+FFFFFF50]=878363B8+20202020=A7A383D8

:0040A0AA 69F631750000    IMUL    ESI,ESI,7531
*//带符号数乘法运算:ESI=ESI*7531=D0D7AABB*7531=8A4F24CB

:0040A0B0 69C931750000    IMUL    ECX,ECX,7531
*//ECX=ECX*7531=A7A383D8*7531=D18DF458

:0040A0B6 C704240C434600  MOV      DWORD [ESP],0046430C
:0040A0BD 68B5000000      PUSH    DWORD B5
:0040A0C2 53              PUSH    EBX
:0040A0C3 2BF1            SUB      ESI,ECX
*//减法运算:ESI=ESI-ECX=8A4F24CB-D18DF458=B8C13073

:0040A0C5 FF1534224500    CALL    `KERNEL32!FindResourceA`
*//函数说明:在模块中寻找资源

:0040A0CB 50              PUSH    EAX
:0040A0CC 53              PUSH    EBX
:0040A0CD FF153C224500    CALL    `KERNEL32!LoadResource`
*//函数说明:返回资源句柄

:0040A0D3 6894484600      PUSH    DWORD 00464894
*//读取ReadBook.ini文件

:0040A0D8 57              PUSH    EDI
:0040A0D9 8945EC          MOV      [EBP-14],EAX
*//将EAX的值送给[EBP-14]

:0040A0DC E8EDD20000      CALL    004173CE
*//读取ReadBook.ini文件中Register的值并送给EAX

:0040A0E1 6880484600      PUSH    DWORD 00464880
:0040A0E6 57              PUSH    EDI
:0040A0E7 8945F8          MOV      [EBP-08],EAX
*//将EAX的值送给[EBP-08]

:0040A0EA C745F012320000  MOV      DWORD [EBP-10],3212
:0040A0F1 C745E434120000  MOV      DWORD [EBP-1C],1234
:0040A0F8 C745E888880000  MOV      DWORD [EBP-18],8888
:0040A0FF C745F423230000  MOV      DWORD [EBP-0C],2323
:0040A106 E8C3D20000      CALL    004173CE
:0040A10B 83C410          ADD      ESP,BYTE +10
:0040A10E 85C0            TEST    EAX,EAX
:0040A110 7524            JNZ      0040A136
:0040A112 8D45F4          LEA      EAX,[EBP-0C]
:0040A115 50              PUSH    EAX
:0040A116 8D45E8          LEA      EAX,[EBP-18]
:0040A119 50              PUSH    EAX
:0040A11A 8D45E4          LEA      EAX,[EBP-1C]
:0040A11D 50              PUSH    EAX
:0040A11E 8D45F0          LEA      EAX,[EBP-10]
:0040A121 50              PUSH    EAX
:0040A122 6860474600      PUSH    DWORD 00464760
*//取硬盘盘符C:

:0040A127 FF15F8214500    CALL    `KERNEL32!GetDiskFreeSpaceA`
*//函数说明:获取磁盘剩余空间

:0040A12D 8B45F4          MOV      EAX,[EBP-0C]
:0040A130 0FAF45F0        IMUL    EAX,[EBP-10]
:0040A134 EB19            JMP      SHORT 0040A14F
:0040A136 8D45C4          LEA      EAX,[EBP-3C]
:0040A139 C745C420000000  MOV      DWORD [EBP-3C],20
:0040A140 50              PUSH    EAX
:0040A141 FF15F0214500    CALL    `KERNEL32!GlobalMemoryStatus`
*//函数说明:检查内存状态

:0040A147 8B45D0          MOV      EAX,[EBP-30]
:0040A14A 05CCEDFFFF      ADD      EAX,FFFFEDCC
:0040A14F F7D0            NOT      EAX
:0040A151 3145F8          XOR      [EBP-08],EAX
:0040A154 33C0            XOR      EAX,EAX
*//EAX=0

:0040A156 A3FC644600      MOV      [004664FC],EAX
*//将EAX的值送给[004664FC]

:0040A15B 3975F8          CMP      [EBP-08],ESI
*//将[EBP-08](假注册码的十六进制)和ESI(真注册码)比较

:0040A15E 741D            JZ      0040A17D
*//如果相等则跳到注册成功窗口
*//暴破时此处改为JMP

:0040A160 8B55EC          MOV      EDX,[EBP-14]
*//将[EBP-14]的值送给EDX

:0040A163 8BC8            MOV      ECX,EAX
*//将EAX的值送给ECX

:0040A165 83E17F          AND      ECX,BYTE +7F
*//逻辑与运算:ECX=ECX AND 7F

:0040A168 03348A          ADD      ESI,[EDX+ECX*4]
*//加法运算:ESI=ESI+[EDX+ECX*4]

:0040A16B 40              INC      EAX
*//EAX=EAX+1

:0040A16C 3DFF0F0000      CMP      EAX,0FFF
*//比较EAX是否等于FFF

:0040A171 A3FC644600      MOV      [004664FC],EAX
*//将EAX送给[004664FC]

:0040A176 72E3            JC      0040A15B
*//EAX不等于FFF则跳

:0040A178 3975F8          CMP      [EBP-08],ESI
*//将[EBP-08](假注册码的十六进制)和ESI(真注册码)比较

:0040A17B 7547            JNZ      0040A1C4
*//不相等则跳到注册不成功窗口

:0040A17D 8B75FC          MOV      ESI,[EBP-04]
:0040A180 C705A4974B000100+MOV      DWORD [004B97A4],01
:0040A18A FF761C          PUSH    DWORD [ESI+1C]
:0040A18D FF1598254500    CALL    `USER32!GetMenu`
*//函数说明:返回指定窗口的菜单句柄

:0040A193 50              PUSH    EAX
:0040A194 E881270300      CALL    0043C91A
:0040A199 53              PUSH    EBX
:0040A19A 6850800000      PUSH    DWORD 8050
:0040A19F FF7004          PUSH    DWORD [EAX+04]
:0040A1A2 FF158C254500    CALL    `USER32!RemoveMenu`
*//函数说明:删除菜单项和弹出式菜单

:0040A1A8 391DA8974B00    CMP      [004B97A8],EBX
:0040A1AE 744C            JZ      0040A1FC
:0040A1B0 53              PUSH    EBX
:0040A1B1 6878484600      PUSH    DWORD 00464878
**//祝贺

:0040A1B6 6864484600      PUSH    DWORD 00464864
*//您已经成功地注册了!

:0040A1BB 8BCE            MOV      ECX,ESI
:0040A1BD E819000300      CALL    0043A1DB
:0040A1C2 EB38            JMP      SHORT 0040A1FC

:0040A1C4 53              PUSH    EBX
:0040A1C5 68A0484600      PUSH    DWORD 004648A0
:0040A1CA 57              PUSH    EDI
:0040A1CB 891DA4974B00    MOV      [004B97A4],EBX
:0040A1D1 E88ED10000      CALL    00417364
:0040A1D6 53              PUSH    EBX
:0040A1D7 6894484600      PUSH    DWORD 00464894
:0040A1DC 57              PUSH    EDI
:0040A1DD E882D10000      CALL    00417364
:0040A1E2 8B45FC          MOV      EAX,[EBP-04]
:0040A1E5 83C418          ADD      ESP,BYTE +18
:0040A1E8 53              PUSH    EBX
:0040A1E9 6853800000      PUSH    DWORD 8053
:0040A1EE 6811010000      PUSH    DWORD 0111
:0040A1F3 FF701C          PUSH    DWORD [EAX+1C]
:0040A1F6 FF1528264500    CALL    `USER32!PostMessageA`
*//函数说明:将消息加入线索消息队列

:0040A1FC 891DA8974B00    MOV      [004B97A8],EBX
:0040A202 5F              POP      EDI
:0040A203 5E              POP      ESI
:0040A204 5B              POP      EBX
:0040A205 C9              LEAVE 
:0040A206 C3              RET   

:0040A207 56              PUSH    ESI
:0040A208 6A00            PUSH    BYTE +00
:0040A20A 68C8484600      PUSH    DWORD 004648C8
*//错了啦!

:0040A20F 8BF1            MOV      ESI,ECX
:0040A211 68A8484600      PUSH    DWORD 004648A8
*//注册码错误,请重新填写注册码!

:0040A216 E8C0FF0200      CALL    0043A1DB
:0040A21B 6A00            PUSH    BYTE +00
:0040A21D 6850800000      PUSH    DWORD 8050
:0040A222 6811010000      PUSH    DWORD 0111
:0040A227 FF761C          PUSH    DWORD [ESI+1C]
:0040A22A FF1528264500    CALL    `USER32!PostMessageA`
*//函数说明:将消息加入线索消息队列

:0040A230 5E              POP      ESI
:0040A231 C3              RET   

四、结论:

1、取姓名十六进制ASCII码,结束以00为标志,并用20补足128位。如姓名中
  有大写字母,先转换为小写字母再取。例如:

    | 第1位 ==>BB
华-|
    | 第2位 ==>AA

    | 第3位 ==>D7
仔-|
    | 第4位 ==>D0

    第5位 [ ==> 5B
    第6位 C ==> 43 ==> 63
    第7位 C ==> 43 ==> 63
    第8位 G ==> 47 ==> 67
    第9位 ] ==> 5D
    第10位 结束标致00
    第11位 填充20
    ......
    ......
    第128位 填充20

2、从第四位开始向前取四位,记为SN1,如:
  SN1=D0D7AABB

3、从第十六位开始每四位为一组,顺序向前取三组,并求出这三组数之和,
  记为SN2,如:
  SN2=20202020+2020005D+6763635B=A7A383D8

3、将SN1减去SN2的差再乘以7531,记为SN,如:
  SN=(SN1-SN2)*7531=(D0D7AABB+A7A383D8)*7531=B8C13073

4、取SN的十进制数,就是真正的注册码之一。
  B8C13073 ==> 3099668595

  所以完整的注册码:
  姓  名:华仔[CCG]
  注册码:3099668595

5、分析0040A160至0040A176代码段发现,注册码不只一个,还有FFF个。

  ①算法:
  将0-FFF顺序取数并与7F逻辑与运算,将运算结果乘以4再加上EDX=4D5990,
  得出密码表(我已提取出来供大家参考)偏移量,然后依次取4位(低位在
  前、高位在后)最后再加上当前的SN值就得到了一个新的注册码。

  ②密码表如下:
          0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
004D5990: 4D 44 07 48 36 6C 81 0B 4B 7C 5A 27 97 31 96 25  MD.H6l?K|Z'??
004D59A0: A6 32 C0 2C 40 05 44 67 E2 7E 7D 3E FD 6D 75 4F  ??@.Dg鈤}>.muO
004D59B0: 50 6A 6B 6E CA 6C 8A 77 E2 13 86 5E 43 5F FA 3B  Pjkn蔿妛?哵C_?
004D59C0: 3D 46 AE 4E 5C 66 3C 58 10 34 A9 37 52 25 E8 79  =F甆\f<X.4?R%鑩
004D59D0: A4 4E 68 17 E2 6C 19 0F B5 6A 8B 52 B8 26 15 54  h.鈒..礿婻?.T
004D59E0: 81 27 27 4F 2A 15 30 64 1E 4C C6 2C 26 3B ED 51  ?'O*.0d.L?&;鞶
004D59F0: 10 0F AF 3D 69 00 67 0A 1B 7C 68 25 F2 65 EF 07  ..?i.g..|h%騟?
004D5A00: 56 6C 7A 40 B7 5E F7 17 81 44 74 39 96 20 2F 38  Vlz@穅?丏t9?/8
004D5A10: 98 6D 32 6F 8E 01 ED 4E A8 3B 5F 10 2F 35 D2 42  榤2o?鞱?_./5褺
004D5A20: E2 36 39 10 4F 7E AB 35 EE 7A 94 58 FF 28 95 66  ?9.O~?顉擷.(昮
004D5A30: 82 20 22 5D BE 60 65 7F 32 65 F1 73 EC 36 46 51  ?"]綻e.2e駍?FQ
004D5A40: 8A 05 35 17 81 6D A4 44 5A 7D 48 74 FE 59 49 00  ?5.乵Z}Ht.YI.
004D5A50: 51 22 EF 6B A4 74 C6 0B CD 4C DF 67 E4 67 15 71  Q"飇?蚅遟鋑.q
004D5A60: F2 02 80 29 18 34 7C 21 FA 59 F0 75 70 3B B4 21  ?).4|!鶼饀p;?
004D5A70: CB 01 4B 43 2F 4A 4B 41 CF 2E 2A 4B 17 6F 47 61  ?KC/JKA?*K.oGa
004D5A80: 00 56 69 26 21 38 0C 0E 42 6F 2E 56 72 27 80 70  .Vi&!8..Bo.Vr'p
004D5A90: F6 31 26 5E 8B 74 6C 5A CC 7F 12 54 C0 6D 26 72  ?&^媡lZ?.T續&r
004D5AA0: D8 71 83 08 EB 0D 6D 41 E9 3B E1 2C 61 1A 94 2B  豵??mA??a.?
004D5AB0: 16 5A B2 1A 25 5D E3 0E 99 3C 19 20 5C 4F 3A 15  .Z?%]??. \O:.
004D5AC0: E1 65 9D 75 01 48 F7 77 E2 2E 2C 41 DA 02 1A 3B  醗漸.H鱳?,A?.;
004D5AD0: B0 25 60 4A AB 13 A7 23 4C 3A 01 44 A9 19 4C 6D  ?`J??L:.D?Lm
004D5AE0: BD 2D CA 4E 31 47 44 03 63 77 70 19 BA 11 7B 40  ?蔔1GD.cwp.?{@
004D5AF0: 89 14 E0 41 09 1E F3 7A 39 76 C8 5B A4 3C 66 5E  ?郃..髗9v萚?f^
004D5B00: 54 01 5A 40 88 0A 2D 5A E2 54 4D 0B 1E 0A 60 26  T.Z@?-Z釺M...`&
004D5B10: A6 4A 24 69 6C 48 3F 24 F5 65 B2 1A 88 62 D0 1D  $ilH?$鮡?坆?
004D5B20: C9 24 DE 51 53 7F CA 28 12 67 A4 4B 63 11 B2 30  ?轖S.?.gc.?
004D5B30: 4C 60 5C 4B 41 75 44 6C 56 47 3F 5B D5 3F 14 42  L`\KAuDlVG?[?.B
004D5B40: 82 38 27 76 1E 51 75 60 E9 7D 96 7E 27 7F 9A 0C  ?'v.Qu`閩杶'.?
004D5B50: 01 32 FA 26 36 6D FB 6C 71 70 2F 2F 46 63 FA 52  .2?6m鹟qp//Fc鶵
004D5B60: 23 09 46 1B B7 39 C7 47 9B 69 85 47 45 2D 81 60  #.F.?荊沬匞E-乣
004D5B70: 88 30 AE 7D 37 2F 9E 1D 99 1F 85 6F D8 05 8C 59  ?畗7/??卭?孻
004D5B80: 92 5F 8C 3A 2B 51 98 0A 9F 4A 11 59 DB 47 10 5C  抇?+Q?烰.Y跥.\
 
  ③例如:

  姓  名:华仔[CCG]
  注册码:3099668595 ==> B8C13073

  注册码1 ==> [4D5990+0*4]=4D5990 ==> 4807444D+B8C13073=C874C0 ==> 13137088
  注册码2 ==> [4D5990+1*4]=4D5994 ==> 0B816C36+C874C0=C49E0F6 ==> 206168310
  注册码3 ==> [4D5990+2*4]=4D5998 ==> 275A7C4B+C49E0F6=33A45D41 ==> 866409793
  注册码4 ==> [4D5990+3*4]=4D599C ==> 25963197+33A45D41=593A8ED8 ==> 1497009880
  ....
  ....
  注册码FFF ==> [4D5990+7E*4]=4D5B88 ==> 59114A9F+C53475F9=1E45C098 ==> 507887768

  • 标 题:ReadBOOK v1.43 中文阅读程序--注册破解全攻略 二 (5千字)
  • 作 者:-1212-
  • 时 间:2001-4-14 0:52:03

6、暴力破解时,当使用上述方法将0040A15E处改为EB1D后试运行提示:“ReadBook察
  觉到自身有改变,如果不是文件损坏...”,没想到它还有CRC校验,好!我们再来
  搞定它。
  用W32dsm89反汇编主程序,找关键字串“ReadBook察觉到自身有改变”,很好,找
  到一个。现在向上略过几个跳跃指令看到如下代码:

:00417F2D FF75F0                  push [ebp-10]
:00417F30 FF75D8                  push [ebp-28]
:00417F33 FF75E8                  push [ebp-18]
:00417F36 E8BB060000              call 004185F6 ===》CRC校验代码
:00417F3B 83C40C                  add esp, 0000000C
:00417F3E 85C0                    test eax, eax
:00417F40 0F8516010000            jne 0041805C  ===》一定要跳,不跳就出错
:00417F46 53                      push ebx
:00417F47 53                      push ebx
 
  将00417F40处改为90E916010000,重新运行就没有错误提示了。如果你认为现在就完
  事收工,那你就错了,在每次点击“关于”菜单,程序将调用以下代码:

:00418799 B8F7FC4400              mov eax, 0044FCF7
:0041879E E80DD20000              call 004259B0
:004187A3 81ECA0010000            sub esp, 000001A0
:004187A9 53                      push ebx
:004187AA 57                      push edi
:004187AB 8BF9                    mov edi, ecx
:004187AD 6A10                    push 00000010

* Reference To: USER32.GetKeyState, Ord:0112h
*//函数说明:返回虚拟键的状态
                                  |
:004187AF FF1558254500            Call dword ptr [00452558]
:004187B5 A880                    test al, 80
*//触发条件al大于或等于80(十六进制80为十进制128)
*//具体是什么时候al会大于或等于80,我还不清楚,请哪位高手指点一二。

:004187B7 7420                    je 004187D9
*//大于或等于80则跳
*//如al<80你就看不到下面这个精彩画面了。
*//如想看则NOP,但我对这些小恶作局深恶痛绝,我还是JMP算了。

:004187B9 FE05BC974B00            inc byte ptr [004B97BC]
*//[004B97BC]加1(每点击一次“关于ReadBook”菜单,在此处加1)

:004187BF 803DBC974B0002          cmp byte ptr [004B97BC], 02
*//将[004B97BC]的值和02比较

:004187C6 7E11                    jle 004187D9
*//小于或等于02则跳

:004187C8 E818020000              call 004189E5
*//吓你一跳的地方(代码在下面)

:004187CD 8025BC974B0000          and byte ptr [004B97BC], 00
*//与运算:[004B97BC]=0(吓唬你后在此处将点击次数置0)

:004187D4 E9A6000000              jmp 0041887F



* Referenced by a CALL at Address:
|:004187C8 
|
:004189E5 B80FFD4400              mov eax, 0044FD0F
:004189EA E8C1CF0000              call 004259B0
:004189EF 81ECD8000000            sub esp, 000000D8
:004189F5 6A00                    push 00000000
:004189F7 8D8D1CFFFFFF            lea ecx, dword ptr [ebp+FFFFFF1C]
:004189FD E863F6FEFF              call 00408065
*//调用格式化对话框(代码在下面)

:00418A02 8365FC00                and dword ptr [ebp-04], 00000000
:00418A06 8D8D1CFFFFFF            lea ecx, dword ptr [ebp+FFFFFF1C]
:00418A0C E88AF70100              call 0043819B
:00418A11 6A00                    push 00000000

* Possible StringData Ref from Data Obj
*//嘻嘻

:00418A13 68806C4600              push 00466C80

* Possible StringData Ref from Data Obj
*//不要害怕,只是和你开个小玩笑。本软件不会破坏任...?

:00418A18 68486C4600              push 00466C48
:00418A1D 6A00                    push 00000000

* Reference To: USER32.MessageBoxA, Ord:01BEh
*//函数说明:建立消息框窗体
                             
:00418A1F FF1530264500            Call dword ptr [00452630]
:00418A25 834DFCFF                or dword ptr [ebp-04], FFFFFFFF
:00418A29 8D8D1CFFFFFF            lea ecx, dword ptr [ebp+FFFFFF1C]
:00418A2F E8B6F6FEFF              call 004080EA
:00418A34 8B4DF4                  mov ecx, dword ptr [ebp-0C]
:00418A37 64890D00000000          mov dword ptr fs:[00000000], ecx
:00418A3E C9                      leave
:00418A3F C3                      ret



* Referenced by a CALL at Address:
|:004189FD 
|
:00408065 B85FF34400              mov eax, 0044F35F
:0040806A E841D90100              call 004259B0
:0040806F 51                      push ecx
:00408070 56                      push esi
:00408071 57                      push edi
:00408072 FF7508                  push [ebp+08]
:00408075 8BF1                    mov esi, ecx
:00408077 8975F0                  mov dword ptr [ebp-10], esi

* Possible Reference to Dialog: DialogID_00C2
                                  |
:0040807A 68C2000000              push 000000C2
*//对话框ID:194(十六进制C2为十进制194,你可用Exescope等资源编辑软件看一下
  主程序资源对话框194是不是我们熟悉的windows格式化窗口)

:0040807F E862000300              call 004380E6
*//调出格式化窗口

:00408084 8365FC00                and dword ptr [ebp-04], 00000000
:00408088 8D7E5C                  lea edi, dword ptr [esi+5C]
:0040808B 8BCF                    mov ecx, edi
:0040808D E807060300              call 00438699
:00408092 C707747A4500            mov dword ptr [edi], 00457A74
:00408098 8DBE98000000            lea edi, dword ptr [esi+00000098]
:0040809E C645FC01                mov [ebp-04], 01
:004080A2 8BCF                    mov ecx, edi
:004080A4 E8F0050300              call 00438699
:004080A9 8B4DF4                  mov ecx, dword ptr [ebp-0C]
:004080AC C7078C764500            mov dword ptr [edi], 0045768C
:004080B2 83A6D400000000          and dword ptr [esi+000000D4], 00000000
:004080B9 C706A03D4500            mov dword ptr [esi], 00453DA0
:004080BF 8BC6                    mov eax, esi
:004080C1 5F                      pop edi
:004080C2 5E                      pop esi
:004080C3 64890D00000000          mov dword ptr fs:[00000000], ecx
:004080CA C9                      leave
:004080CB C20400                  ret 0004
*//鼠标不停的向“开始”格式化按钮上移动