易语言实现反OD调试反复附加的代码

DLL命令表

.版本 2
.DLL命令 ZwQueryInformationProcess, 整数型, "NTDLL.DLL"
  .参数 ProcessHandle, 整数型
  .参数 ProcessInformationClass, 整数型
  .参数 ProcessInformation, PROCESS_BASIC_INFORMATION
  .参数 ProcessInformationLength, 整数型
  .参数 ReturnLength, 整数型, 传址
.DLL命令 OpenProcess, 整数型, "kernel32.dll", "OpenProcess"
  .参数 dwDesiredAccess, 整数型
  .参数 bInheritHandle, 整数型
  .参数 dwProcessId, 整数型
.DLL命令 CloseHandle, 整数型, , "CloseHandle"
  .参数 hwnd, 整数型
.DLL命令 GetProcessImageFileNameA, , "Psapi.dll", "GetProcessImageFileNameA"
  .参数 ProcessHandle, 整数型
  .参数 lpFilename, 文本型
  .参数 nSize, 整数型
.DLL命令 修改虚拟保护, 整数型, "kernel32", "VirtualProtect", , 修改虚拟保护
  .参数 lpAddress, 整数型
  .参数 dwSize, 整数型
  .参数 flNewProtect, 整数型
  .参数 lpflOldProtect, 整数型, 传址
.DLL命令 取函数地址, 整数型, "kernel32", "GetProcAddress", , 返回函数地址
  .参数 模块句柄, 整数型
  .参数 函数名, 文本型
.DLL命令 取模块句柄, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError
  .参数 模块名, 文本型, , 指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD;
.DLL命令 _枚举窗口, 逻辑型, , "EnumWindows"
  .参数 枚举过程, 子程序指针
  .参数 参数, 整数型
.DLL命令 _窗口是否可见, 逻辑型, , "IsWindowVisible", , 判断窗口是否可见 如窗口可见则返回TRUE(非零)
  .参数 窗口句柄, 整数型, , 要测试的那个窗口的句柄
.DLL命令 GetWindowText, 整数型, , "GetWindowTextA"
  .参数 句柄, 整数型, , 欲获取文字的那个窗口的句柄
  .参数 文本, 文本型, , 预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入
  .参数 文本长度, 整数型, , lp缓冲区的长度;
.DLL命令 GetClassName, 整数型, , "GetClassNameA"
  .参数 句柄, 整数型, , 欲获得类名的那个窗口的句柄
  .参数 文本, 文本型, , 随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符
  .参数 文本长度, 整数型, , 由lpClassName提供的缓冲区长度;
.DLL命令 _取窗口进程ID, 整数型, , "GetWindowThreadProcessId", , user32.dll获取与指定窗口关联在一起的一个线程和进程标识符
  .参数 窗口句柄, 整数型, , hwnd,指定窗口句柄
  .参数 进程标识符, 整数型, 传址, lpdwProcessId,指定一个变量,用于装载拥有那个窗口的一个进程的标识符

自定义数据类型

.版本 2
.数据类型 PROCESS_BASIC_INFORMATION
  .成员 ExitStatus, 整数型
  .成员 PebBaseAddress, 整数型
  .成员 AffinityMask, 整数型
  .成员 BasePriority, 整数型
  .成员 UniqueProcessId, 整数型
  .成员 InheritedFromUniqueProcessId, 整数型
.数据类型 窗口信息型, , 枚举窗口信息
  .成员 窗口句柄, 整数型, 传址
  .成员 进程ID, 整数型, 传址
  .成员 线程ID, 整数型, 传址
  .成员 窗口类名, 文本型
  .成员 窗口标题, 文本型

反OD调试反复附加的代码

.版本 2
.支持库 eAPI
.支持库 spec
.程序集 窗口程序集1
.程序集变量 addr, 整数型
.程序集变量 dadt, 字节集
.程序集变量 当前窗口信息, 窗口信息型, , "16"
.子程序 __启动窗口_创建完毕
反OD调试 ()
反OD附加 ()
.子程序 反OD调试, , , 取运行环境
.局部变量 Path, 文本型
.局部变量 hProcess, 整数型
.局部变量 Info, PROCESS_BASIC_INFORMATION
.局部变量 文件名, 文本型
ZwQueryInformationProcess (-1, 0, Info, 24, 0)
hProcess = OpenProcess (1040, 0, Info.InheritedFromUniqueProcessId)
Path = 取空白文本 (4096)
GetProcessImageFileNameA (hProcess, Path, 4096)
CloseHandle (hProcess)
文件名 = 取文本右边 (Path, 取文本长度 (Path) - 倒找文本 (Path, “\”, , 假))
反OD附加 ()
.如果真 (文件名 ≠ “explorer.exe”)
  信息框 (“非法运行环境”, #错误图标, )
  addr = 取函数地址 (取模块句柄 (“ntdll.dll”), “DbgBreakPoint”)
  终止进程 (取句柄2 ())
  结束自身 ()
.如果真结束
.子程序 反OD附加, , , hook
.局部变量 写入字节集, 字节集
.局部变量 t
.如果真 (addr = 0)
  addr = 取函数地址 (取模块句柄 (“ntdll.dll”), “DbgBreakPoint”)
  修改虚拟保护 (addr, 8, 64, 0)
.如果真结束
dadt = 指针到字节集 (addr, 8)
t = 取子程序真实地址 (&DbgBreakPoint) - addr - 5
写入字节集 = { 233 } + 到字节集 (t)
写到内存 (写入字节集, addr, 8)
.子程序 DbgBreakPoint, 整数型, , 被hook
.局部变量 写入字节集, 字节集
.局部变量 t
.局部变量 ret, 整数型
.如果真 (取字节集长度 (dadt) > 0)
  写到内存 (dadt, addr, )
.如果真结束
终止进程 (取句柄2 ())
结束自身 ()
t = 取子程序真实地址 (&DbgBreakPoint) - addr - 5
写入字节集 = { 233 } + 到字节集 (t)
写到内存 (写入字节集, addr, 8)
返回 (ret)
.子程序 取句柄2, 整数型
.局部变量 窗口列表, 窗口信息型, , "0"
.局部变量 i, 整数型
.计次循环首 (枚举窗口信息 (窗口列表), i)
  .如果真 (寻找文本 (窗口列表 [i].窗口标题, “[LCG”, , 假) ≠ -1) ' 取OD特征码,后续自己添加并加密
    返回 (窗口列表 [i].进程ID)
  .如果真结束
.计次循环尾 ()
返回 (-1)
.子程序 枚举窗口信息, 整数型
.参数 临时窗口信息, 窗口信息型, 数组, 枚举出来的窗口信息数组
_枚举窗口 (&窗口信息回调函数, 0)
临时窗口信息 = 当前窗口信息
清除数组 (当前窗口信息)
返回 (取数组成员数 (临时窗口信息))
.子程序 窗口信息回调函数
.参数 hwd, 整数型
.局部变量 窗口标题, 文本型
.局部变量 窗口类名, 文本型
.局部变量 局_进程ID, 整数型
.局部变量 线程ID, 整数型
.局部变量 临时窗口信息, 窗口信息型
.如果真 (_窗口是否可见 (hwd))
  窗口标题 = 取空白文本 (256)
  窗口类名 = 取空白文本 (256)
  GetWindowText (hwd, 窗口标题, 255)
  GetClassName (hwd, 窗口类名, 255)
  线程ID = _取窗口进程ID (hwd, 局_进程ID)
  临时窗口信息.进程ID = 局_进程ID
  临时窗口信息.线程ID = 线程ID
  临时窗口信息.窗口句柄 = hwd
  临时窗口信息.窗口类名 = 窗口类名
  临时窗口信息.窗口标题 = 窗口标题
  加入成员 (当前窗口信息, 临时窗口信息)
.如果真结束
.子程序 取子程序真实地址, 整数型
.参数 子程序指针, 子程序指针
置入代码 ({ 83, 81, 139, 69, 8, 64, 139, 8, 128, 249, 232, 117, 248, 139, 72, 1, 141, 92, 8, 5, 139, 11, 193, 225, 8, 129, 249, 0, 85, 139, 236, 141, 64, 4, 117, 225, 139, 195, 89, 91, 201, 194, 4, 0 })
返回 (0)
.子程序 结束自身, , , 取模块所在进程,然后杀掉
.局部变量 a, 整数型, , , ebp-4
.局部变量 b, 整数型, , , ebp-8
a = 申请内存 (512, 假) + 100 + 512 + 10000
b = addr + 10000
写到内存 (-277, a, )
置入代码 ({ 139, 69, 248, 45, 16, 39, 0, 0, 139, 125, 252, 51, 201, 51, 237, 51, 246, 51, 210, 51, 219, 129, 239, 16, 39, 0, 0, 139, 231, 131, 196, 100, 106, 0, 106, 255, 129, 239, 0, 2, 0, 0, 87, 51, 255, 106, 0, 137, 4, 36, 195 })

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 解决易语言调试的时候提示不能写出临时文件

    小编在测试易语言程序的时候,出现过"不能写出临时文件"这个错误,在网上找了很久,总结了解决办法. 易语言的运行权限不够.找到易语言的安装目录,右键"e.exe",点击"属性".就可以了 以上的方法很简单,大家测试以下,感谢大家对我们的支持.

  • 易语言制作调试助手

    DLL命令表 .版本 2 .DLL命令 窗口_FindWindowA, 整数型, "user32", "FindWindowA", , 句柄操作 .参数 lpClassName, 文本型 .参数 lpWindowName, 文本型 .DLL命令 窗口_SendMessage, 整数型, , "SendMessageA", , 句柄操作 .参数 HWND .参数 sc .参数 z1 .参数 z2, 文本型 .DLL命令 窗口_PostMessage

  • 易语言实现反OD调试反复附加的代码

    DLL命令表 .版本 2 .DLL命令 ZwQueryInformationProcess, 整数型, "NTDLL.DLL" .参数 ProcessHandle, 整数型 .参数 ProcessInformationClass, 整数型 .参数 ProcessInformation, PROCESS_BASIC_INFORMATION .参数 ProcessInformationLength, 整数型 .参数 ReturnLength, 整数型, 传址 .DLL命令 OpenProc

  • 易语言取反的实际操作

    易语言取反实例详解,这个是逻辑运算,希望能帮到大家. 1.易语言新建一个windows窗口 点击进入代码编辑区 2.我们输入取反() 3.展开这个函数 我们发现只有一个参数 这个参数就一个逻辑值 4.我们输入真 具体用法请看图 5.我们利用调试输出这个函数 我们输入调试输出 (取反 (真)) 6.结果为假 真的反面就是假嘛 以上六个步骤就是关于易语言取反的方法,感谢大家的阅读和对我们的支持.

  • 易语言超级列表框表项关键字搜索代码示例

    超级列表框表项关键字搜索示例 .版本 2 .支持库 iext .程序集 启动窗口程序集 .程序集变量 表项索引, 整数型 .子程序 _查找表项按钮_被单击 .局部变量 临时文本, 文本型 .局部变量 索引, 整数型 .局部变量 是否找到, 逻辑型 .局部变量 a, 整数型 .如果真 (输入框 ("请输入需要查找的内容", "查找表项", "易语言7", 临时文本, ) = 真) 是否找到 = 假 .计次循环首 (超级列表框.取表项数 (), a)

  • 易语言取反命令使用讲解

    取反命令 操作系统支持:Windows.Linux 所属类别:逻辑比较 如果参数值为真则返回假,如果参数值为假则返回真. 语法:  逻辑型  取反(被反转的逻辑值) 例程 说明: 逻辑变量为逻辑型,子菜单.选中  为逻辑型.在此例程中,逻辑变量保存 子菜单.选中 的反值(真的反值为假), 然后将逻辑变量保存的真或假,赋值给 子菜单.选中. 如果  用来判断逻辑变量保存的值,以显示不同的信息提示用户的操作. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定

  • 易语言修改指定网页为浏览器主页的代码

    监控浏览器进程,结束后用 运行(浏览器目录+" "+地址) 来实现主页修改 DLL命令表 .版本 2 .DLL命令 CoInitialize, 整数型, "Ole32.dll" .参数 pvReserved, 整数型 .DLL命令 CoUninitialize, , "Ole32.dll" .DLL命令 RegisterWindowMessageA, 整数型, , "RegisterWindowMessageA" .参数 lp

  • 易语言实现YY批量自动加好友的代码

    在做yy爬虫的时候,发现yy这个地方没有使用webkit,还在使用ie内核,这样的话我们就可以对它内嵌的浏览器做些什么了. 信息挺好爬的,顺便分析了一下点加好友,加群和关注这几个按钮,发现到最后都是直接与客户端的setCommand方法通信的,我没有办法直接调用它客户端的函数. 使用jquery触发click是一个比较另类的方法,以前觉得别人搞得还挺神奇的,就是没往这方面想. 哦对了,它底层调用的是window.external.setCommand('addFriend',uid)方法,有兴趣

  • 易语言调用JS制作统计文本字数的代码

    调用统计字数js此功能由精易网页调试助手生成代码,配合精易模块使用. 常量数据表 .版本 2 .常量 字数统计js, "<文本长度: 269>" 统计文本字数的代码 .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 文本_字数统计, 整数型, 公开, 用word方式计算正文字数,返回文本字数,汉字算一个,单词算一个,换行符和空格不算. .参数 文本, 文本型, , 需要统计的文本 .局部变量 c, 整数型 .局部变量 n, 整数型 .局部变量 z,

  • 易语言实现QQ空间留言批量删除的代码

    全局变量表 .版本 2 .全局变量 Uin_全, 文本型 .全局变量 Cookie_全, 文本型 QQ快捷启动的代码 .版本 2 .支持库 HtmlView .支持库 iext .程序集 窗口程序集_快速 .子程序 _超文本浏览框1_跳转完毕 .局部变量 返回文本, 文本型 .局部变量 文本分割, 文本型, , "0" .局部变量 二次分割, 文本型, , "0" .局部变量 i, 整数型 .局部变量 s, 整数型 .局部变量 Cookie, 文本型 .局部变量 U

  • 易语言调用接口查看QQ各项资料的代码

    DLL命令表 .版本 2 .DLL命令 ShellExecuteA, 整数型, "shell32.dll", "ShellExecuteA", , 查找与指定文件关联在一起的程序的文件名,并执行相关操作,成功则返一个大于31的值. .参数 hwnd, 整数型, , 用来指定被执行文件显示的窗口所属的父窗口句柄,可以为NULL .参数 lpOperation, 文本型, , 指向一个表示执行方式的字符串 .参数 lpFile, 文本型, , 用来指定文件名,文件名既可

  • 易语言解析获得无水印下载地址的代码

    此功能需要加载精易模块5.6 常量数据表 .版本 2 .常量 head, "<文本长度: 52>", , 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64 取抖音无水印链接代码 .版本 2 .程序集 窗口程序集_启动窗口 .子程序 _解析按钮_被单击 无水印地址编辑框.内容 = 获取抖音链接 (原地址编辑框.内容) .子程序 获取抖音链接, 文本型, , 返回无水印链接 .参数 分享链接, 文本型, , 分享链接地址

随机推荐