160 - 54 eKH
环境: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相关推荐
- 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具
转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...
- Earth Mover's Distance (EMD)距离
原文: http://d.hatena.ne.jp/aidiary/20120804/1344058475 作者: sylvan5 翻译: Myautsai和他的朋友们(Google Translat ...
- 拍乐云基于AV1的实时视频系统技术实践
点击上方"LiveVideoStack"关注我们 实时视频系统对于时延的要求极高,视频编码器必须满足实时性的要求.新一代视频标准AV1相比主流H.264在Rate-distorta ...
- 用Java 编写菜单价格和的程序_使用JAVA 编写一个程序,显示5中商品价格,用户可以选择多种商品并在其后的文本框输入购买的数量。...
展开全部 用java Swing做的?给你个代码,还有运行结果图 package my.test.main; import java.awt.BorderLayout; import java.awt ...
- 又一个网页下载者木马
文件: http://xxxx.xxx.xxx/web.htm <SCRIPT LANGUAGE="JavaScript"> eval("\146\165\1 ...
- 《Android Studio开发实战 从零基础到App上线》源码运行问题解答
本书提供了所有章节的完整源码下载,自上市以来陆续收到读者的意见反馈,现将与源码有关的问题汇总归类如下,方便更多的朋友解决源码运行过程中发现的问题: 一.打开本书源码时,出现"Plugin w ...
- 心电图心电轴怎么计算_心电图心电轴计算表
-20 240° 00 ′ -119° 09 ′ -118° 15 ′ -117° 19 ′ -116° 21 ′ -115° 17 ′ -114° 11 ′ 113° 01 ′ -111° 47 ′ ...
- 什么是非关系型数据库,Redis概述、安装及部署Redis群集
目录 一.什么是非关系型数据库 (1)关系型数据库 (2)非关系型数据库 (3)非关系型数据库产生背景 -High performance--对数据库高并发读写需求 -Huge Storage--对海 ...
- 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿
目录 主要功能 环境配置 实现过程 1.设计ui 主界面 弹出框 窗体文件 2.主体实现 打开文件 计算函数 代码附录 title.ui titleok.ui title.py titleok.py ...
最新文章
- 软件公司与非软件公司区别(纯个人看法)
- Server.Transfer()與Response.Redirect()的區別
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权
- 相册权限_手机相册太乱?1分钟教你快速管理自己的照片,非常好用!
- 面试题,你如何进行产品改版的?
- 剖析 SurfaceView Callback以及SurfaceHolder
- 动态代理(2)----动态代理和AOP
- c语言3到7位水仙花数流程图_C语言入门基础整理
- ubuntu jdk tomcat mysql_linux-ubuntu tomcat jdk 及 mysql 安装配置
- 机器学习的几个误区-转载
- verilog 之数字电路 边沿检测电路
- native2ascii
- 所用计算机网卡品牌得的型号,惠普无线网卡驱动,详细教您如何
- link标签的用法及link属性大全
- 戒指你戴对了吗?Meet Surprise教你正确的戴法
- 高可靠性技术之RRPP和VRRP
- 五月的庐州城《柳絮》
- Transformers预训练模型使用:文本摘要 Summarization
- 零基础学C语言 第3版 pdf
- linux建立ss服务器,如何在linux服务器上部署ss服务
热门文章
- java instantiation,Instantiation of List (Java)
- 背包问题 贪心算法 java_JS基于贪心算法解决背包问题
- 有什么用_app用什么软件编写
- gitlab或者gitee生成/添加SSH公钥的解决办法
- 前端开发攻城狮必须知道的开发环境和插件
- python中改变参数值的方法_Python实现partial改变方法默认参数
- 计算机教育 如何投稿,高职院校计算机教育论文投稿教育杂志-教育论文投稿
- HTML5 Inline SVG
- Angular网络请求的封装
- springMVC开启声明式事务实现操作日志记录