《pediy crackme 2007》序列号Bigman's Crackme6逆向过程
上传者:史杏荣|上传时间:2015-04-26|密次下载
《pediy crackme 2007》序列号Bigman's Crackme6逆向过程
《pediy crackme 2007》序列号Bigman's Crackme6
逆向过程
现在查看buffer参数的内容在左下方的内存窗口"CTRL+G"再输入EBP-100查看到了BUFFER的内存,也就是我输到软件里面的帐号,以确定刚刚调用的这个API GetDlgItemTextA是获取帐号用了。。然后单步,一直到1589这个call
发现他压入了刚刚的字符串、字符串长度、句柄,可疑,F7步入函数,观察函数的特征,发现这个函数也调用了GetDlgItemTextA,然后还调用了sprintf,也就是说这个函数获取到我输入的密匙,还有字符串处理。
代码:
00401305 /$ 55 push ebp
00401306 |. 89E5 mov ebp, esp
00401308 |. 81EC 2C040000 sub esp, 42C ; 开辟42C个字节空间
0040130E |. 53 push ebx
0040130F |. 56 push esi
00401310 |. 57 push edi
00401311 |. 8DBD FCFEFFFF lea edi, dword ptr [ebp-104]
00401317 |. 8D35 38204000 lea esi, dword ptr [402038]
0040131D |. B9 40000000 mov ecx, 40
00401322 |. F3:A5 rep movs dword ptr es:[edi], dword ptr
[esi] ; memcpy(ebp104,402038,sizeof()=0x40);
00401324 |. 8DBD E1FBFFFF lea edi, dword ptr [ebp-41F]
0040132A |. 8D35 38214000 lea esi, dword ptr [402138]
00401330 |. B9 40000000 mov ecx, 40
00401335 |. F3:A5 rep movs dword ptr es:[edi], dword ptr
[esi] ; memcpy(ebp41f,402138,40);
00401337 |. 8DBD E1FDFFFF lea edi, dword ptr [ebp-21F]
0040133D |. 8D35 38224000 lea esi, dword ptr [402238]
00401343 |. B9 40000000 mov ecx, 40
00401348 |. F3:A5 rep movs dword ptr es:[edi], dword ptr
[esi] ; memcpy(ebp21f,402238,40);
0040134A |. 8DBD E1FCFFFF lea edi, dword ptr [ebp-31F]
00401350 |. 8D35 38234000 lea esi, dword ptr [402338]
00401356 |. B9 40000000 mov ecx, 40
0040135B |. F3:A5 rep movs dword ptr es:[edi], dword ptr
[esi] ; memcpy(ebp31f,402338,5);
0040135D |. 8DBD DCFBFFFF lea edi, dword ptr [ebp-424]
00401363 |. 8D35 38244000 lea esi, dword ptr [402438]
00401369 |. B9 05000000 mov ecx, 5
0040136E |. F3:A4 rep movs byte ptr es:[edi], byte ptr
[esi] ; memcpy(ebp424,402438,5);
00401370 |. 8DBD D6FBFFFF lea edi, dword ptr [ebp-42A]
00401376 |. 8D35 3D244000 lea esi, dword ptr [40243D]
0040137C |. B9 03000000 mov ecx, 3
00401381 |. F3:66:A5 rep movs word ptr es:[edi], word ptr
[esi] ; memcpy(ebp42a,40243d,3);
00401384 |. 8DBD E1FEFFFF lea edi, dword ptr [ebp-11F]
0040138A |. 8D35 43244000 lea esi, dword ptr [402443]
00401390 |. B9 1B000000 mov ecx, 1B
00401395 |. F3:A4 rep movs byte ptr es:[edi], byte ptr
[esi] ; memcpy(ebp11f,402443,0x1b);
00401397 |. C745 FC 00000>mov dword ptr [ebp-4], 0 ; int ebp4=0; 0040139E |. 68 00010000 push 100 ; /Count = 100 (256.) 004013A3 |. 8D85 E1FCFFFF lea eax, dword ptr [ebp-31F] ; |
004013A9 |. 50 push eax ; |Buffer
004013AA |. 6A 66 push 66 ; |ControlID = 66 (102.) 004013AC |. FF75 08 push dword ptr [ebp+8] ; |hWnd
004013AF |. E8 84030000 call <jmp.&USER32.GetDlgItemTextA> ;
\GetDlgItemTextA
004013B4 |. 09C0 or eax, eax
004013B6 |. 0F84 48010000 je 00401504 ; if(eax==0)return; 004013BC |. B8 CF110000 mov eax, 11CF ; eax=11cf; 004013C1 |. 0FB68D E1FCFF>movzx ecx, byte ptr
[ebp-31F] ; ecx=ebp31F[0]
004013C8 |. 99 cdq
004013C9 |. F7F9 idiv ecx ; edx,eax/ecs=eax..........edx
004013CB |. 83FA 17 cmp edx, 17
004013CE |. 74 07 je short 004013D7 ; if(eax%ecx!=0x17) 004013D0 |. 31C0 xor eax, eax ; { eax=0;
004013D2 |. E9 2D010000 jmp 00401504 ; }else
004013D7 |> 31DB xor ebx, ebx ; { ebx=0;
004013D9 |. EB 0B jmp short 004013E6 ; while(ebx<ebpC) 004013DB |> 8B45 10 /mov eax, dword ptr
[ebp+10] ; ebp4+=ebp10[ebx++];
004013DE |. 0FBE0418 |movsx eax, byte ptr [eax+ebx]
004013E2 |. 0145 FC |add dword ptr [ebp-4], eax
004013E5 |. 43 |inc ebx
004013E6 |> 3B5D 0C cmp ebx, dword ptr [ebp+C]
004013E9 |.^ 7C F0 \jl short 004013DB ; 此处循环,在else逻辑内
004013EB |. 31DB xor ebx, ebx ; ebx=0;
004013ED |. E9 83000000 jmp 00401475 ; 跳转循环判断
004013F2 |> 8B55 10 /mov edx, dword ptr
[ebp+10] ; edx=[ebp10][0].....while(ebx<ebpC)循环体内 004013F5 |. 0FBE3C1A |movsx edi, byte ptr [edx+ebx]
004013F9 |. 8B75 FC |mov esi, dword ptr [ebp-4] ; esi=ebp4 004013FC |. 89D9 |mov ecx, ebx ; ecx=ebx; 004013FE |. C1E1 02 |shl ecx, 2 ; ecx*=4; 00401401 |. 89DA |mov edx, ebx ; edx=ebx; 00401403 |. 42 |inc edx ; edx++; 00401404 |. 29D1 |sub ecx, edx ; ecx-=edx; 00401406 |. 0FB68C0D E1FE>|movzx ecx, byte ptr [ebp+ecx-11F] ; ecx=ebp11f[ecx]
0040140E |. 89FA |mov edx, edi 00401410 |. 31CA |xor edx, ecx 00401412 |. 89F1 |mov ecx, esi 00401414 |. 0FAFCB |imul ecx, ebx 00401417 |. 29F1 |sub ecx, esi 00401419 |. 89CE |mov esi, ecx 0040141B |. 83F6 FF |xor esi, FFFFFFFF 0040141E |. 8DB432 4D0100>|lea esi, dword ptr [edx+esi+14D] 00401425 |. 8B4D 0C |mov ecx, dword ptr [ebp+C] 00401428 |. 89DA |mov edx, ebx 0040142A |. 83C2 03 |add edx, 3 0040142D |. 0FAFCA |imul ecx, edx 00401430 |. 0FAFCF |imul ecx, edi 00401433 |. 89F0 |mov eax, esi 00401435 |. 01C8 |add eax, ecx 00401437 |. B9 0A000000 |mov ecx, 0A 0040143C |. 31D2 |xor edx, edx 0040143E |. F7F1 |div ecx 00401440 |. 83C2 30 |add edx, 30
00401443 |. 88941D FCFEFF>|mov byte ptr [ebp+ebx-104], dl 0040144A |. 0FB6BC1D FCFE>|movzx edi, byte ptr [ebp+ebx-104] 00401452 |. 81F7 ACAD0000 |xor edi, 0ADAC 00401458 |. 89DE |mov esi, ebx 0040145A |. 83C6 02 |add esi, 2 0040145D |. 89F8 |mov eax, edi 0040145F |. 0FAFC6 |imul eax, esi 00401462 |. B9 0A000000 |mov ecx, 0A 00401467 |. 99 |cdq 00401468 |. F7F9 |idiv ecx 0040146A |. 83C2 30 |add edx, 30
0040146D |. 88941D FCFEFF>|mov byte ptr [ebp+ebx-104], dl 00401474 |. 43 |inc ebx
00401475 |> 3B5D 0C cmp ebx, dword ptr [ebp+C]
; edx=edi ; edx^=ecx ; ecx=esi ; ecx*=ebx ; ecx=esi ; esi=ecx ; esi=~esi;
00401478 |.^ 0F8C 74FFFFFF \jl 004013F2 ; for2此处循环在else分支内
0040147E |. 8D85 FCFEFFFF lea eax, dword ptr [ebp-104]
00401484 |. 50 push eax
00401485 |. 6A 54 push 54
00401487 |. 8D85 DCFBFFFF lea eax, dword ptr [ebp-424]
0040148D |. 50 push eax ; |Format
0040148E |. 8D85 E1FBFFFF lea eax, dword ptr [ebp-41F] ; |
00401494 |. 50 push eax ; |s
00401495 |. E8 CE020000 call <jmp.&USER32.wsprintfA>
0040149A |. 8B7D 0C mov edi, dword ptr [ebp+C]
0040149D |. 89F8 mov eax, edi
0040149F |. 0FAF45 FC imul eax, dword ptr [ebp-4]
004014A3 |. B9 64000000 mov ecx, 64
004014A8 |. 99 cdq
004014A9 |. F7F9 idiv ecx
004014AB |. 89D7 mov edi, edx
004014AD |. 83C7 30 add edi, 30
004014B0 |. 57 push edi
004014B1 |. 8DBD E1FBFFFF lea edi, dword ptr [ebp-41F]
004014B7 |. 57 push edi
004014B8 |. 8DBD D6FBFFFF lea edi, dword ptr [ebp-42A]
004014BE |. 57 push edi
004014BF |. 8DBD E1FDFFFF lea edi, dword ptr [ebp-21F]
004014C5 |. 57 push edi
004014C6 |. E8 9D020000 call <jmp.&USER32.wsprintfA>
004014CB |. 83C4 20 add esp, 20
004014CE |. 8D8D E1FDFFFF lea ecx, dword ptr [ebp-21F]
004014D4 |. 83C8 FF or eax, FFFFFFFF
004014D7 |> 40 /inc eax
004014D8 |. 803C01 00 |cmp byte ptr [ecx+eax], 0
004014DC |.^ 75 F9 \jnz short 004014D7
004014DE |. 50 push eax
004014DF |. 8D85 E1FCFFFF lea eax, dword ptr [ebp-31F]
004014E5 |. 50 push eax
004014E6 |. 8D85 E1FDFFFF lea eax, dword ptr [ebp-21F]
004014EC |. 50 push eax
004014ED |. E8 D0FDFFFF call 004012C2
004014F2 |. 83C4 0C add esp, 0C
004014F5 |. 83F8 00 cmp eax, 0
004014F8 |. 75 07 jnz short 00401501
004014FA |. B8 00000000 mov eax, 0
004014FF |. EB 03 jmp short 00401504
00401501 |> 31C0 xor eax, eax ; \wsprintfA ; |Format ; | ; |s ; \wsprintfA
00401503 |. 40 inc eax
00401504 |> 5F pop edi
00401505 |. 5E pop esi
00401506 |. 5B pop ebx
00401507 |. C9 leave
00401508 \. C3 retn
分析程序大概流程:初始化栈,然后定义了数组,调用memcpy进行数组初始化,获输入的密匙,如果得到的密匙长度为零,直接反回0,否则继续。
然后就是对莫运算的一个判断,如果余数不为0x17则跳到函数尾,结束当前函数,否则继续。 看到这种结构,一眼就能判定是循环,如图:
点击图片以查看大图
图片名称: 图像 005.jpg
查看次数: 0
文件大小: 89.4 KB
文件 ID : 97424
很容易转换为C里面的for(ebx=0;ebx<ebp_C,ebx++)ebp_4+=ebp_10[ebx];
此循环后边紧跟一个循环且在同一层次上。。因为二者循环体(左边那根黑线)没有交叉的地方。 而且能判定这两个循环在if else的同一分支上,因为点击“004013D2 |. /E9
2D010000 jmp 00401504”这一行的时候左边的红线把刚刚的两个函数的逻辑都给包起来了。。 然后调用连两个wsprintf函数,后call 004012C2。而且后边这些逻辑和前面两个循环一样是在同一个逻辑里。然后我得出了函数的大体运行流程:
代码:
int func(int hw,int len,char* pUser)
{
memcpy(......);
memcpy(......);
......................
memcpy(......);
GetDlgItemTextA;
if(len==0)return 0;
if(%!=0x17)
{
eax=0;
}
else
{
for();
for();
sprintf();
sprintf();
eax=call 004012C2;
}
return eax;
下载文档
热门试卷
- 2016年四川省内江市中考化学试卷
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
- 山东省滨州市三校2017届第一学期阶段测试初三英语试题
- 四川省成都七中2017届高三一诊模拟考试文科综合试卷
- 2017届普通高等学校招生全国统一考试模拟试题(附答案)
- 重庆市永川中学高2017级上期12月月考语文试题
- 江西宜春三中2017届高三第一学期第二次月考文科综合试题
- 内蒙古赤峰二中2017届高三上学期第三次月考英语试题
- 2017年六年级(上)数学期末考试卷
- 2017人教版小学英语三年级上期末笔试题
- 江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
- 重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
- 江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
- 江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
- 山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
- 【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
- 四川省简阳市阳安中学2016年12月高二月考英语试卷
- 四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
- 安徽省滁州中学2016—2017学年度第一学期12月月考高三英语试卷
- 山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
- 福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
- 甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷
网友关注
- 五年级测试答案
- 清华附中创新班竞赛选修课第二讲 有理数
- 读书如向阳花开
- 数学趣味冬令营
- 《西游记》阅读题《我要做好孩子》阅读题
- 三年组汉字小英雄比赛章程
- 节约无小事
- 学校防溺水安全就教育知识竞赛试卷
- 小学语文竞赛
- 推荐给小学一、二年级的课外读物
- 五年级奥数专题02:数的整除性
- 高中学生健康教育知识测试题0
- 小数奥数第13讲:鸡兔同笼问题与假设法
- 2014年1月寒假班三年级入学测试_教师版
- 更新版 阳光暑假三个 ‘一’
- 不要在校园内追逐打闹
- 家教
- 期末测试题(四)
- 解一元二次方程海量练习题
- “说文解字”决赛题型
- 五年级语文下册冲刺期中考试竞赛试卷
- 朝阳小学安全教育周知识教育题(答案)
- 《长方体的体积》课后练习题
- 2015年华罗庚数学竞赛答案解析
- 试卷1
- 2008学年升初一推荐生考试数学试卷 2
- 小学四年级语文知识竞赛试题
- (3份)角的认识2
- 小学三年级古诗比赛练习试题
- 绵阳市东辰国际学校小升初数学模拟试卷
网友关注视频
- 第4章 幂函数、指数函数和对数函数(下)_六 指数方程和对数方程_4.7 简单的指数方程_第一课时(沪教版高一下册)_T1566237
- 【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,湖北省
- 外研版英语三起5年级下册(14版)Module3 Unit1
- 七年级英语下册 上海牛津版 Unit5
- 冀教版英语五年级下册第二课课程解读
- 外研版英语三起5年级下册(14版)Module3 Unit2
- 外研版英语七年级下册module3 unit2第一课时
- 冀教版小学数学二年级下册1
- 外研版八年级英语下学期 Module3
- 冀教版英语四年级下册第二课
- 每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
- 【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,辽宁省
- 19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T502436
- 【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
- 外研版英语三起6年级下册(14版)Module3 Unit2
- 沪教版牛津小学英语(深圳用) 四年级下册 Unit 7
- 【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
- 沪教版八年级下册数学练习册一次函数复习题B组(P11)
- 3月2日小学二年级数学下册(数一数)
- 沪教版八年级下册数学练习册21.4(1)无理方程P18
- 三年级英语单词记忆下册(沪教版)第一二单元复习
- 七年级下册外研版英语M8U2reading
- 外研版英语七年级下册module3 unit2第二课时
- 苏科版八年级数学下册7.2《统计图的选用》
- 8.练习八_第一课时(特等奖)(苏教版三年级上册)_T142692
- 冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
- 苏科版数学 八年级下册 第八章第二节 可能性的大小
- 沪教版八年级下册数学练习册21.3(2)分式方程P15
- 沪教版牛津小学英语(深圳用) 四年级下册 Unit 8
- 二年级下册数学第一课
精品推荐
- 2016-2017学年高一语文人教版必修一+模块学业水平检测试题(含答案)
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
分类导航
- 互联网
- 电脑基础知识
- 计算机软件及应用
- 计算机硬件及网络
- 计算机应用/办公自动化
- .NET
- 数据结构与算法
- Java
- SEO
- C/C++资料
- linux/Unix相关
- 手机开发
- UML理论/建模
- 并行计算/云计算
- 嵌入式开发
- windows相关
- 软件工程
- 管理信息系统
- 开发文档
- 图形图像
- 网络与通信
- 网络信息安全
- 电子支付
- Labview
- matlab
- 网络资源
- Python
- Delphi/Perl
- 评测
- Flash/Flex
- CSS/Script
- 计算机原理
- PHP资料
- 数据挖掘与模式识别
- Web服务
- 数据库
- Visual Basic
- 电子商务
- 服务器
- 搜索引擎优化
- 存储
- 架构
- 行业软件
- 人工智能
- 计算机辅助设计
- 多媒体
- 软件测试
- 计算机硬件与维护
- 网站策划/UE
- 网页设计/UI
- 网吧管理