前言

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

分析

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. SSR,SSAO

    3D Game Shaders For Beginners Screen Space Reflection (SSR)https://lettier.github.io/3d-game-shaders ...

  2. PHP开启缓存加速

     PHP默认会将Operate Code文件丢弃,缓存加速是将其保存下来,放置共享内存中,以便在下次调用该PHP页面时重用,避免相同代码的重复编译 __________________________ ...

  3. 【ESP32学习】CMake学习

    在之前的博客中提到,ESP-IDF采用的是CMake来构建项目,因此需要学习一下CMake,以对ESP32的开发有更好的把握 参考: Windows下CMake安装教程 从零开始详细介绍CMake C ...

  4. php基础教程(三)

    PHP语法概述 A. 基本语法 即使初次接触PHP的用户也会发现自己对PHP的语法风格并不陌生. 例如:<?php echo "Hello!": ?> 显示结果为&qu ...

  5. lua中self的意义

    原文链接 最近在用合宙的Air302开发物联网项目,因为合宙用的自家的luatOS操作系统,二次开发全都要用lua写,据说lua写起代码比C更方便,但是不会就是不会啊喂!!学不会就是不方便啊,例如这个 ...

  6. locust socektio协议压测

    # -*-coding:UTF-8 -*- from locust import HttpLocust, TaskSet, task, TaskSequence, Locust, events imp ...

  7. 合并B站video.m4s和audio.m4s

    ffmpeg -i D:\a\video.m4s -i D:\a\audio.m4s -codec copy D:\a\a.mp4

  8. [419] C1 Harbingers Of War OpCodez

    [419] C1 Harbingers Of War Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03 Request ...

  9. 分布式接口幂等性、分布式限流:Guava 、nginx和lua限流

    接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用. 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此 ...

  10. 1903021126-申文骏-Java第十一周作业-Java中继承、多态及抽象类的使用

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021126-申文骏-Java第十一周作业-Java中继承.多态及抽象类的使用 作业要求 每道题要有题目 ...