【文章标题】: 某通用更新程序的DIY
【文章作者】: 啊cr
【软件名称】: 通用更新程序
【下载地址】: 附件
【编写语言】: Borland Delphi v6.0 - v7.0
【使用工具】: OD,DEDE
【操作平台】: Win
【软件介绍】: 通用更新程序
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
这是一个自动更新程序,软件限制只更新三个文件,下面分析并修改,使其支持更多文件更新。
读取第一个文件相关参数
004F8174 > \C605 1C135000>MOV BYTE PTR DS:[50131C],7C ; 参数分隔符“|”
004F817B . B2 01 MOV DL,1
004F817D . A1 EC684100 MOV EAX,DWORD PTR DS:[4168EC]
004F8182 . E8 D5B2F0FF CALL 通用更新.0040345C
004F8187 . 8903 MOV DWORD PTR DS:[EBX],EAX
004F8189 . 8BCB MOV ECX,EBX
004F818B . 8A15 1C135000 MOV DL,BYTE PTR DS:[50131C] ; 参数分隔符“|”
004F8191 . A1 E4125000 MOV EAX,DWORD PTR DS:[5012E4]
004F8196 . E8 C5FEFFFF CALL 通用更新.004F8060
004F819B . 8D4D F4 LEA ECX,DWORD PTR SS:[EBP-C]
004F819E . 33D2 XOR EDX,EDX ; EDX=0,第一个参数 文件1-文件名
004F81A0 . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F81A2 . 8B38 MOV EDI,DWORD PTR DS:[EAX]
004F81A4 . FF57 0C CALL DWORD PTR DS:[EDI+C]
004F81A7 . 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
004F81AA . B8 E8125000 MOV EAX,通用更新.005012E8 ; 保存指针的地址 文件1-文件名
004F81AF . E8 00C1F0FF CALL 通用更新.004042B4
004F81B4 . 8D4D F0 LEA ECX,DWORD PTR SS:[EBP-10]
004F81B7 . BA 01000000 MOV EDX,1 ; EDX=1,第二个参数 文件1-文件MD5
004F81BC . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F81BE . 8B38 MOV EDI,DWORD PTR DS:[EAX]
004F81C0 . FF57 0C CALL DWORD PTR DS:[EDI+C]
004F81C3 . 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
004F81C6 . B8 EC125000 MOV EAX,通用更新.005012EC ; 保存指针的地址 文件1-文件名
004F81CB . E8 E4C0F0FF CALL 通用更新.004042B4
004F81D0 . 8D4D EC LEA ECX,DWORD PTR SS:[EBP-14]
004F81D3 . BA 02000000 MOV EDX,2 ; EDX=2,第三个参数 文件1-文件LINK
004F81D8 . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F81DA . 8B38 MOV EDI,DWORD PTR DS:[EAX]
004F81DC . FF57 0C CALL DWORD PTR DS:[EDI+C]
004F81DF . 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]
004F81E2 . B8 F0125000 MOV EAX,通用更新.005012F0 ; 保存指针的地址 文件1-文件名
004F81E7 . E8 C8C0F0FF CALL 通用更新.004042B4
004F81EC . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
004F81EF . BA 03000000 MOV EDX,3 ; 文件2……
文件2
文件3
004F8294 . 8B03 MOV EAX,DWORD PTR DS:[EBX] ; 参数读取完毕
004F8296 . E8 F1B1F0FF CALL 通用更新.0040348C
004F829B . 8D55 CC LEA EDX,DWORD PTR SS:[EBP-34]
004F829E . A1 34F54F00 MOV EAX,DWORD PTR DS:[4FF534]
004F82A3 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004F82A5 . E8 D2B4F6FF CALL 通用更新.0046377C ; 获取当前程序名
004F82AA . 8B45 CC MOV EAX,DWORD PTR SS:[EBP-34]
004F82AD . 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
004F82B0 . E8 C70FF1FF CALL 通用更新.0040927C ; 获取程序路径
004F82B5 . 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30]
004F82B8 . 8BC6 MOV EAX,ESI ; 通用更新.005012E0
004F82BA . E8 F5BFF0FF CALL 通用更新.004042B4
004F8294 > \8B03 MOV EAX,DWORD PTR DS:[EBX] ; 参数读取完毕
004F8296 . E8 F1B1F0FF CALL 通用更新.0040348C
004F82BF . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F82C2 . 50 PUSH EAX ; 通用更新.005012E8
004F82C3 . 68 88804F00 PUSH 通用更新.004F8088
004F82C8 . FF36 PUSH DWORD PTR DS:[ESI]
004F82CA . 68 A8894F00 PUSH 通用更新.004F89A8
004F82CF . FF35 E8125000 PUSH DWORD PTR DS:[5012E8] ; 文件名
004F82D5 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
004F82D8 . BA 03000000 MOV EDX,3
004F82DD . E8 FEC2F0FF CALL 通用更新.004045E0
004F82E2 . 8B45 B4 MOV EAX,DWORD PTR SS:[EBP-4C]
004F82E5 . 8D55 B8 LEA EDX,DWORD PTR SS:[EBP-48]
004F82E8 . E8 8FF9FFFF CALL 通用更新.004F7C7C
004F82ED . 8D45 B8 LEA EAX,DWORD PTR SS:[EBP-48]
004F82F0 . 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38]
004F82F3 . E8 D8F8FFFF CALL 通用更新.004F7BD0
004F82F8 . 8B55 C8 MOV EDX,DWORD PTR SS:[EBP-38]
004F82FB . B8 0C135000 MOV EAX,通用更新.0050130C
004F8300 . E8 AFBFF0FF CALL 通用更新.004042B4
004F8305 . A1 0C135000 MOV EAX,DWORD PTR DS:[50130C] ; 本地文件的md5
004F830A . 8B15 EC125000 MOV EDX,DWORD PTR DS:[5012EC] ; 更新文件的md5
004F8310 . E8 57C3F0FF CALL 通用更新.0040466C ; 比较
004F8315 . 0F84 63010000 JE 通用更新.004F847E ; 相等不更新,更新下一个文件
004F831B . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50]
004F831E . 8B0D E8125000 MOV ECX,DWORD PTR DS:[5012E8]
004F8324 . BA B4894F00 MOV EDX,通用更新.004F89B4
004F8329 . E8 3EC2F0FF CALL 通用更新.0040456C
004F832E . 8B55 B0 MOV EDX,DWORD PTR SS:[EBP-50]
004F8331 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F8334 . 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004F833A . 8B80 20020000 MOV EAX,DWORD PTR DS:[EAX+220]
004F8340 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
004F8342 . FF51 38 CALL DWORD PTR DS:[ECX+38]
004F8345 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F8348 . 8B80 0C030000 MOV EAX,DWORD PTR DS:[EAX+30C]
004F834E . C640 38 00 MOV BYTE PTR DS:[EAX+38],0
004F8352 . B2 01 MOV DL,1
004F8354 . A1 006C4100 MOV EAX,DWORD PTR DS:[416C00]
004F8359 . E8 FEB0F0FF CALL 通用更新.0040345C
004F835E . A3 20135000 MOV DWORD PTR DS:[501320],EAX ; 通用更新.005012E8
004F8363 . 33C0 XOR EAX,EAX ; 通用更新.005012E8
004F8365 . 55 PUSH EBP
004F8366 . 68 C9834F00 PUSH 通用更新.004F83C9
004F836B . 64:FF30 PUSH DWORD PTR FS:[EAX]
004F836E . 64:8920 MOV DWORD PTR FS:[EAX],ESP
004F8371 . 68 D4894F00 PUSH 通用更新.004F89D4
004F8376 . FF35 E8125000 PUSH DWORD PTR DS:[5012E8] ; 文件名
004F837C . 68 F0894F00 PUSH 通用更新.004F89F0
004F8381 . 8D45 AC LEA EAX,DWORD PTR SS:[EBP-54]
004F8384 . BA 03000000 MOV EDX,3
004F8389 . E8 52C2F0FF CALL 通用更新.004045E0
004F838E . 8B55 AC MOV EDX,DWORD PTR SS:[EBP-54]
004F8391 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F8394 . 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004F839A . 8B80 20020000 MOV EAX,DWORD PTR DS:[EAX+220]
004F83A0 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
004F83A2 . FF51 38 CALL DWORD PTR DS:[ECX+38]
004F83A5 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F83A8 . 8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
004F83AE . 8B0D 20135000 MOV ECX,DWORD PTR DS:[501320]
004F83B4 . 8B15 F0125000 MOV EDX,DWORD PTR DS:[5012F0] ; 远程地址
004F83BA . E8 011DF8FF CALL 通用更新.0047A0C0 ; 下载
004F83BF . 33C0 XOR EAX,EAX ; 通用更新.005012E8
004F83C1 . 5A POP EDX ; 0012F3F4
004F83C2 . 59 POP ECX ; 0012F3F4
004F83C3 . 59 POP ECX ; 0012F3F4
004F83C4 . 64:8910 MOV DWORD PTR FS:[EAX],EDX
004F83C7 . EB 50 JMP SHORT 通用更新.004F8419
004F83C9 .^ E9 5EB5F0FF JMP 通用更新.0040392C
004F83CE . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F83D1 . 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004F83D7 . 8B80 20020000 MOV EAX,DWORD PTR DS:[EAX+220]
004F83DD . BA 048A4F00 MOV EDX,通用更新.004F8A04
004F83E2 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
004F83E4 . FF51 38 CALL DWORD PTR DS:[ECX+38]
004F83E7 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F83EA . 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004F83F0 . 8B80 20020000 MOV EAX,DWORD PTR DS:[EAX+220]
004F83F6 . BA 78894F00 MOV EDX,通用更新.004F8978
004F83FB . 8B08 MOV ECX,DWORD PTR DS:[EAX]
004F83FD . FF51 38 CALL DWORD PTR DS:[ECX+38]
004F8400 . A1 20135000 MOV EAX,DWORD PTR DS:[501320]
004F8405 . E8 82B0F0FF CALL 通用更新.0040348C
004F840A . E8 85B8F0FF CALL 通用更新.00403C94
004F840F . E9 9F040000 JMP 通用更新.004F88B3
004F8414 . E8 7BB8F0FF CALL 通用更新.00403C94
004F8419 > FF36 PUSH DWORD PTR DS:[ESI]
004F841B . 68 A8894F00 PUSH 通用更新.004F89A8
004F8420 . FF35 E8125000 PUSH DWORD PTR DS:[5012E8] ; 文件名
004F8426 . 8D45 A8 LEA EAX,DWORD PTR SS:[EBP-58]
004F8429 . BA 03000000 MOV EDX,3
004F842E . E8 ADC1F0FF CALL 通用更新.004045E0
004F8433 . 8B55 A8 MOV EDX,DWORD PTR SS:[EBP-58]
004F8436 . A1 20135000 MOV EAX,DWORD PTR DS:[501320]
004F843B . E8 B033F2FF CALL 通用更新.0041B7F0
004F8440 . 68 2C8A4F00 PUSH 通用更新.004F8A2C
004F8445 . FF35 E8125000 PUSH DWORD PTR DS:[5012E8] ; 文件名
004F844B . 68 3C8A4F00 PUSH 通用更新.004F8A3C ; ASCII " ...Ok!"
004F8450 . 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C]
004F8453 . BA 03000000 MOV EDX,3
004F8458 . E8 83C1F0FF CALL 通用更新.004045E0
004F845D . 8B55 A4 MOV EDX,DWORD PTR SS:[EBP-5C]
004F8460 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004F8463 . 8B80 F8020000 MOV EAX,DWORD PTR DS:[EAX+2F8]
004F8469 . 8B80 20020000 MOV EAX,DWORD PTR DS:[EAX+220]
004F846F . 8B08 MOV ECX,DWORD PTR DS:[EAX]
004F8471 . FF51 38 CALL DWORD PTR DS:[ECX+38]
004F8474 . A1 20135000 MOV EAX,DWORD PTR DS:[501320]
004F8479 . E8 0EB0F0FF CALL 通用更新.0040348C ; 第一个文件下载结束
参数读取2-3
004F81EC 90 NOP
004F8293 90 NOP
文件下载2-3
004F847E 90 NOP
004F8826 90 NOP
004F81EC /E9 AA000000 JMP 通用更新.004F829B
004F847E ^\E9 18FDFFFF JMP 通用更新.004F819B
004F8315 ^\0F84 80FEFFFF JE 通用更新.004F819B ; 相等不更新,更新下一个文件
004F819E . 33D2 XOR EDX,EDX ; EDX=0,第一个参数 文件1-文件名
004F81B7 . BA 01000000 MOV EDX,1 ; EDX=1,第二个参数 文件1-文件MD5
004F81D3 . BA 02000000 MOV EDX,2 ; EDX=2,第三个参数 文件1-文件LINK
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!