蝙蝠岛资源网 Design By www.hbtsch.com
本文采用了《加密与解密》第4版的3.5.1的示例文件,因为很容易下载到,在这里就不再传源文件了,大家自行寻找下载这个crackme.exe。本文重点给出了如何不运行debugger,只采用cpu 模拟器x86emu 插件,结合IDA进行伪动态调试快速解码到密码。
Step1.打开exe文件(注意exe所在目录不能有中文,否则后面会报错),搜索所有字符串,找到OK字样的
step 2,找到引用的函数,如下, 这个函数就是关键了。将光标定到第一句话, 然后按下alt+f8打开x86emu插件
插件初始值如下
step3. 仔细观察一下,这个函数其实有三个参数,分别是
.text:00401040 hDlg = dword ptr 4
.text:00401040 arg_4 = dword ptr 8
.text:00401040 arg_8 = dword ptr 0Ch
也就是意味着,我们调用这个函数的时候 要往堆栈里面压入这三个参数。所以需要点击插件的push Data按钮,函数压入模拟的参数,具体值是多少并不重要。主要是保持堆栈平衡。
比如压入如上几个值作为参数实际值(中间用空格分开)
点击确定后,可见ESP进行相应的调整。
step4, 往下观察一下,我们如何才能到达OK那一步呢? 我们可以采用最粗暴的方法,因为x86emu在保证stack平衡的前提下,可以任意跳过你想跳过的函数或者不必要的代码,那么我们可以采用step按钮执行如下指令(也可以将光标放在00401071,点击run to cursor达到这一步)
.text:00401040 sub esp, 14h
.text:00401043 xor eax, eax
.text:00401045 mov ecx, dword_403034
.text:0040104B mov dl, byte_403038
.text:00401051 mov [esp+14h+var_B], eax
.text:00401055 mov [esp+14h+var_7], eax
.text:00401059 mov [esp+14h+String], 0
.text:0040105E mov [esp+14h+var_3], al
.text:00401062 mov eax, [esp+14h+arg_4]
.text:00401066 sub eax, 10h
.text:00401069 mov dword ptr [esp+14h+String2], ecx
.text:0040106D mov [esp+14h+var_10], dl
text:00401071 jz loc_401162
执行完毕后对应的窗口内容如下:
到达这里后,我们有必要判断EFLAGS么,其实必要性不大,我们从结构来看,只要一路往下运行,遇到条件转移就忽略,就能最终达到OK的效果。
所以下一步我们点击skip按钮,直接忽略jz
step6, 同理对于如下代码的所有jz和jnz都直接点skip按钮。
.text:00401071 jz loc_401162
.text:00401077 sub eax, 100h
.text:0040107C jz loc_401121
.text:00401082 dec eax
.text:00401083 jnz loc_40116D
.text:00401089 mov eax, [esp+14h+arg_8]
.text:0040108D and eax, 0FFFFh
.text:00401092 sub eax, 3EAh
.text:00401097 jz short loc_401105
.text:00401099 sub eax, 0Bh
.text:0040109C jnz short loc_401116
.text:0040109E mov ecx, [esp+14h+hDlg]
.text:004010A2 lea eax, [esp+14h+String]
step7, 下面来到如下代码,如下代码是调用API去获取对话框输入的,因为这个其实对于我们不重要,因为程序没有真正被运行。所以我们要让x86emu直接忽略掉这个函数的调用过程,方法是将光标放到text:004010B5,然后点击jump to cursor按钮,这样,中间的代码就直接跳过去,不参与模拟过程。
text:004010A6 push 0Bh ; cchMax
.text:004010A8 push eax ; lpString
.text:004010A9 push 3E8h ; nIDDlgItem
.text:004010AE push ecx ; hDlg
.text:004010AF call ds:GetDlgItemTextA
.text:004010B5 lea edx, [esp+14h+String2]
执行完毕后的界面如下了
step8, 下面是关键的部分啦,因为调用了字符串比对函数,我们现在的目的就是看比对的目标字符串是多少?
点击两次step按钮,运行完如下粗体的指令.
.text:004010B5 lea edx, [esp+14h+String2]
.text:004010B9 lea eax, [esp+14h+String]
.text:004010BD push edx ; lpString2
.text:004010BE push eax ; lpString1
.text:004010BF call ds:lstrcmp
.text:004010B9 lea eax, [esp+14h+String]
再次查看x86emu的界面
可见两个字符串指针, EAX=0x0012FFAC, EDX=0x0012FFA4. 这两个里面必定有一个指向的是真实密码,另一个指向的我们输入的值(因为我们没有真正输入,所以这个是无效的)
按下G键,分别跳转到两个地址,我们看内容
可以看到EDX指向的是一个字符串,转换为ASCII就是1899. 因为是little-endian,所以应该反过来是9981. 那么正确的密码应该是9981.
至此为止,我们没有运行这个程序全部,就是模拟了它的片段就得到了密码。可以说是一种新的途径。这个方法对于病毒分析还是更安全的,因为程序没有真正在电脑上运行。而且可以让你对于可以的函数更聚焦,可以自己控制很多系统级的参数,对于没有必要的API就可以直接跳过。
下面试一下我们的破解结果。大功告成。
蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
暂无step by step采用x86emu进行部分函数调试的方法破解crackme密码的评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 房东的猫2017-房东的猫[科文音像][WAV+CUE]
- 杨乃文.2016-离心力(引进版)【亚神音乐】【WAV+CUE】
- 群星.2024-珠帘玉幕影视原声带【TME】【FLAC分轨】
- 芝麻龙眼.2008-光阴隧道民歌记录3CD【乡城】【WAV+CUE】
- 谭艳《再度重相逢HQII》头版限量[低速原抓WAV+CUE][549M]
- ABC唱片《蔡琴三十周年纪念版》6N纯银镀膜 [WAV+CUE][1.1G]
- 海来阿木《西楼情歌》开盘母带[WAV+CUE][1.1G]
- TheGesualdoSix-QueenofHeartsLamentsandSongsofRegretforQueensTerrestrialandCele
- 王建杰2011-荣华富贵[喜玛拉雅][WAV+CUE]
- 孙悦2024-时光音乐会[金蜂][WAV+CUE]
- 秦宇子.2020-#YUZI【海蝶】【FLAC分轨】
- 苏有朋.1994-这般发生【华纳】【WAV+CUE】
- 小虎队.1990-红蜻蜓【飞碟】【WAV+CUE】
- 雷婷《寂寞烟火HQⅡ》头版限量[低速原抓WAV+CUE][1G]
- 赵传1996《黑暗英雄》台湾首版[WAV+CUE][1G]