前言

上次分析了亿企代账对他的发票提取有很大兴趣,同时下载了几大财务厂商提供的发票提取,很多都是采用的这个,如云账房销项提取插件还有本次研究的财开心批量处理系统

分析

demo

直接用亿企代账分析的代码,提示授权,如下图:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1;
function startDataEngine(): Integer; stdcall; external 'Aisino30DBCollector_V2.dll';
function aisino30OpenSql(p1, p2, p3, p4, p5, p6, p7: PAnsiChar): Integer; stdcall; external 'Aisino30DBCollector_V2.dll'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
p1, p2, p3, p4, p5, p6, p7: PAnsiChar;
begin
i := startDataEngine;
aisino30OpenSql(p1, p2, p3, p4, p5, p6, p7);
end; end.

看来找到出处了,原来是另有奇人还以为是自己写的,多少有点失望,居然也是用的别人的,修改下代码捕获下这个异常

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
p1, p2, p3, p4, p5, p6, p7: PAnsiChar;
begin
try
i := startDataEngine;
aisino30OpenSql(p1, p2, p3, p4, p5, p6, p7);
mmoOut.Text := 'ok';
except
on E: Exception do
begin
mmoOut.Text := '异常:'+E.Message;
end;
end;
end;

脱离调试环境,居然捕获不到错误

参数附上值看看,最终的参数

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
p1, p2, p3, p4, p5, p6, p7, p8: PAnsiChar;
begin
try
i := startDataEngine;
p1 := 'C:\Program Files (x86)\Aisino\开票软件\Bin\842454545454545.0';
p2 := PAnsiChar(mmoInput.Text);
GetMem(p3, 100);
GetMem(p4, 100);
GetMem(p5, 100);
GetMem(p7, 100);
aisino30OpenSql(p1, p2, p3, p4, p5, 100, p7, 100);
mmoOut.Text := Format('p4:%s p5%s p6%s p7:%s', [p4, p5, p6, p7])
except
on E: Exception do
begin
mmoOut.Text := '异常:' + E.Message;
end;
end;
end;

这个QQ居然联系不上作者

百度看看,信息不少

去博客看看:https://blog.csdn.net/kongguoqing791025/

可惜作者已经注销了,QQ也联系不上,以前的文章也没有了,还好百度快照还有,写的挺好的,可惜失联了,继续我们的研究,我们用OD分析下看看能不能绕过去

都设置上断点

可以进入断点里面,直接跳过,提示新的错误了,输出的文件大小太小了

再修改,成功了,最终代码

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
p1, p2, p3, p4, p5, p6, p7, p8: PAnsiChar;
begin
try
i := startDataEngine(p1, p2);
p1 := 'C:\Program Files (x86)\Aisino\开票软件\Bin\842454545454545.0';
p2 := PAnsiChar(mmoInput.Text);
p3 := 'c:\output';
GetMem(p5, 1000);
GetMem(p7, 1000);
i := aisino30OpenSql(p1, p2, p3, p4, p5, 1000, p7, 1000);
mmoOut.Text := Format('i:%d p5:%s p7:%s', [i, p5, p7])
except
on E: Exception do
begin
mmoOut.Text := '异常:' + E.Message;
end;
end;
end;

总结

  • 经过上次分析亿企代账,调用财开心代码,简单很多,上次异常错误,主要还是参数不对
  • 如果别人给你提供DLL,一般都会有返回参数、错误信息(分配内存,谁调用谁释放)
  • 只要有耐心,恒心,不放弃,最终会收获

财开心批量处理系统V4.0的更多相关文章

  1. CRMEB单商户商城系统v4.0源码,含前端uni-app源码

    CRMEB商城系统是基于ThinkPhp6.0+Vue开发的一套新零售移动电商系统,CRMEB系统就是集客户关系管理+营销电商系统,能够快速积累客户.会员数据分析.智能转化客户. 有效提高销售.会员维 ...

  2. 最新发布C#.NET快速开发框架企业版V4.0 (适合开发ERP、进销存系统)

    C/S系统开发框架-企业版 V4.0 (Enterprise Edition) http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度网盘: ...

  3. 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\106f9ae8\cc0e1

    在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.Ne ...

  4. 格式工厂 v4.0.0 最新去广告绿色纯净版

    最好用的多媒体格式转换利器:格式工厂现已更新至v4.0,此次更新加入最新的HEVC(H265)编码,MP4,MKV的压缩比大幅度提高!格式工厂,轻松转换一切你想要的格式!利器在手,转换不愁! 格式工厂 ...

  5. 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\41c191fd\ff9345c5\App_Web_login.cshtml.65793277

    本地开发环境没问题,但是发布到服务器出现问题或则直接在IIS上修改东西就给我抛出以下错误: 未能写入输出文件"c:\Windows\Microsoft.NET\Framework64 \v4 ...

  6. 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0

    大家好,Node.JS 4.0 发布了,这个流行的服务器端 JS 平台合并了 Node.js 和 io.js 的代码,4.0 版就是这两个项目结合的产物——现在合并为一个代码库.这次最主要的变化是 N ...

  7. 调用 GetProcAddress 失败,在 ISAPI 筛选器 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" 上

    1.选择网站的ISAPI筛选器,设置ASP.NET的 aspnet_filter.dll右键恢复为父项 如果问题还未解决,执行第2步: 2.是否注册了asp.net,打开cmd运行:C:\Window ...

  8. 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS2\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的写访问权限。

    卸载了域控制器之后,IIS出现“当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS2\Microsoft.NET\Framework\v4.0.30319 ...

  9. 生日小助手V4.0——迁移到Python3

    生日小助手V4.0——迁移到Python3 生日小助手V4.0只支持Linux系统,依赖命令行软件lunar Ubuntu系统安装方法:1.安装lunarsudo apt-get install lu ...

  10. C# Winform开发框架企业版V4.0新特性

    企业版V4.0 - 新特性 C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4. ...

随机推荐

  1. CxImageJPG

    typedef struct tag_ExifInfo { char Version [5]; //EXIF 信息版本 char CameraMake [32]; //DC 制造商 char Came ...

  2. List集合转换成数组

    我现在有个需求:将File集合转换成MultipartFile数组结构 然后我就开始在网上开启了List转换到数组之旅. 首先来看一个例子 ArrayList<String> list=n ...

  3. select,poll和epoll使用场景和区别

    阻塞I/O至I/O多路复用 阻塞I/O指进程发起调用后会被挂起(阻塞),直到收到数据再返回.如果调用一直不返回,进程就一直被挂起.因此,使用阻塞I/O需要利用多线程来处理多个文件描述符. 引入非阻塞I ...

  4. js内置方法

    数组:        1.push()数组最后添加元素,pop()数组删除最后一个: unshift()数组开头添加元素,shift()删除数字第一个: 注意:push()和unshift()可以添加 ...

  5. php 动态实例化某个类

    $name = 'test'; $controller = 'test'; $a = '\\addons\\'.$name.'\\model\\'.$controller; $this->mod ...

  6. 用简单的代码,将小程序文件直传到腾讯云COS实践

    简介 本文介绍如何不依赖 SDK,用简单的代码,在小程序直传文件到腾讯云COS的存储桶. 注意: 本文档内容基于 XML 版本的 API. 前期条件 登录 对象存储控制台 ,创建存储桶,设置 Buck ...

  7. python+requests 验证码登录

    1.先创建一个session req = requests.session() 2.通过session来把验证码下载到本地, code = req.get("https://passport ...

  8. Dockerfile参考

    From openjdk:8u252-jdkENV MEMORY_SIZE {{ MEMORY_SIZE | default (1024) }}MENV PROJECT_NAME {{PROJECT_ ...

  9. 使用vue的插槽理解

    使用插槽的时候其实就是引用子组件,在引用的组件中间写上你要的代码,然后在子组件的的<slot ></slot>中就包含父组件写下的代码. 父组件 import addshop ...

  10. 2022-04-11内部群每日三题-清辉PMP

    1.项目经理从制造商那里收到一个更新信息,说一个必要的设备修理可能会导致他们的可交付成果迟八周时间.项目经理应该怎么做? A.确定关键路径 B.实施沟通管理计划 C.执行假设情景分析 D.对项目进度赶 ...