明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8411|回复: 38

[经验] 论坛附件修正工具(汇编版)

  [复制链接]
发表于 2020-10-23 10:43 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2020-11-25 12:47 编辑

经mokson大侠研究, 明经论坛打不开的图片或附件之中,在文件头开始都加入了“0D 0A”这两个字节,因此jpg,gif,png 等图片不能正确显示,下载的全部压缩附件也打不开,解压提示错误信息。
本程序的作用就是修复下载的附件和图片,让它变成正常的。
使用方法很简单,执行fixmj.exe,选需要修复的文件,点打开。程序会自动备份原来的文件,不用担心修坏了。

链接: https://pan.baidu.com/s/1w16z5RGFXOZstccQcs7LPQ 提取码: 264h
解压缩密码是mjtd
以下为汇编源码,可以用masm32编译

.386
.model flat,stdcall
option casemap:none
include \MASM32\INCLUDE\shell32.inc
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\advapi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \MASM32\LIB\oleaut32.lib
include \MASM32\include\oleaut32.inc
includelib \MASM32\LIB\shell32.lib
include \masm32\include\comdlg32.inc
includelib \masm32\lib\comdlg32.lib
stralloc MACRO file_ln
         invoke SysAllocStringByteLen,0,file_ln
         ENDM
.data
buffer db 512 dup(0)
newfilename1 db 512 dup(0)
buff1 db 16 dup(0)
buff2 db 16 dup(0)
AppName db "明经论坛附件文件修正工具 ver 1.0 (C)SYZ 2020.10.23",0
mesberr_1 db "  欢迎使用明经论坛附件文件修正工具 ver 1.0",0dh,0ah         
          db '  山东济南 盛玉增 (baitang36)研制 ',0dh,0ah
          db '  联系QQ:5520971  ',0dh,0ah,0dh,0ah
          db '修正成功!',0
mesberr_2 db '程序错误!',0
br1       dd 20h
          db 0
ofn OPENFILENAME <>
FilterString db "Files (*.*)",0,"*.*",0
               
.data?
hInstance HINSTANCE ?
fhand1 dd ?           ;文件句柄
fhand3 dd ?
file_ln dd ?          ;源文件长度
source$  dd ?         ;分配内存开始地址

.code
start:
invoke GetModuleHandle, NULL
mov    hInstance,eax  
mov ofn.lStructSize,SIZEOF ofn
mov ofn.lpstrFilter, OFFSET FilterString
mov ofn.lpstrFile, OFFSET buffer
mov ofn.nMaxFile,512
mov ofn.Flags, OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_EXPLORER or OFN_HIDEREADONLY
invoke GetOpenFileName, ADDR ofn
mov esi,OFFSET buffer
mov edi,OFFSET newfilename1
@@:  lodsb
     cmp al,0
     jz @f
     stosb
     jmp @b
@@: sub esi,5
     lodsd
     mov edx,eax
     sub edi,4
     mov eax,'kab_'
     stosd
     mov eax,edx
     stosd
     mov al,0
     stosb
     invoke CopyFile, ADDR buffer,ADDR newfilename1,0 ;复制bak文件
     
                             
                   invoke CreateFile,ADDR buffer,                   ;打开
                         GENERIC_READ,
                         FILE_SHARE_WRITE,
                         NULL,OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         NULL
                          .if eax==INVALID_HANDLE_VALUE
                             jmp nx_3
                          .else  
                           mov fhand1,eax
                           .endif
                           invoke GetFileSize,fhand1,NULL
                           mov file_ln , eax
                         stralloc file_ln                                             ;分配内存
                         mov source$, eax
                         invoke ReadFile,fhand1,source$,file_ln,ADDR br1,NULL
                         mov eax,fhand1
                         invoke CloseHandle,eax
                        mov esi,source$
                        lodsw
                        cmp ax,0a0dh
                        jz wfas_1
                        jmp end_1
         
           wfas_1:      
                     lodsb
                     cmp al,20h
                     jnz wfas_2
                     jmp end_1
           wfas_2:               
                      invoke CreateFile,ADDR buffer,  ;建立文件
                      GENERIC_WRITE,              ; access (read-write) mode
                      FILE_SHARE_READ, ;NULL,                       ; share mode
                      NULL,                       ; pointer to security attributes
                      CREATE_ALWAYS,              ; how to create
                      FILE_ATTRIBUTE_NORMAL,      ; file attributes
                      NULL
                          .if eax==INVALID_HANDLE_VALUE
                             jmp nx_3
                          .else  
                           mov fhand3,eax
                          .endif
  
                       mov edx,file_ln
                       sub edx,2
                       mov ecx,source$
                       add ecx,2
                       invoke WriteFile,fhand3,ecx,edx,ADDR br1,NULL
                       mov eax,fhand3
                       invoke CloseHandle,eax
                       jmp nx_2

   nx_2:  invoke MessageBox,NULL,ADDR mesberr_1,ADDR AppName,MB_OK;MB_YESNO
        invoke ExitProcess,eax
               

  nx_3:  invoke MessageBox,NULL,ADDR mesberr_2,ADDR AppName,MB_OK
          invoke ExitProcess,eax
  end_1: jmp @f ;
    no_1 db  "文件正常,不需要修正!",0  
    @@:  invoke MessageBox,NULL,ADDR no_1,ADDR AppName,MB_OK
   invoke ExitProcess,eax
end start
编译工具下载链接: https://pan.baidu.com/s/1-wugzQ_-IH5gfztPDUC3Xg 提取码: dsyy

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-10-24 16:28 | 显示全部楼层
汇编牛x。                                                           
发表于 2021-3-29 12:08 | 显示全部楼层
baitang36 发表于 2020-11-22 16:40
你的邮箱服务器把我给你发的邮件当垃圾退回了,你还有别的邮箱吗?

Thanks for reply. I have found on Internet. But if any useful link, help me send to thattinh01986@yahoo.com.
Thank you sir. I've come back recently ^^
 楼主| 发表于 2020-11-22 16:40 | 显示全部楼层
ketxu 发表于 2020-11-21 16:17
I don't have Baidu network account, so could somebody send me this tool by email?  Thank you very mu ...

你的邮箱服务器把我给你发的邮件当垃圾退回了,你还有别的邮箱吗?
发表于 2020-10-24 08:06 | 显示全部楼层
论坛能人层出不穷,藏龙卧虎。
论坛有难,人人有责。
发表于 2020-10-24 17:13 | 显示全部楼层
厉害,谢谢楼主分享
发表于 2020-10-25 23:28 | 显示全部楼层

难怪打不开呢
发表于 2020-10-26 12:36 | 显示全部楼层
果然大牛出手,图片就有。
发表于 2020-10-29 15:56 | 显示全部楼层
真的是太厉害了!
发表于 2020-11-6 12:25 | 显示全部楼层
解压密码不对啊
 楼主| 发表于 2020-11-6 16:21 | 显示全部楼层
xazjg 发表于 2020-11-6 12:25
解压密码不对啊

mjtd
怎么会不对?
发表于 2020-11-6 22:34 | 显示全部楼层
baitang36 发表于 2020-11-6 16:21
mjtd
怎么会不对?

刚试了下,对了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-19 11:44 , Processed in 1.324017 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表