Asprise OCR SDK 15.3试用版破解

2023-05-16

1.      序言 之前因同事需要,破解过Asprise OCR 4.0试用版本,对这个库比较有印象。目前最新版本为15.3,网上已经能下载到它的试用破解版本,但似乎没有看到此版本的破解文章。AspriseOCR 15.3与4.0比较,基本上没有加强保护强度,因此破解方法也可以参考网上公布的4.0版本的破解方法,只有一点点不同。AspriseOCR 15.3破解方法相当简单,甚至都用不到OllyDbg,用IDA 分析一下,找到关键修改一下就OK了。当然,这毕竟是免费试用版本,如果有经济条件的话,还是建议去购买官方正式版本。  2.      介绍 Asprise OCR是一个强大的商业的OCR(光学字符识别)库,支持文字识别和二维码识别。AspriseOCR SDK有Java、C# .net、VB .net、Python、C/C++、Pascal等众多语言版本,并支持Windows、Linux、Mac OSX等操作系统平台。本篇对AspriseOCR SDK 15.3 C/C++ Windows免费试用版本进行破解,其他语言和平台版本相差不大,可依葫芦画瓢。官方下载链接:http://asprise.com/royalty-free-library/c-c++-ocr-for-windows-mac-linux-download.html  3.      编写demo 官方提供的C++ Windows免费试用版本,包含了一个头文件(asprise_ocr_api.h)和一个DLL文件(aocr.dll)。官方页面中也提供了C/C++ demo代码,但没提供相应的C/C++demo程序,因此需要自己编写demo程序,主要代码如下,不多说   void testOcr()   {    const char * libFolder = "libaocr";    LIBRARY_HANDLE libHandle = dynamic_load_aocr_library(libFolder);      // one time setup    int setup = c_com_asprise_ocr_setup(false);      // starts the ocr engine; the pointer must be of long long type    long long ptrToApi = c_com_asprise_ocr_start("eng", OCR_SPEED_FAST, NULL, NULL, NULL);      char * s = c_com_asprise_ocr_recognize(ptrToApi, "image.png", -1, -1, -1, -1, -1,     OCR_RECOGNIZE_TYPE_ALL, OCR_OUTPUT_FORMAT_PDF,     "PROP_PDF_OUTPUT_FILE=result.pdf|PROP_PDF_OUTPUT_TEXT_VISIBLE=true|\                   PROP_PDF_OUTPUT_RETURN_TEXT=text", "|", "=");      std::cout << "Returned: " << s << std::endl;      // do more recognition here ...      // finally, stops the OCR engine.   c_com_asprise_ocr_stop(ptrToApi);     dynamic_unload_aocr_library(libHandle); }  运行效果: 1)   每次运行时,有一定概率会弹出如下提示:   2)   过期后提示  4.      分析DLL1)   用IDA加载aocr.dll。 2)   打开字符串列表窗口,搜索“evaluating Asprise”,找到其引用位置,F5反编译,得到如下代码: BOOL sub_1005B820() { signed int v0; // edi@1 signed __int64 v1; // rax@12 void *v2; // esi@13 char *v3; // eax@16 char *v4; // ebx@16 DWORD dwDisposition; // [sp+Ch] [bp-128h]@1 __int64 v7; // [sp+10h] [bp-124h]@1 BYTE v8[4]; // [sp+1Ch] [bp-118h]@6 HKEY phkResult; // [sp+20h] [bp-114h]@1 BYTE Data[4]; // [sp+24h] [bp-110h]@3 CHAR SubKey; // [sp+28h] [bp-10Ch]@1   sub_1025AF9F(&v7); sprintf_s(&SubKey, 0x100u, "Software\\Lab Asprise!\\%s\\%s\\Settings", "Asprise OCR", "15.3"); v0 = 0; if ( RegCreateKeyExA(HKEY_CURRENT_USER, &SubKey, 0, 0, 0, 0xF003Fu, 0, &phkResult, &dwDisposition) ) {    v0 = 5; LABEL_16:    v3 = (char *)sub_10257E26(256);    v4 = v3;    if ( v0 == 1 )     sprintf_s(     v3,     0x100u,     "Evaluation license expired (%s %s). Please remove the evaluation kit from your computer.",     "Asprise OCR",     "15.3");    else     sprintf_s(     v3,     0x100u,     "Evaluation license control error #%d (%s %s). Please contact us at support@asprise.com.",     v0,     "Asprise OCR",     "15.3");    j_j__free(v4);    v2 = (void *)sub_10257E26(512);    sub_1025845D(v2, "%s?m=eval_error&p=%s&v=%s&e=%d", (unsigned int)"http://asprise.com/license-mesg.html");    MessageBoxA(0, v4, "Sorry, an error occurred", 0x40010u);    goto LABEL_20; } if ( dwDisposition == 1 ) {    *(_DWORD *)Data = v7;    if ( RegSetValueExA(phkResult, "sys-DO-NOT-MODIFY", 0, 4u, Data, 4u) )     v0 = 2; } else if ( dwDisposition == 2 ) {    *(_DWORD *)Data = 4;    if ( RegQueryValueExA(phkResult, "sys-DO-NOT-MODIFY", 0, 0, v8, (LPDWORD)Data) )    {     v0 = 3;    }    else if ( v7 >= (unsigned int)(*(_DWORD *)v8 + 2592000) )    {     v0 = 1;    } } else {    v0 = 4; } RegCloseKey(phkResult); if ( v0 )    goto LABEL_16; sub_1025A11E(); ++dword_10635F4C; LODWORD(v1) = sub_1025AF9F(0); if ( !(v1 % 4) ) {    v2 = (void *)sub_10257E26(512);    sub_1025845D(v2, "%s?m=ok&p=%s&v=%s&e=%d", (unsigned int)"http://asprise.com/license-mesg.html");    if ( MessageBoxA(       0,       "Thank you for evaluating Asprise products. \n"       "Click the 'Yes' button below to visit our website or 'No' to continue: ",       "Asprise Software - asprise.com",       0x1124u) != 6 )    { LABEL_21:     j_j__free(v2);     return v0 == 0;    } LABEL_20:    ShellExecuteA(0, "open", (LPCSTR)v2, 0, 0, 1);    goto LABEL_21; } return v0 == 0; }    以上就是试用检测的关键代码,流程简要分析如下: 1)   第一个调用函数sub_1025AF9F的反编译代码如下: signed __int64 __cdecl sub_1025AF9F(signed __int64 *a1) { signed __int64 result; // rax@1 struct _FILETIME SystemTimeAsFileTime; // [sp+0h] [bp-8h]@1   GetSystemTimeAsFileTime(&SystemTimeAsFileTime); result = (*(_QWORD *)&SystemTimeAsFileTime - 116444736000000000i64) / 0x989680ui64; if ( result > 32535244799i64 )    result = -1i64; if ( a1 )    *a1 = result; return result; }    这实际上就是C运行库的time函数 2)   写注册表    *(_DWORD *)Data = v7;    if ( RegSetValueExA(phkResult, "sys-DO-NOT-MODIFY", 0, 4u, Data, 4u) )  写注册表的数据参数Data,源自v7,而v7是time函数调用的结果。以上是将初始时间写入到注册表中 3)   查询注册表    *(_DWORD *)Data = 4;    if ( RegQueryValueExA(phkResult, "sys-DO-NOT-MODIFY", 0, 0, v8, (LPDWORD)Data) )  读取第一次运行时存储的初始时间 4)   随机提示 LODWORD(v1) = sub_1025AF9F(0); if ( !(v1 % 4) ) {    v2 = (void *)sub_10257E26(512);    sub_1025845D(v2, "%s?m=ok&p=%s&v=%s&e=%d", (unsigned int)"http://asprise.com/license-mesg.html");    if ( MessageBoxA(  将time(0)的返回值模4,当结果为0时,则弹出试用提示 5.      破解过程1)   去掉随机提示 在IDA中找到下面一行 .text:1005B96D           jnz   loc_1005BA6D  点击菜单“Edit”->“Patch Program”->“Assemble”,修改为 .text:1005B96D           jmp   loc_1005BA6D  2)   修改过期检测 在IDA中找到下面一行 .text:1005B92F           jb     short loc_1005B93D  点击菜单“Edit”->“Patch Program” ->“Assemble”,修改为 .text:1005B92F           jmp   short loc_1005B93D  3)   生成破解DLL 点击菜单“Edit”->“Patch Program” ->“Applypatches to input file”,在弹出的对话框中点击“OK”,生成破解的DLL文件  (完)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asprise OCR SDK 15.3试用版破解 的相关文章

  • 收据褪色部分可以恢复吗?

    我有一些包含一些扫描收据的文件 我需要使用 OCR 从中提取文本 由于收据上打印的文字在一段时间后会褪色 导致收据上的某些文字不清晰 影响OCR结果 褪色单词的一些示例 有什么方法可以恢复褪色的部分 以便提高 OCR 结果吗 我在OpenC
  • 在 SDK 中找不到文件夹“tools”

    我在做安卓开发使用 Eclipse 我已经下载了所有必需的软件 但遇到了与中讨论的相同的问题 无法在 Eclipse 中设置 Android Target https stackoverflow com questions 6384328
  • 如何将 Tesseract 导入 Angular2 (TypeScript)

    我正在尝试将 Tesseract 导入 Angular2 TypeScript 我可以看到它保存到 node modules 文件夹中 但是在使用时 import Tesseract from types tesseract js it s
  • Android Studio:Gradle 构建错误,无法找到 SDK 和编译服务器

    我是 Android Studio 的新用户 在尝试将 Android Studio 项目导入其他 PC 上的 Android Studio 时遇到严重问题 一般来说 我的 Gradle 不想构建项目 这是由路径问题引起的 错误日志 Fai
  • 使用 AWS SSO 时 AWS Java SDK 未找到配置文件

    当我使用 AWS SSO 登录时 我无法访问 aws 我使用以下方式从计算机登录 aws sso login profile staging 配置文件的配置如下 profile staging sso start url https som
  • 以编程方式识别 PDF 文件中的扫描文本 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 PDF 文件 其中包含我们需要导入数据库的数据 这些文件似乎是打印的字母数字文本的 pdf
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • Android Studio 使用的默认 Android SDK 路径是什么?

    使用Android Studio下载Android SDK时 默认下载路径是什么 我有兴趣了解 Linux Mac 和 Windows 的路径 在网上搜索了一下 好像是这样的 Linux Android Sdk Mac Library An
  • 使用 C++ REST SDK 的 Http_client post 请求(卡萨布兰卡)

    我正在尝试使用 C REST SDK Casablanca 库执行 POST HTTP 请求 但我没有成功 我也找不到任何最近 工作片段 有谁能够帮助我 通过以下代码 我获得了运行时网络 json json exception说 不是字符串
  • Paypal Rest API - 来自批准 URL 的令牌生命周期

    我使用 Paypal Rest API 我的问题是 有多长token来自批准 URL 有效吗 我想将此令牌 也包含我的令牌 存储到数据库并生成带有我的令牌的链接 稍后 如果我单击此链接 将我的令牌替换为 paypal 令牌 我想重定向到 p
  • 在Tomcat中设置环境变量TESSDATA_PREFIX

    我们正在使用名为 Tess4J 的 Tesseract OCR Java 库 如果作为独立应用程序运行 它可以正常工作 它需要一个名为 TESSDATA PREFIX 的变量 其中包含 tessdata 配置和其他字符集相关文件 它也可以与
  • FB SDK 3.0 我是否需要扩展访问令牌还是自动的?

    基于http developers facebook com roadmap offline access removal http developers facebook com roadmap offline access remova
  • 从现在起测量时间间隔

    任何人都知道或可以提供一些与 timeIntervalSinceNow 方法相关的示例代码 我需要类似的东西 time2 当应用程序进入前台时 time1 当应用程序进入后台时 time3 时间差 这样我就可以使用这个数字 以秒为单位的首选
  • 从笔记本中提取文本

    我正在尝试从图像中提取手写文本 我使用 python 和 opencv 函数 例如 find contours 当我使用像这样的图像时 一切进展顺利 它工作得很好 因为我有一个简单的背景 但后来我用这张图片测试了它 由于背景中有笔记本的线条
  • 使用 Tesseract 进行手写识别

    我只是想知道 如果将大写字母全部放在表格中自己的小框中 那么超正方体的手写识别准确度有多高 我知道你可以训练它来识别你自己的笔迹 但我的问题是我需要在多个笔迹中使用它 有人能指出我正确的方向吗 多谢 简而言之 您必须训练 Tesseract
  • iOS 按钮在动画期间不可点击

    当我使用类别方法向按钮添加动画时 我无法单击该按钮 似乎它已被禁用 compassCalibrateButton pulse 1 5 continuously YES compassCalibrateButton userInteracti
  • 最小 sdk 9 的应用程序兼容版本

    我有 Android Studio 版本 2 3 3 和sdk工具版本 25 2 5 当我用 min 构建一个新项目时sdk9 它犯了一个错误 我必须使用 minsdk我的项目为 14 无论如何 必须将其更改为 9 并使用 appcompa
  • 解析器解析 SQL 查询并返回 Java 中的列名和相应的表名 [重复]

    这个问题在这里已经有答案了 可能的重复 Java 的 SQL 解析器库 https stackoverflow com questions 660609 sql parser library for java 我需要一个解析器 它应该以以下
  • Android Eclipse 支持库:所需版本为空

    我刚刚从 Android 开发者网站下载并安装了适用于 Windows 的最新 ADT 捆绑包 接下来 我在 SDK 管理器中安装了所有软件包 包括 Android 支持库 Rev 18 最后 我通过 Eclipse 中的 帮助 gt 安装

随机推荐

  • OpenCV学习笔记之 ( 三 ) MFC显示Mat图片

    以下步骤参考以下链接 http blog csdn net dcrmg article details 51913160 原理及详解见上链接 下面只讲步骤 一 打开VS2010 xff0c 建立对话框的项目 二 建立 PictureCont
  • 彻底解决显示Opencv中Mat图像到Mfc窗口问题

    第一步 xff0c 转换格式前预先获得待显示控件的大小 xff0c 若相等则不做处理 xff0c 若不等则首先改变Mat图像大小 xff0c 再进行转换 CRect rect GetDlgItem IDC STATIC SRC gt Get
  • 在MFC中显示cv::Mat

    BOOL DrawMat CDC pDC cv Mat amp img CRect amp rect if img empty img depth 61 CV 8U img channels 61 3 return FALSE BITMAP
  • 在MFC图像控件上显示opencv Mat格式图片

    显示opencv图片格式Mat到图像控件vIDC上 vMat xff1a 图像Mat vIDC xff1a 图像控件ID void CDLFaceDlg showMat Mat vMat int vIDC if vMat empty ret
  • 在OpenCV中将cv::Mat绘制到MFC的视图中

    毕设时遇到了一个问题 xff0c 不能在MFC中显示由GrabCut抠出来的图 经一番折腾发现 xff1a 在OpenCV中如果图像最初是Mat类型的话 xff0c 就不能通过转换为IplImage xff0c 再转换为CvvImage来显
  • 【AutoLisp】AutoLisp中的DCL界面应用基础

    目录 01 DCL的作用 01 01 DCL介绍 01 02 DCL对话框成员 01 标准DCL对象家族 02 装饰DCL对象家族 03 集群DCL对象家族 04 整合DCL对象家族 02 DCL的加载 03 DCL的规则 04 DCL对话
  • 在MFC的picture控件中如何显示Mat图

    首先 xff0c 要进行输入检查 xff0c 看Mat数据是否是有效的 xff0c 如下图中所示 定义位图数据结构 xff0c 用以方便在图形设备接口 GraphicsDeviceInterface 上显示 xff0c 也就是windows
  • MFC+OPENCV+显示MAT类型图像

    MFC显示图像到界面 xff0c 可以用链接中的DrawMatToPic xff0c 有时会出现IplImage 类型转换问题 xff0c 因为用opencv做后续图像处理 xff0c 所以统一使用Mat类型 xff0c 可以showMat
  • CvMat、Mat、IplImage之间的转换详解及实例

    IplImage xff1a 在OpenCV中IplImage是表示一个图像的结构体 xff0c 也是从OpenCV1 0到目前最为重要的一个结构 xff1b 在之前的图像表示用IplImage xff0c 而且之前的OpenCV是用C语言
  • RGB和RGBQUAD的区别

    RGB和RGBQUAD的区别 昨天的晚上 为一个问题困扰了很长时间 几乎整个晚上都在弄一个小bug 感觉没有问题 但就是效果不理想 几次三番 查来查去 我想实现的功能是 生成一张图 图上有字 这张图是以一张指定的位图为背景的 我使用 COL
  • BITMAPINFO结构

    BITMAPINFO结构 BITMAPINFO结构具有如下形式 xff1a typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader RGBQUAD bmiColors 1 BITMAP
  • OpenCV中的cv::String和CString互相转换

    请注意是cv String xff0c 而不是std string xff0c 第一个字母是大写的 基本上CString转cv String网上都能查到 xff0c 而cv String转CString没有人提到 1 CString gt
  • MFC——文件打开和保存对话框(CFileDialog)

    最近要做一个文件打开和保存的对话框 xff0c 现将相关的代码记录如下 xff0c 用以备忘 xff01 所用控件 xff1a 2个静态标签 Static Text xff1a 用以显示功能标签 xff1b 2个文本框 Edit xff1a
  • OpenCv2 学习笔记(1) Mat创建、复制、释放

    OpenCV和VS2013的安装图文教程网上有很多 xff0c 建议安装好之后 xff0c 用VS2013建立一个空工程 xff0c 用属性管理器分别新建一个对应debug和release工程的props配置文件 xff0c 以后直接根据工
  • MFC C++ Cstring与string互转

    CString 转换成string 我试了很多的方法 xff0c 都不行 xff0c 我用的vs2010 解决方案 unicode CString sz1 61 L 34 abc 34 std string sz2 61 CT2A sz1
  • MFC+opencv 显示mat图像

    VS2015 43 opencv3 0 MFC显示图片中方法三在使用时 xff0c 只能显示彩色图像 xff0c 灰度图像显示有问题 xff0c 经查找 xff0c 是没有设置图像调色板的原因图片控件宽度不为4的倍数 显示错误 xff0c
  • 怎么去掉SVN前面的标签,如感叹号!

    1 问题陈述 xff1a 有时不小心将整个目录都检入 xff0c 导致整个页面的文件与目录都有svn的标签 xff0c 感叹号什么的 2 解决方法 xff1a 打开 所有程序 xff0c 找到TortoiseSVN gt Setting 修
  • 人工智能6.1 -- 机器学习算法篇(一)数据清洗、回归(含实践)

    人工智能 python xff0c 大数据 xff0c 机器学习 xff0c 深度学习 xff0c 计算机视觉 六 机器学习算法篇 xff08 一 xff09 数据清洗 回归 xff08 含实践 xff09 前言 目录算法热身结论 xff1
  • Tesseract-ocr 3.0.2源码 + VS2010项目工程 + 简单测试代码

    编译环境 Visual Studio 2010 所用类库版本 zlib 1 2 7 lpng1514 jpegsr9 tiff 4 0 3 giflib 5 0 4 leptonica 1 69 tesseract ocr3 0 2 下载地
  • Asprise OCR SDK 15.3试用版破解

    1 序言 之前因同事需要 xff0c 破解过Asprise OCR 4 0试用版本 xff0c 对这个库比较有印象 目前最新版本为15 3 xff0c 网上已经能下载到它的试用破解版本 xff0c 但似乎没有看到此版本的破解文章 Aspri