Category: Reverse Engineering

CuTeEvil Crackme 2 算法分析后续

环境配置 系统 : winxp 32bit 程序 : CuTeEvil Crackme 2 要求 : 找出注册解决方案 使用工具 :ida pro & od 静态分析 关键代码段在消息响应函数里: if ( GetDlgItemTextA(::hWnd, 1002, username, 32) ) { if ( GetDlgItemTextA(::hWnd, 1004, password_403250, 32) ) { len_name = lstrlenA(username); if ( len_name < 0x20 ) { for ( i = 32 – len_name; i; –i […]

经典算法数组求和 – Duelist’s Crackme #3 后续

环境配置 系统 : winxp 32bit 程序 : due-cm3 要求 : 找出注册解决方案 使用工具 :ida pro 静态分析 根据之前文章的分析,可知关键代码如下: INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) { INT_PTR result; // eax@4 int v5; // esi@7 int v6; // ecx@8 UINT v7; // [sp+0h] [bp-Ch]@0 if ( a2 == 273 ) { if ( a3 == […]

一条汇编指令引发的蝴蝶效应 后续

环境配置 系统 : winxp 32bit 程序 : crackme1 要求 : 输入口令 使用工具 :ida pro & od 开始分析 静态分析 通过参考之前得文章,可知程序关键流程的地址,直接在ida中生成伪代码: memset(&v6, 0xCCu, 0xA4u); hWnd = GetDlgItem(hDlg, 1002); GetWindowTextA(hWnd, &String, 20); hWnd = GetDlgItem(hDlg, 1003); GetWindowTextA(hWnd, &v8, 20); if ( sub_40100A() ) { v1 = sub_401028(&String); v2 = _itoa(v1, &v10, 10); result = strcmp(&v8, v2); if ( […]

浅析Seafile网盘apk的端对端加密方式

写在开篇 使用了架设在自己服务器上的Seafile一段时间,本菜对于其宣传的“端对端加密,数据在客户端解密”这个特性产生了好奇。很想了解一下网络传输、加密的过程是如何运作的。不多说,我们马上配置好Android上的抓包环境,用fiddler看看网络传输的内容吧[note]https://blog.csdn.net/ASSYIRAN/article/details/82994042[/note]。   环境配置 系统 : Windows 7、nexus 5 程序 : Seafile 2.2 for Android 程序下载地址 : https://www.dreamcracker.online/d/93572bfed8124e798eab/files/?p=/Crack_Me/com.seafile.seadroid2_83.apk 要求 : 分析逻辑 使用工具 : fiddler、apktool、Android Killer、Android Studio、 smalidea插件 抓包分析 确认端对端加密设置启用后,打开设置好的加密资料库secret,输入密码: 此时捕获到了这样几个包(关键位置已打马赛克): 这里post密码,服务器认可。 返回了资料库的一些信息,比较值得关注的有加密类型、magic、random_key。 接下来请求根目录内容,Response以json形式展现了资料库根目录内容。   此时,我们请求一个文件,看看传输来的数据如何。 获得服务器生成的下载的链接,然后得到一段密文。这里文件的大小是120字节,而传输过来的文件大小是128字节。   再随机拍张照片上传,此时抓到的文件数据和本地的很不相同   综上所述,我们可以做出如下猜测。 1.服务器对于加密资料库提供了端对端加密的方式,即文件在本地解密,即使有人攻击了传输链条中任意一环,也无法直接获得明文消息。 2.加密资料库以“端加密方式”开放时,会生成随机消息用于加密。 3.加密方式是通用的公开算法,且有可能是cbc模式。   提出假设 我们使用最新的apktool做为反编译工具,发现提示反编译成功。那么,直接设置我们的apktool的路径作为Android Killer的默认反编译器。我们直接全局搜索“加密”: <string name=”enc_on”>数据在本地解密</string> <string name=”enc_title”>加密资料库解密方式</string> <string name=”encrypt”>加密</string> 接着全局搜索enc_title,发现出现很多xml文件,再仔细看看,其实更多是重复的多语种的string资源文件。经过筛选,发现\res\xml\settings.xml的这一行很可疑: <com.seafile.seadroid2.ui.SwitchPreferenceCompat […]

Duelist’s Crackme #3 算法分析

系统 : Windows xp 程序 :skilLa’s_keyGenMe#3 程序下载地址 : https://www.dreamcracker.online/d/93572bfed8124e798eab/files/?p=/Crack_Me/due-cm3.rar 要求 : 写出注册机 使用工具 :OD,IDA,eXeScope 可在看雪论坛中查找关于此程序的讨论:传送门   将程序投入OD、按下F9运行,发现这个CM很奇怪,有2*9个checkbox,再用字符串查找发现如下字符: 中文搜索引擎, 条目 3 地址=0040117B 反汇编=push due-cm3.00402017 文本字符串=Congratulations! Please send a screenshot of your solution to duelist@beer.com! 定位到关键代码,然后用IDA生成伪代码: INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) { INT_PTR result; // eax@4 int v5; // esi@7 int v6; […]

skilLa’s_keyGenMe#3 算法分析

系统 : Windows xp 程序 :skilLa’s_keyGenMe#3 程序下载地址 : https://www.dreamcracker.online/d/93572bfed8124e798eab/files/?p=/Crack_Me/s_keygenme%233.rar 要求 : 写出注册机 使用工具 :OD,IDA 可在看雪论坛中查找关于此程序的讨论:传送门   将程序投入OD、按下F9运行,发现是一个标准的CM,通过输入用户名和密码判断是否有效。在用字符串查找发现如下字符: 中文搜索引擎, 条目 6 地址=0040115C 反汇编=push skilLa’s.0040302A 文本字符串=Goodboy, now write a keygen 查找到引用此字符串的相关代码段,经过修饰的伪代码如下: INT_PTR __thiscall DialogFunc(char *this, HWND hDlg, UINT a3, WPARAM a4, LPARAM a5) { CHAR v5; // t1@6 int (*v6)(); // eax@12 int v7; // ebx@13 if […]

CuTeEvil Crackme 2 算法分析

系统 : Windows xp 程序 :CuTeEvil Crackme 2 程序下载地址 : https://www.dreamcracker.online/d/93572bfed8124e798eab/files/?p=/Crack_Me/crckme2.rar 要求 : 写出注册机 使用工具 :OD,IDA 可在看雪论坛中查找关于此程序的讨论:传送门   将程序载入IDA,发现左边函数列表中有start,双击后F5查看: void __noreturn start() { WPARAM v0; // eax@2 hInstance = GetModuleHandleA(0); GetCommandLineA(); InitCommonControls(); v0 = sub_401031(hInstance, 0, dword_403228, 10); ExitProcess(v0); } 查看 sub_401031函数 WPARAM __stdcall sub_401031(HINSTANCE a1, int a2, int a3, int a4) { struct tagMSG […]

分析一个语义上有明显错误的cm

系统 : Windows xp 程序 : CrackMe V3 by Bxm.exe 程序下载地址 : https://www.dreamcracker.online/d/93572bfed8124e798eab/files/?p=/Crack_Me/crackme%20v3%20by%20bxm.rar 要求 : 分析逻辑 使用工具 :OD,载入map文件的od插件 可在看雪论坛中查找关于此程序的讨论:传送门   该cm的反调试机制和bxm的第二个cm的一模一样,在之前的post里已经分析过,只要先手动启动exe然后附加就可以轻松绕过。   打开exe之后是很典型的用户名-密码-输入窗口,我们需要找到其判断逻辑的代码所在,可是和第二版cm不同的是,这次的检查完调试器后的代码段并非在用户领空,查看其调用栈也没发现可疑的函数。   于是我随时输入了几个常用组合试了试,没想到一下子就提示成功信息了。我用的组合是”pediy”-“11″。   一般来说出现这样的情况的概率比较小,这里应该是程序逻辑上有些漏洞。先不管这么多,既然弹出了消息框,我们就可以找出相关的api函数下断点: CWnd::MessageBoxA。   这里,我们就按图索骥的找到了程序的关键代码所在。这里,可以将ida中识别出的数据导出成map,然后由od插件 LoadMapEx导入od,多按几下ctrl+a强制重新分析代码即可显示mfc的函数名了。 放出一段经由ida转换修改过得伪c代码: int __thiscall sub_401EA0(CWnd *this) { const char *v1; // eax@1 size_t err_len_2; // esi@19 const char *password; // eax@19 size_t v4; // eax@21 […]

一个简单的反调试cm

系统 : Windows xp 程序 : CrackMe V2 by Bxm 程序下载地址 : https://www.dreamcracker.online/d/93572bfed8124e798eab/files/?p=/Crack_Me/crackme_v2_by_bxm.rar 要求 : 写出注册机 使用工具 :OD 可在看雪论坛中查找关于此程序的讨论:传送门 首先使用OD载入程序并且按下F9运行,程序主界面主要由两个输入框组成,一个是用户名,另一个是key。我们在用户名输入框中随意输入数字,例如“1111111”。单击“注册”按钮,此时程序会退出。   按下Alt + K查看退出时的堆栈情况: 调用堆栈: 主线程 地址 堆栈 函数过程 / 参数 调用来自 结构 0012F464 7C92DE5C 包含ntdll.KiFastSystemCallRet ntdll.7C92DE5A 0012F560 0012F468 7C81CAB6 包含ntdll.7C92DE5C kernel32.7C81CAB4 0012F560 0012F564 7C81CB0E ? kernel32.7C81CA54 kernel32.7C81CB09 0012F560 0012F578 00402737 ? kernel32.ExitProcess CrackMe_.00402731 0012F574 […]

跟踪逆向之bxm (暂告一段落)

看雪用户bxm,注册时间2005-10-30,主题数:41 ,精华数:29。本文是为了方便跟踪,分析其精华文章而专门建立的索引。   在最新版看雪论坛,其精华文章被划分成了四页,此处我按照文章顺序也划分了四页[note]https://www.dreamcracker.online/d/206b1486a93c4145bdef/files/?p=/Tool/Script/spider/get_article_list_kanxue_only.py.md[/note]。每页的标题若是标注有下划线可以链接至其他页面的,证明此文章已经被分析过。   page one [原创]bxm第8个CrackMe,高手飘过 #关注文章 [原创]forgot’s CRACKME 1994算法分析 # 易语言,暂不分析 [原创]**处理系统5.7注册算法分析+注册机源代码 # 未找到下载地址 [原创]bxm的第5个CrackMe #关注文章 [原创]CrackMe.bxm.vc6.04 #关注文章 [原创]**Flash播放器V7.63的算法分析+注册机源码(简单) # 未找到下载地址 [原创]Am0r’s CrackMe的破解(VB) # 特殊语言,暂时不考虑 [原创]Bxm的第3个CrackMe # 进度 100% 。逻辑有误 #关注文章 [原创]Bxm的第二个CrackMe(算法简单) # 进度 100% 。 简单算法 #关注文章 [原创]webmasta’s算法分析(VB简单) # 特殊语言,暂时不考虑 page two [原创]skilLa’s keyGenMe#3算法分析(检测断点)# 进度 100% 。 简单算法 [原创]Serialcracker’s的算法分析(VB) # 特殊语言,暂时不考虑 […]