环境:windows xp

工具:
1、OllyDBG
2、IDA
3、exeinfo

查壳发现是程序无壳且用Delphi语言编写

可以通过搜索字符串的方式定位关键函数地址
这里定位到是

00427B44
ReadInput(a2, &v17);                          // 读取输入的usernameif ( StrLen(v17) >= 1                         // 判断username长度是否大于等于1&& (v5 = *(_DWORD *)(v2 + 492),ReadInput(v4,&v17),                                // 获取输入的serialserial = v17,v7 = *(_DWORD *)(v2 + 476),ReadInput(v8,&username),                           // 获取输入的usernameKeyFun_427A20(username, serial) >= 12345678) )// 判断这个几个条件是否符合要求{v10 = (HWND)sub_4199FC();MessageBoxA_0(v10, "Congratulation ! You've Did It.\rMail Us : ekhmail@egroups.com", "Success", 0);}else{v9 = (HWND)sub_4199FC();MessageBoxA_0(v9, "Wrong Serial Number !", "ERROR", 0);}

可以看出程序判断输入的username是否为空后就进KeyFun函数进行判断了,当KeyFun函数返回值大于等于12345678时才能得到正确结果

KeyFun:

  v4 = StrLen(username);if ( v4 > 0 ){v5 = 1;do{v6 = v5;v7 = *(_BYTE *)(username + v5 - 1);       // 遍历每个字符v8 = __OFADD__(v7, v2);v9 = v7 + v2;if ( v8 )                                 // 判断这个字符是不是0v5 = sub_402A30(v19, v20, v21);v3 = off_428880;                          // LANNYDIBANDINGINANAKEKHYANGNGENTOTv2 = (unsigned __int8)off_428880[v6 - 1] | (v9 << 8);if ( v2 < 0 )                             // 如果移动后是负数{v10 = -v2;                              // 取绝对值if ( (unsigned __int64)-(signed __int64)v2 >> 32 )v5 = sub_402A30(v19, v20, v21);v2 = v10;}++v5;--v4;}while ( v4 );                               // 循环次数为username长度}v11 = v2 ^ 0x12345678;                     //上面就是利用username来计算出v11sub_4063F4(v3, &v22);v12 = StrLen(v22);                            // serial长度if ( v12 > 0 ){do{_EDX = v11 % 10;                          //这里是计算v11的每一位数字,得到该数字为下标所对应字符,将所有对应的组合起来就是serial__asm { bound   edx, qword_427B3C }LOBYTE(_EDX) = byte_428884[v11 % 10];     // LANNY5646521sub_4036D8(10, _EDX);sub_4037B8(v14, v22);v11 /= 10;--v12;}while ( v12 );}flag = strcmp(v23, serial);if ( flag )                                   // flagv16 = 12345678;elsev16 = 1234577;v17 = v21;__writefsdword(0, v19);v21 = (int *)&loc_427B31;sub_403558(v17, 4);return v16;

160 - 54 eKH相关推荐

  1. 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具

    转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...

  2. Earth Mover's Distance (EMD)距离

    原文: http://d.hatena.ne.jp/aidiary/20120804/1344058475 作者: sylvan5 翻译: Myautsai和他的朋友们(Google Translat ...

  3. 拍乐云基于AV1的实时视频系统技术实践

    点击上方"LiveVideoStack"关注我们 实时视频系统对于时延的要求极高,视频编码器必须满足实时性的要求.新一代视频标准AV1相比主流H.264在Rate-distorta ...

  4. 用Java 编写菜单价格和的程序_使用JAVA 编写一个程序,显示5中商品价格,用户可以选择多种商品并在其后的文本框输入购买的数量。...

    展开全部 用java Swing做的?给你个代码,还有运行结果图 package my.test.main; import java.awt.BorderLayout; import java.awt ...

  5. 又一个网页下载者木马

    文件: http://xxxx.xxx.xxx/web.htm <SCRIPT LANGUAGE="JavaScript"> eval("\146\165\1 ...

  6. 《Android Studio开发实战 从零基础到App上线》源码运行问题解答

    本书提供了所有章节的完整源码下载,自上市以来陆续收到读者的意见反馈,现将与源码有关的问题汇总归类如下,方便更多的朋友解决源码运行过程中发现的问题: 一.打开本书源码时,出现"Plugin w ...

  7. 心电图心电轴怎么计算_心电图心电轴计算表

    -20 240° 00 ′ -119° 09 ′ -118° 15 ′ -117° 19 ′ -116° 21 ′ -115° 17 ′ -114° 11 ′ 113° 01 ′ -111° 47 ′ ...

  8. 什么是非关系型数据库,Redis概述、安装及部署Redis群集

    目录 一.什么是非关系型数据库 (1)关系型数据库 (2)非关系型数据库 (3)非关系型数据库产生背景 -High performance--对数据库高并发读写需求 -Huge Storage--对海 ...

  9. 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿

    目录 主要功能 环境配置 实现过程 1.设计ui 主界面 弹出框 窗体文件 2.主体实现 打开文件 计算函数 代码附录 title.ui titleok.ui title.py titleok.py ...

最新文章

  1. 软件公司与非软件公司区别(纯个人看法)
  2. Server.Transfer()與Response.Redirect()的區別
  3. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权
  4. 相册权限_手机相册太乱?1分钟教你快速管理自己的照片,非常好用!
  5. 面试题,你如何进行产品改版的?
  6. 剖析 SurfaceView Callback以及SurfaceHolder
  7. 动态代理(2)----动态代理和AOP
  8. c语言3到7位水仙花数流程图_C语言入门基础整理
  9. ubuntu jdk tomcat mysql_linux-ubuntu tomcat jdk 及 mysql 安装配置
  10. 机器学习的几个误区-转载
  11. verilog 之数字电路 边沿检测电路
  12. native2ascii
  13. 所用计算机网卡品牌得的型号,惠普无线网卡驱动,详细教您如何
  14. link标签的用法及link属性大全
  15. 戒指你戴对了吗?Meet Surprise教你正确的戴法
  16. 高可靠性技术之RRPP和VRRP
  17. 五月的庐州城《柳絮》
  18. Transformers预训练模型使用:文本摘要 Summarization
  19. 零基础学C语言 第3版 pdf
  20. linux建立ss服务器,如何在linux服务器上部署ss服务

热门文章

  1. java instantiation,Instantiation of List (Java)
  2. 背包问题 贪心算法 java_JS基于贪心算法解决背包问题
  3. 有什么用_app用什么软件编写
  4. gitlab或者gitee生成/添加SSH公钥的解决办法
  5. 前端开发攻城狮必须知道的开发环境和插件
  6. python中改变参数值的方法_Python实现partial改变方法默认参数
  7. 计算机教育 如何投稿,高职院校计算机教育论文投稿教育杂志-教育论文投稿
  8. HTML5 Inline SVG
  9. Angular网络请求的封装
  10. springMVC开启声明式事务实现操作日志记录