随笔分类 - reverse
reverse
摘要:bool IsInsideVMWare(){ bool rc = true; __try { __asm { push edx push ecx push ebx mov eax, 'VMXh' mov ebx, 0 // 将ebx设置为非幻数’VMXH’的其它值 mov ecx, 10 // 指定功能号,用于获取VMWare版本,当它为0x14时用于获取VMware内存大小 mov edx, 'VX' // 端口号 in eax, dx // 从端口...
阅读全文
摘要:【最近想试试CoolChm,可惜貌似没有破解版的,但是看到有关于注册算法的分析,就保留一个看看,随带看看能不能写出注册机。。。】=========================我自己写的代码=======================以下代码在虚拟机中测试成功,但实机没有成功,我就不管了,反正我也只是在虚拟机中用CoolChm,如果谁有兴趣,自己写一个。void CCoolChmDlg::OnButtonGetkey() { //获取机器码 char m_Volume[256];//卷标名 char m_FileSysName[256]; DWORD m_S...
阅读全文
摘要:源文件来自“读览天下”,基于帐号的网络验证。http://www.dooland.com/magazine/brand.php?id=8421不知道什么是网络验证,看别人破解的,就自己破解了(这样会比较放心)。下载地址:http://115.com/folder/fetcibxt破解记录:0041169C修改此处的跳转为jmp即可。为什么现在这些都不加壳呢?至少对付我这种菜鸟很简单吧。
阅读全文
摘要:一个keygen,加的upx,以前没脱掉。今天不小心就脱了004295BD > 84E7 test bh, ah004295BF 87C8 xchg eax, ecx004295C1 11EE adc esi, ebp004295C3 0FCD bswap ebp004295C5 0FAFDA imul ebx, edx004295C8 55 push ebp004295C9 8BEC ...
阅读全文
摘要:前一段时间在《黑客防线》上看到一篇文章《一次艰难的渗透纪实》其中有提到superdic的破解过程,但是我在本机上破解的时候却没有成功。然后又经历各种挫折,只好停止研究。昨天心情不好,就研究下这个,顺带破解了网上也有很多这个的破解,不喜欢的可以自己去下载。下载地址:http://115.com/file/ancie8tu如果不放心我破解的,你可以在你觉得可以信赖的网站下载原版然后用c32asm打开,在文件偏移4309处把85C0修改为B101即可。
阅读全文
摘要:最近比较蛋伤,所以就很少学破解和逆向了,今天在某群看到有人在研究这个的破解,几次都没成功,我看下文件不大,就下来研究下官方地址:http://www.wsgsoft.com/emp/【破解声明】:只是感兴趣,没有其它目的,如果你喜欢该软件,请支持正版。首先,查壳,是无壳的,Microsoft Visual C++ 8.0 *运行试试,结果有这样一个提示根据提示下MessageBoxW断点然后运行程序,然对话框弹出返回到用户代码00413795 |. 6A 30 push 30 ; /Style = MB_OK...
阅读全文
摘要:【软件名称】:U盘专杀工具 - USBKiller单机版【官方网站】:http://www.upanshadu.com/【作者声明】:仅作交流学习之用,如果你喜欢该软件,请支持正版最近在图书馆回来老是带一堆病毒回来,烦死,而且我又不喜欢杀毒软件,所以就破解了这个软件,自己用用。删除了升级模块,不支持升级。下载地址:http://115.com/file/an0tm5t8下载说明:下载有密码,为了不必要的麻烦,仅供本班同学使用,密码是三个数字,代表我们的班级 。
阅读全文
摘要:不知道为什么 ,最近睡眠不好,晚上睡不着,早上醒得早。看吧,今天早上又被鸟吵醒了。醒了,看着无事来破解下这个,在测试过程中发现,这个crackme有个搞笑的地方。就是注册码只要是1234,无论你输入或者不输入用户名,都会提示成功(当然有例外,这也是本题的所在),到官方一提交,夷,错了,我勒个去,居然没看题目就做了。原来是要求用户名必须是2012,得,你牛。看我怎么搞定你!当然,首先还是找到按钮事件。 1 00401004 . 55 push ebp 2 00401005 . 8BEC mov ebp, esp 3 0040100...
阅读全文
摘要:只是从crackme的情况来看,这次的题目没有成信院的难。首先,E-Debug Events找到按钮事件。 1 004010A1 /. 55 push ebp 2 004010A2 |. 8BEC mov ebp, esp 3 004010A4 |. 81EC 08000000 sub esp, 8 4 004010AA |. 6A FF push -1 5 004010AC |. 6A 08 push 8 6 004010AE |. 68 02000116 p...
阅读全文
摘要:#include "stdafx.h"int main(int argc, char* argv[]){ int sum=0; int i=0; while (i<=100) { sum += i++; } printf("sum=%d\n",sum); return 0;} 既然IDA给我们反编译的时候变化了,我就学习下吧。int __cdecl main(int argc, const char **argv, const char **envp){ signed int v3; // eax@1 int v4; // ecx@1 v4 = 0
阅读全文
摘要:#include "stdafx.h"int main(int argc, char* argv[]){ int sum=0; for (int i=0;i<=100;i++) { sum=sum+i; } printf("sum=%d\n",sum); return 0;} 这是一个求1+2+3+...+100的和的过程。int __cdecl main(int argc, const char **argv, const char **envp){ signed int v3; // eax@1 int v4; // ecx@1 v4 = 0;
阅读全文
摘要:#include "stdafx.h" int main(int argc, char* argv[]){ int a; scanf("%d",&a); if (a==1) { printf("你输入的数据为1\n"); } else if(a==2) { printf("你输入的数据是2\n"); } else { printf("你输入的数据既不是1也不是2\n"); } return 0;} 其实也差不多,分支下还有分支而已,有点像树的感觉。
阅读全文
摘要:#include "stdafx.h"int main(int argc, char* argv[]){ int a; scanf("%d",&a); if (a==1) { printf("你输入的数据为1\n"); } else { printf("你输入的数据不是1\n"); } return 0;} 同样,这个if-else也很简单,重点是要能用IDA认真的学习一遍。和if一样,没多大不同,只是选择的分支多了一个而已,在反汇编的时候,那个是if那个是else,还重要么?
阅读全文
摘要:// if语句.cpp : Defines the entry point for the console application.//#include "stdafx.h"int main(int argc, char* argv[]){ int a; scanf("%d",&a); if (a==1) { printf("你输入的数据为1\n"); } return 0;}这个代码看起来更简单,但我们不研究它,我们研究的是它的反汇编代码。这样看来,if语句也很漂亮。不过,当我们遇到一堆if的时候,就会觉得头疼了,因为我们要
阅读全文
摘要:先来看源代码: 1 // 函数的嵌套调用.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 6 int main(int argc, char* argv[]) 7 { 8 int max(int x,int y); 9 int a,b,c,d;10 scanf("%d,%d,%d",&a,&b,&c);11 d=max(max(a,b),c);12 printf("max=%d\n"
阅读全文
摘要:先来看代码 1 // 求两个数中的大者.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 6 int main(int argc, char* argv[]) 7 { 8 int max(int x,int y); //函数的声明 9 int a,b,c;10 scanf("%d,%d",&a,&b);11 c=max(a,b);12 printf("max=%d\n",c);13 retu
阅读全文
摘要:既然别人破过了,那我就要和别人不一样。OD载入,运行,输入假码。点击“查看”----“窗口”找到check按钮,右键,“在classproc上设置消息断点”选择202确定,找到程序,点击check按钮。这时候停在系统领空。点击“查看”-“内存”,在text上F2下断,F9运行。这时候来到程序的消息处理函数位置,但不一定立刻就处理按钮消息。我们往下看找到好几个GetDlgItemXXX之类的函数,这就是处理按钮的了。1 00401218 . /0F87 6F010000 ja 0040138D2 0040121E . |6A 00 push 0 ...
阅读全文
摘要:【文章作者】: icefisher【作者邮箱】:181712814@qq.com【软件下载】:【软件名称】: echap518.exe(只是供学习的crackme)【加壳方式】: 里面直接有个unpacked.ExE,是脱过壳的见【原创】我也来谈谈消息断点二【保护方式】:【使用工具】: OllyICE【文章日期】: 20080813----------------------------------------------------------------------- 第一篇原创希望大家支持下,首先我想和我一样菜的好多新人,一定都看过了论坛上的那个ollydbg教程,其中的消息断点真是让人
阅读全文
摘要:1 ; int __cdecl main(int argc, const char **argv, const char **envp) 2 _main proc near 3 4 Buf= byte ptr -114h 5 var_110= dword ptr -110h 6 var_10C= dword ptr -10Ch 7 var_108= dword ptr -108h 8 Filename= byte ptr -104h 9 argc= dword ptr 410 argv= dword ptr 811 envp= dword ptr 0Ch12 13 sub e...
阅读全文
摘要:MSG结构体原型:1 typedef struct{2 HWND hwnd;3 UINT message;4 WPARAM wParam;5 LPARAM lParam; 6 DWORD time;7 POINT pt;8 } MSG, *PMSG;WM_NULL = $0000;WM_CREATE = $0001;应用程序创建一个窗口WM_DESTROY = $0002;一个窗口被销毁WM_MOVE = $0003;移动一个窗口WM_SIZE = $0005;改变一个窗口的大小WM_ACTI...
阅读全文