使用IDA破解TraceMe.exe
我发现用IDA破解TraceMe.exe比ODeasy多了。
打开IDA 后。直接搜索“序列号”。得到
双击跳转到反汇编窗体,按F5转换为类C++代码
signed int __stdcall DialogFunc(HWND hWnd, int a2, unsigned __int16 a3, int a4)
{
signed int v5; // ebx@9
int v6; // eax@11
HWND v7; // eax@12
HWND v8; // eax@12
HWND v9; // eax@12
HICON v10; // eax@20
const CHAR String2[4]; // [sp+8h] [bp-F4h]@1
int v12; // [sp+Ch] [bp-F0h]@1
int v13; // [sp+10h] [bp-ECh]@1
__int16 v14; // [sp+14h] [bp-E8h]@1
char v15; // [sp+16h] [bp-E6h]@1
char v16; // [sp+18h] [bp-E4h]@1
__int16 v17; // [sp+2Ch] [bp-D0h]@1
char v18; // [sp+2Eh] [bp-CEh]@1
char v19; // [sp+30h] [bp-CCh]@1
__int16 v20; // [sp+44h] [bp-B8h]@1
char v21; // [sp+46h] [bp-B6h]@1
CHAR String; // [sp+48h] [bp-B4h]@9
const CHAR String1; // [sp+98h] [bp-64h]@9
memcpy(&v16, "你输入字符要大于四个。", 0x14u);
v17 = *(_WORD *)"!";
v12 = dword_405054;
v18 = aUFIKGb[22];
v15 = byte_40505E;
memcpy(&v19, "序列号错误。再来一次!", 0x14u);
*(_DWORD *)String2 = dword_405050;
v20 = *(_WORD *)"!";
v14 = word_40505C;
v13 = dword_405058;
v21 = aAGmGb[22];
if ( a2 == 16 )
{
DestroyWindow(hWnd);
return 1;
}
if ( a2 == 272 )
{
v10 = LoadIconA(hInstance, (LPCSTR)0x70);
SendMessageA(hWnd, 0x80u, 1u, (LPARAM)v10);
SendDlgItemMessageA(hWnd, 110, 0xC5u, 0x50u, 0);
return 1;
}
if ( a2 != 273 )
return 0;
if ( (signed int)a3 > 1013 )
{
if ( a3 == 1014 || a3 == 40002 )
DialogBoxParamA(hInstance, (LPCSTR)0x67, hWnd, sub_401020, 0);
return 0;
}
if ( a3 != 1013 )
{
if ( a3 == 2 || a3 == 1002 )
{
SendMessageA(hWnd, 0x10u, 0, 0);
return 0;
}
return 0;
}
v5 = GetDlgItemTextA(hWnd, 110, &String, 81);//username
GetDlgItemTextA(hWnd, 1000, (LPSTR)&String1, 101);//序列号
if ( String && v5 >= 5 )//推断输入的username长度是不是大于5
{
LOBYTE(v6) = sub_401340(&String1, &String, v5);//此函数依据username生成序列号。并与输入的序列号进行比較
if ( v6 )//v6==1,表示username和序列号匹配
{
lstrcpyA(::String1, String2);
v7 = GetDlgItem(hWnd, 110);
EnableWindow(v7, 0);
v8 = GetDlgItem(hWnd, 1000);
EnableWindow(v8, 0);
v9 = GetDlgItem(hWnd, 1000);
}
else
{
lstrcpyA(::String1, &v19);
v9 = GetDlgItem(hWnd, 1000);
}
}
else
{
lstrcpyA(::String1, &v16);//username长度小于5。提示“你输入字符要大于四个”
v9 = GetDlgItem(hWnd, 110);
}
SetFocus(v9);
MessageBeep(0);
DialogBoxParamA(hInstance, (LPCSTR)0x79, hWnd, sub_401060, 0);
return 0;
}
bool __cdecl sub_401340(LPCSTR lpString1, LPSTR lpString2, signed int a3)
{
signed int v3; // ecx@1
int v4; // esi@1
signed int i; // eax@1
v3 = 3;
v4 = 0;
for ( i = 0; v3 < a3; ++i )
{
if ( i > 7 )
i = 0;
v4 += (unsigned __int8)byte_405030[i] * (unsigned __int8)lpString2[v3++];
}
wsprintfA(lpString2, "%ld", v4);
return lstrcmpA(lpString1, lpString2) == 0;
}
byte_405030[]数组在.data区:
char byte_405030[8]={0x0C,0x0A,0x13,0x09,0x0C,0x0B,0x0A,0x08}
假如我输入username为:tanyo
v4=121*12+111*10=2562
输入usernametanyo,序列号2562进行验证:
使用IDA破解TraceMe.exe的更多相关文章
- 【逆向笔记】OD工具使用-逆向TraceMe.exe
名词注释 System breakpoint:系统断点,OllyDbg用CreateProcessA加载DEBUG_ONLY_THIS_PROCESS参数执行,程序运行之后会触发一个INT13,在系统 ...
- Win7 64位使用IDA Pro 6.8调试64位exe程序
有点小坑,记录备忘. 首先搞个IDA Pro6.8,写本文时能找到的最高版本,试了下果然比6.6强大许多,其实6.6也没怎么用过...... 32位版本有个Local Win32 debugger,但 ...
- 逆向破解学习二之<TraceMe>
这次在破解TraceMe的时候,我有看过别人的视频.但是我并没有按照别人思路走,而是完全安全自己的思路试了一次.结果破解成功.新手学破解,如果有不对的地方,还请指出来. 004013A0 crackm ...
- 跨平台的神器RAD XE5 来啦!!!! XE5破解
什么叫真正的跨平台,DELPHI经过这么长时间的洗礼,如今走上了夸平台的开发之路.希望RAD加油! 先去下一个XE5 再去下一个破解神器 一个破解BDS.exe的神器 开始吧.为了成功破解,请先将电脑 ...
- Quartus II 12.0 下载、安装和破解
转载:http://www.cnblogs.com/imapla/archive/2012/09/10/2678814.html 20130417 Quartus II 12.0 不支持波形仿真,推荐 ...
- IAR Embedded Workbench for ARM 6.50.6 & 6.60.1 破解补丁
IAR EWARM 6.50.6 & 6.60.1 破解 破解原理和方法见:http://blog.csdn.net/chivalrys/article/details/8564568 IAR ...
- 一些Wifi破解姿势
wlan0:无线网卡设备 BSSID/AP's MAC:目标路由器的mac地址 Client's MAC:连接到此wifi客户端的mac地址 ESSID:这个无线的名字 大致思路: 获取bssid和e ...
- Android破解学习之路(十)—— 我们恋爱吧 三色绘恋 二次破解
前言 好久没有写破解教程了(我不会告诉你我太懒了),找到一款恋爱游戏,像我这样的宅男只能玩玩恋爱游戏感觉一下恋爱的心动了.. 这款游戏免费试玩,但是后续章节得花6元钱购买,我怎么会有钱呢,而且身在吾爱 ...
- [20171214]hashcat破解oracle口令.txt
[20171214]hashcat破解oracle口令.txt hashcat is the world's fastest and most advanced password recovery u ...
随机推荐
- WordPress主题reBorn最新破解版发布
今天上班的时候,没事浏览网页! 突然之间发现了这么一个标题,顿时让我产生了兴趣. 标题:WordPress主题reBorn最新破解版发布 不知道什么原因,现在原网址打不开了,可能是作者怕骚扰吧. 其实 ...
- Application received signal SIGSEGV
Application received signal SIGSEGV (null) (( 0 CoreFoundation 0x0000000181037d50 <redacted> + ...
- Jmeter常用的逻辑控制器
一.ForEach控制器 作用:ForEach Controlle一般和用户自定义变量(User Defined Variables)一起使用,其在用户自定义变量中读取一系列相关的变量.每一个线程下执 ...
- 梦想CAD控件文字COM接口知识点
一.参数绘制文字 在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOU ...
- Plan & Future
以下是OI省选前的数据结构与算法整理,可能还不是很全面.但是已经是全网相对比较全面的了.所有标记为“基础”“进阶”“中级”“提高”的知识为近些年来NOIp考察的内容,需重点掌握. 所有“高级”部分为N ...
- Luogu P4014 「 网络流 24 题 」分配问题
解题思路 还是建立超级源点和超级汇点,又因为题目给出规定一个人只能修一个工件,所以建图的时候还要讲容量都设为$1$. 人的编号是$1\rightarrow n$,工件的编号是$n+1\rightarr ...
- Gym - 101670F Shooting Gallery(CTU Open Contest 2017 区间dp)
题目&题意:(有点难读...) 给出一个数字序列,找出一个区间,当删除这个区间中的两个相同的数字后,只保留这两个数字之间的序列,然后继续删除相同的数字,问最多可以实行多少次删除操作. 例如: ...
- git 连接github.com 并配置密钥
传送门:http://www.jianshu.com/p/ff1034ed270e #备份ssh cd ~/.ssh $ ls $ mkdir key_backup //创建备份文件夹 $ cp id ...
- xfce 设在分辨率1920 1080
#自定义cvt 1920 1080 #查看系统显示器名称xrandr #设置分辨率xrandr --newmode "1920x1080_60.00" 173.00 1920 20 ...
- python json、 pickle 、shelve 模块
json 模块 用于序列化的模块 json,用于字符串 和 python数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load #!/usr/bin/env pyt ...