|
|
|
[求助]这个壳怎么脱啊,看了N多教程都不行!
一来就上猛壳…这样不利于发展阿…找个aspack....用5种以上的办法脱… 有更多时间,仔细看看aspack每步汇编代码的意思…比什么都不明白,确脱个猛壳来的实在 |
|
[讨论]本人闭关修炼多时,今日出关,自己写个CrackME,求破解(我的第1个CM)
凑个热闹,春哥都来了。那我还是当围观群众好了。 |
|
咳咳...问下什么是断点
2.1.5 断点 常用的断点有int3断点,硬件断点,内存断点等。 1. int3断点 当执行,一个int3断点时候,其实是调试器, 将当前的指令替换成了CC(隐藏的),也就是int3断点,由于机器码是CC所以也称CC指令。在一个程序中,可以设置很多断点。 但是现在的程序都会对CC进行若干检测,Anti Debug。 2. 硬件断点 硬件断点和DRx调试寄存器有关。在Intel CPU体系架构手册。 DRx调试器共有八个,从DR0~DR7 DR0~DR3:调试地址寄存器,保存需要监视的地址,也即硬件断点。 DR4~DR5:保留,并未公开功能。 DR6:调试寄存器组状态寄存器。 DR7:调试寄存器组状态寄存器。 硬件断点是使用4个调试寄存器(DR0,DR1,DR2,DR3)来设定地址,做最多可以设定4个硬件断点。 硬件断点速度快,而且可以避免int3那种检测,缺点就是只能设置4个。 PS:使用完硬件断点必须删除,不然会驻留在程序中,使得后续的工作受到影响。 3. 内存断点 可以通过OD的内存窗口(Alt+M),在某个段上设定,内存断点。 4. 消息断点 Windows本身是消息驱动的,消息断点使得当前某个特定窗口函数接收到某个特定消息时程序中断。 Windows通过句柄来判断某个窗口发生了操作。 可以看到check那个句柄,可以在这句上设置消息断点。 具体的消息类型,选择WM_LBUTTONUP,位置为202。 这个是老大书里面的,我给你打字上屏了,希望有用。 《加密与解密》(第三版) |
|
|
|
|
|
[原创]借尸还魂--把程序自己改成注册机
呵呵,挺搞的,加油,再来一个这样的例子。 |
|
|
|
[求助]谁能引导我破解入门?
LZ,我真没看你的答案。 工具OD. F3载入->右键->查找->所有参考文本字串->直接看到了。 push 00416620 asc "luckbug" push 00416614 asc "330227637" 004027F2 push 00416620 ; ASCII "luckbug" 004027F7 lea ecx, dword ptr [ebp-14] 004027FA call <jmp.&MFC42D.#487> 004027FF mov dword ptr [ebp-4], 0 00402806 push 00416614 ; ASCII "330227637" 我也是初学,呵呵,也晚了。就这样吧。 |
|
[求助]一个程序通过逆向工程后,可以直接修改其功能吗
#include <windows.h> WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd ) { MessageBox(NULL,"no virus","ERROR",MB_OK); SwapMouseButton(1); ExitProcess(NULL); } 比如这段简单的代码,只有三个函数,楼主可以查一下MSDN,就知道各个函数的用法了。 00401000 push 0 ; /Style = MB_OK|MB_APPLMODAL 00401002 push 0040603C ; |Title = "ERROR" 00401007 push 00406030 ; |Text = "no virus" 0040100C push 0 ; |hOwner = NULL 0040100E call dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA 00401014 push 1 ; /Swap = TRUE 00401016 call dword ptr [<&USER32.SwapMouseBut>; \SwapMouseButton 0040101C push 0 ; /ExitCode = 0 0040101E call dword ptr [<&KERNEL32.ExitProces> ; \ExitProcess 这个就是OD的反汇编代码(逆向,可没有这么简单,只为举例,所以截取了部分)。 SwapMouseButton(1); 就说这个函数个功能,是交换鼠标左右键,LZ可以在VC6下编译试验一下。 这是个布尔型的函数,所以,只要将1(T),换成0(F),就可以达到换回鼠标左右键的功能。 不知道我说的,清楚不。 在说一个吧。还有一个最简单的MessageBox函数。 有4个参数,第一个我就不说了。 现在我代码中的参数,显示出来的对话框,标题ERROR,内容no virus,显示方式只有一个选项的OK按钮。 现在你想修改,显示的模式。 就说一下修改标题好了。 00401002 push 0040603C ; |Title = "ERROR" 在内存的0040603C处,存放了ERROR的ASC码,我将这里面的ASC码修改成5个 41,之后保存文件。在测试,发现标题换掉了。成为AAAAA。 还有最后一个参数, 额,说起来不是很好说。 #define MB_OK 0x00000000L #define MB_OKCANCEL 0x00000001L #define MB_ABORTRETRYIGNORE 0x00000002L #define MB_YESNOCANCEL 0x00000003L #define MB_YESNO 0x00000004L #define MB_RETRYCANCEL 0x00000005L 看着个吧,希望你能理解。 00401000 push 0 ; /Style = MB_OK 这句,不是PUSH 0, 你修改成 push 4h。 保存后会发现很惊奇的事情。呵呵。 好了,一个很简单的东西基本完成了。对于GUI界面的,还有更好玩的。 希望LZ能满意。 我估计你运行上述程序,会使你的鼠标左右键连续切换,有点小崩溃的。 |
|
[求助][求助]汇编的Helloworld程序
楼主,我很无奈的。因为我只会这个,呵呵。 不过可以达到效果。 code segment assume cs:code start: mov dl,48h ;H mov ah, 02h int 21h mov dl,65h ;e mov ah, 02h int 21h mov dl,6ch ;l mov ah, 02h int 21h mov dl,6ch ;l mov ah, 02h int 21h mov dl,6fh ;o mov ah, 02h int 21h mov dl,20h ;space mov ah, 02h int 21h mov dl,57h ;W mov ah, 02h int 21h mov dl,6fh ;o mov ah, 02h int 21h mov dl,72h ;r mov ah, 02h int 21h mov dl,6ch ;l mov ah, 02h int 21h mov dl,64h ;d mov ah, 02h int 21h mov ah,4CH int 21h code ends end start |
|
|
|
|
|
[原创]通过IDA分析一个病毒
额,我也是才看这些内容的,第一次写文。生涩得很,谅解一下。就是用IDA静态的看了一下,程序中的API。之后查询了MSDN,在虚拟机里调试,看了一下流程,联系之前的函数。大概就写了这么个。呵呵。 还是希望,能对新手谅解。 |
|
[注意]邀请码发放公布(10.7~10.20)
呵呵,大大,我来领邀请码了,谢谢了。钱了这么久水,终于可以出来了。呵呵。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值