160个练手CrackMe-034

160个练手CrackMe-0341 无壳 FileKey 类型 2 OD 载入 00 6A00push0x0 hTemplateFil NULL00 push0x80 Attributes NOR

1、无壳

FileKey类型 

2、OD载入

00 |. 6A 00 push 0x0 ; /hTemplateFile = NULL 00 |. 68 push 0x80 ; |Attributes = NORMAL 0040101D |. 6A 03 push 0x3 ; |Mode = OPEN_EXISTING 0040101F |. 6A 00 push 0x0 ; |pSecurity = NULL 00 |. 6A 03 push 0x3 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE 00 |. 68 000000C0 push 0xC0000000 ; |Access = GENERIC_READ|GENERIC_WRITE 00 |. 68 D push Cruehead.004020D7 ; |CRACKME3.KEY 0040102D |. E8 call <jmp.&KERNEL32.CreateFileA> ; \CreateFileA 00 |. 83F8 FF cmp eax,-0x1 00 |. 75 0C jnz XCruehead.00 00 |> 68 0E push Cruehead.0040210E ; CrackMe v3.0 0040103C |. E8 B call Cruehead.004012F5 ; " - Uncracked" 00 |. EB 6B jmp XCruehead.004010AE 00 |> A3 F mov dword ptr ds:[0x4020F5],eax ; 文件句柄 00 |. B8 mov eax,0x12 0040104D |. BB 0 mov ebx,Cruehead.00 ; ASCII " opqr" 00 |. 6A 00 push 0x0 ; /pOverlapped = NULL 00 |. 68 A0 push Cruehead.004021A0 ; |pBytesRead = Cruehead.004021A0 00 |. 50 push eax ; |BytesToRead => 12 (18.) 0040105A |. 53 push ebx ; |Buffer => Cruehead.00 0040105B |. FF35 F push dword ptr ds:[0x4020F5] ; |hFile = 000001E8 00 |. E8 call <jmp.&KERNEL32.ReadFile> ; \ReadFile 00 |. 833D A0>cmp dword ptr ds:[0x4021A0],0x12 ; 读取长度 0x12 0040106D |.^ 75 C8 jnz XCruehead.00 0040106F |. 68 0 push Cruehead.00 ;  00 |. E8 call Cruehead.00 ; 处理函数 1 00 |. 8135 F>xor dword ptr ds:[0x4020F9],0x 00 |. 83C4 04 add esp,0x4 00 |. 68 0 push Cruehead.00 ;  0040108B |. E8 AC020000 call Cruehead.0040133C ; 处理函数 2 00 |. 83C4 04 add esp,0x4 00 |. 3B05 F cmp eax,dword ptr ds:[0x4020F9] ; 比较 00 |. 0F94C0 sete al 0040109C |. 50 push eax 0040109D |. 84C0 test al,al 0040109F |.^ 74 96 je XCruehead.00 ; 跳向失败 

call 00()处理Serial前14位得到一个值,和Serial的后4位比较,相同成功,不相同失败;

原型:

int call_00(char *serial){ int sum = 0; for(int i = 0; i < 0xE; i++){ serial[i] ^= 0x41 + i; sum += serial[i]; if(serial[i] == 0) break; } return sum ^ 0x; } if(call_00(serial) == *(int *)(serial + 14)) "Y"; else "N"; 

3、注册机

int call_00(char *serial){ int sum = 0; for(int i = 0; i < 0xE; i++){ serial[i] ^= 0x41 + i; sum += serial[i]; if(serial[i] == 0) break; } return sum ^ 0x; } int main(){ FILE *fp; char serial[15]; int ret; cout << "Please enter a string with a length of 14:" << endl; cin >> serial; fp = fopen("CRACKME3.KEY", "wb+"); fwrite(serial, 0x0E, 1, fp); fflush(fp); ret = call_00(serial); fwrite(&ret, 0x04, 1, fp); // cout << hex << ret; return 0; }

这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233821.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大学四年零基础自学Java的路线

    大学四年零基础自学Java的路线屌丝逆袭,成神之路

    2022年6月20日
    21
  • n皇后问题 回溯法java_Java解决N皇后问题

    n皇后问题 回溯法java_Java解决N皇后问题问题描述:   要求在一个n×n的棋盘上放置n个皇后,使得它们彼此不受攻击。   按照国际象棋的规则,一个皇后可以攻击与之同一行或同一列或同一斜线上的任何棋子。   因此,n皇后问题等价于:要求在一个n×n的棋盘上放置n个皇后,使得任意两个皇后不在同一行或同一列或同一斜线上。一个皇后的攻击范围:                                    n皇后的解空间—完全n叉树…

    2022年9月30日
    2
  • 深入理解Batchnorm

    深入理解Batchnorm这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下BatchNormalization的原理,以下为参考网上几篇文章总结得出。  BatchNormalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性。虽然有些细节处理还解释不清其理论原因,但是实践证明好用才是真的好,别忘了DL从Hinton对深层网络做Pre-Train开…

    2022年6月9日
    29
  • linux下的C语言编程(总结篇)

    linux下的C语言编程(总结篇)【声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:feixiaoxing@163.com】在Linux下面关于C语言的内容其实挺多的。不同的人关注的地方也不一样。关注系统设计的人可能更关注整个linux系统的结构;设计驱动的人可能更关注linux驱动的配置和实现;而我在这里所关注的只是linux应用层方面的内容,属于最基础的内容,当然也是最重要的内容。实际上对应于………

    2022年7月26日
    6
  • vscode查看源代码_vscode新建python项目

    vscode查看源代码_vscode新建python项目最近从pycharm转到了VScode,但是发现vscode不能跳转到源码,百度之后发现要装一个vscode的python的插件,插件就是「Pylance」。装好这个插件后应该可以使用pycharm一样的快捷方式连接到每个组件的源代码了,具体操作是:1.如果是windows系统,按住Ctrl键+鼠标点击待查看的方法或者类名2.如果是mac系统,按住Command键+…

    2022年8月23日
    27
  • 数据分析师:大数据建模,你需要了解九大形式

    数据分析师:大数据建模,你需要了解九大形式

    2021年11月21日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号